Я сейчас лесозаготовительных «все», используя следующие флаги:Слишком много событий с помощью DTF InstallLogModes
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
Как отключить эти чрезвычайно подробные сообщения в журнале? Мне нужно сохранить события Progress.
Hi Phil. Спасибо, что ответили на мое сообщение в списке рассылки. Я реализовал безмолвный обработчик, который отправляет сообщения о ходе выполнения по дуплексному каналу WCF на другой компьютер. Это приложение имеет графический интерфейс, который отображает ход установки. Единственные сообщения, которые мне нужно отправить обратно по этому каналу, - это Progress и код выхода (поэтому я могу ловить ошибки на удаленном конце). Тем не менее, я все еще хочу файл журнала MSI на локальном компьютере. Все вышеизложенное работает просто отлично, но это супер болтливый, медленный и многословный. С удовольствием разрабатываем оффлайн. https://gist.github.com/mrichman/a01acdfe98a56ff44b42 –
Рассматривали ли вы просто вызов msiexec/I foo.msi/l * v! install.log, а затем разбор журнала, когда строки записываются на него? –
Если я разбираю текстовый файл, я не получаю прогресс% как десятичные значения. Я отправляю эти значения обратно по дуплексному каналу в мое клиентское приложение, чтобы привязываться к индикатору выполнения. Все это хорошо для меня сейчас, поэтому я не хотел изобретать велосипед. Я также использую разные режимы журнала для 'SetExternalUI' и' EnableLog'. 'SetExternalUI' получает' Progress | FatalExit' и 'EnableLog' получают' Verbose'. На данный момент все приемлемо. Благодаря! –