我目前正在记录"一切"使用以下标志:
const DTF.InstallLogModes logEverything = DTF.InstallLogModes.FatalExit |
DTF.InstallLogModes.Error |
DTF.InstallLogModes.Warning |
DTF.InstallLogModes.User |
DTF.InstallLogModes.Info |
DTF.InstallLogModes.ResolveSource |
DTF.InstallLogModes.OutOfDiskSpace |
DTF.InstallLogModes.ActionStart |
DTF.InstallLogModes.ActionData |
DTF.InstallLogModes.CommonData |
DTF.InstallLogModes.Progress |
DTF.InstallLogModes.Initialize |
DTF.InstallLogModes.Terminate |
DTF.InstallLogModes.ShowDialog;
DTF.Installer.SetInternalUI(DTF.InstallUIOptions.Silent);
var handler = new DTF.ExternalUIRecordHandler(ProcessMessage);
DTF.Installer.SetExternalUI(handler, logEverything);
DTF.Installer.EnableLog(logEverything, logPath, true, true);
DTF.Installer.InstallProduct(installerPath, commandLine);
这具有将大量事件写入日志文件的效果。
例如,我看到成千上万的这些:
MSI (s) (14:A0) [11:33:50:764]: Component: comp_27E5179987044690962CE98B3F95FD72; Installed: Local; Request: Null; Action: Null; Client State: Local
MSI (c) (4C:8C) [11:34:17:869]: Creating MSIHANDLE (592) of type 790531 for thread 8076
MSI (c) (4C:8C) [11:34:17:893]: Closing MSIHANDLE (592) of type 790531 for thread 8076
如何在日志中禁用这些极其详细的消息?我需要保持进度事件。
答案 0 :(得分:1)
如果您不想要它们,请不要在API调用中设置bts。只需设定进度。但是,您需要获取错误消息和警告以显示它们。
但是......你的目标是什么?您不需要重新发明可以通过其他方式获得的日志记录。使用该外部UI调用API的目的是您现在负责安装的所有UI。这并非真正关于日志记录,而是关于您对UI负责,标准安装通常会以一种或另一种形式显示所有这些消息。例如,与进度消息一起,您将获得操作消息,其中显示正在进行的操作(正在复制文件名等)。如果这是您正在安装的实际产品,那么您确实需要显示错误消息,正在使用的文件对话框,警告,或者您只是隐藏所有正在进行的操作。
链接到基础AP文档:https://msdn.microsoft.com/en-us/library/aa370573(v=vs.85).aspx