В рамках конвейера непрерывной доставки я бы хотел установить msi на данную машину. msiexec plus psexec делает это отлично, но кажется, что msiexec может только войти в файл, и мне нужно, чтобы войти в stdout / stderr.
Прямо сейчас, чтобы вернуть вывод в наше программное обеспечение CI, мне нужно добавить второй шаг, чтобы отобразить содержимое журнала, что кажется немного бессмысленным.
Кто-нибудь сталкивался с этой проблемой раньше (и преодолел ее?)
Заранее спасибо за любую помощь здесь.
отметка
Ответы:
Я проверил это снова, и вот некоторая обновленная информация :
Можно отключить графический интерфейс MSI и установить внешний графический интерфейс, реализованный третьей стороной. Этот внешний графический интерфейс может получать сообщения от msiexec.exe во время установки. Это в основном для реализации пользовательского индикатора выполнения , но, похоже, вы также можете перехватывать большинство других сообщений об ошибках и сообщений о состоянии: функция MsiSetExternalUI .
Интересным параметром является dwMessageFilter . Установив этот параметр, вы можете, например, получать только сообщения об ошибках, которые появляются во время установки - или так может показаться. Я полагаю, этого может быть достаточно для большинства целей.
К сожалению, на данный момент у меня нет примера кода для этого. Я проверю это позже, когда правильно настрою свою систему. Функция MsiEnableLog - это вызов связанной функции, который включит запись в файл. Обновление: вот что выглядит как рабочий пример SDK .
На уровне интерфейса командной строки вы также можете настроить ведение журнала, чтобы немедленно очистить его буфер в файл, добавив ! параметр:
Это означает, что файл журнала записывается непрерывно, поэтому при сбое msiexec.exe буфер журнала не теряется. Стоимость установки значительно медленнее из-за накладных расходов ввода-вывода.
источник
MsiExec
может войти только в файл, поэтому вам придется продолжать отображать содержимое этого файла после завершения установки.источник
Я бы предпочел кешировать файл журнала MSI в локальной системе постоянно в общем месте для каждой установки, а затем просто зарегистрировать код завершения всей установки. Если установка сообщает об успехе, файл журнала довольно неинтересен? Просто больше "шума"?
Кроме этого, есть несколько систем доставки программного обеспечения, которые собирают информацию журнала для установки MSI и хранят ее централизованно. Одним из примеров является SCCM (Microsoft переименован в Сервер управления системами - SMS).
Настройка ведения журнала для всех файлов MSI, см. Раздел «Глобально для всех настроек на компьютере»: http://www.installsite.org/pages/en/msifaq/a/1022.htm.
источник
Я использую следующий скрипт powershell. Он по-прежнему требует записи журнала в файл, но также записывает содержимое в реальном времени на стандартный вывод:
источник