2015-04-21 4 views
0

Я сейчас лесозаготовительных «все», используя следующие флаги:Слишком много событий с помощью 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.

ответ

1

Если вы не хотите их, не устанавливайте bts в вызове API. Просто установите прогресс. Однако вам нужно получить сообщения об ошибках и предупреждения для их отображения.

Однако .... Какова ваша цель здесь? Вам не нужно повторно изобретать журнал, который вы можете получить другими способами. Цель использования этого внешнего API интерфейса UI заключается в том, что теперь вы отвечаете за весь пользовательский интерфейс для установки. Речь идет не о регистрации, а о том, что вы отвечаете за пользовательский интерфейс, а стандартная установка обычно отображает все эти сообщения в той или иной форме. Например, наряду с сообщениями о ходе выполнения вы получаете сообщения о действиях, в которых говорится, что происходит (имя файла копируется и т. Д.). Если это фактический продукт, который вы устанавливаете, вам действительно нужно показывать сообщения об ошибках, файлы в диалоговом окне использования, предупреждения или просто скрывать все, что происходит.

Ссылка на базовые документы AP: https://msdn.microsoft.com/en-us/library/aa370573(v=vs.85).aspx

+0

Hi Phil. Спасибо, что ответили на мое сообщение в списке рассылки. Я реализовал безмолвный обработчик, который отправляет сообщения о ходе выполнения по дуплексному каналу WCF на другой компьютер. Это приложение имеет графический интерфейс, который отображает ход установки. Единственные сообщения, которые мне нужно отправить обратно по этому каналу, - это Progress и код выхода (поэтому я могу ловить ошибки на удаленном конце). Тем не менее, я все еще хочу файл журнала MSI на локальном компьютере. Все вышеизложенное работает просто отлично, но это супер болтливый, медленный и многословный. С удовольствием разрабатываем оффлайн. https://gist.github.com/mrichman/a01acdfe98a56ff44b42 –

+0

Рассматривали ли вы просто вызов msiexec/I foo.msi/l * v! install.log, а затем разбор журнала, когда строки записываются на него? –

+0

Если я разбираю текстовый файл, я не получаю прогресс% как десятичные значения. Я отправляю эти значения обратно по дуплексному каналу в мое клиентское приложение, чтобы привязываться к индикатору выполнения. Все это хорошо для меня сейчас, поэтому я не хотел изобретать велосипед. Я также использую разные режимы журнала для 'SetExternalUI' и' EnableLog'. 'SetExternalUI' получает' Progress | FatalExit' и 'EnableLog' получают' Verbose'. На данный момент все приемлемо. Благодаря! –

 Смежные вопросы

  • Нет связанных вопросов^_^