Search code examples
wixdtf

Too Many Events Using DTF InstallLogModes


I'm currently logging "everything" using the following flags:

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);

This has the effect of writing an enormous number of events to the log file.

For example, I'm seeing thousands of these:

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

How do I disable those extremely verbose messages in the log? I need to keep the Progress events.


Solution

  • If you don't want them, don't set the bts in the API call. Just set progress. However, you do need to get hold of the error messages and warnings to display them.

    However....what's your goal here? You don't need to re-invent the logging that you can get in other ways. The purpose of using that external UI call API is that you are now in charge of all the UI for the install. This isn't really about logging, it's about you being responsible for the UI, and a standard install will typically show all those messages in one form or another. For example, along with progress messages you get action messages that says what's going on (file name being copied, etc). If that is an actual product that you are installing, then you really need to show error messages, files in use dialogs, warnings, or you're simply hiding everything that goes on.

    Link to underlying AP docs: https://msdn.microsoft.com/en-us/library/aa370573(v=vs.85).aspx