logging – ¿Hay alguna forma de hacer que msiexec se haga eco en la salida estándar en lugar de iniciar sesión en un archivo?

Pregunta:

Como parte de una canalización de entrega continua, me gustaría instalar un msi en una máquina determinada. msiexec plus psexec hace esto perfectamente, pero parece que msiexec solo puede iniciar sesión en un archivo y lo necesito para iniciar sesión en stdout / stderr.

En este momento, para recuperar la salida en nuestro software de CI, tendré que agregar un segundo paso para hacer eco del contenido del registro, lo que parece un poco inútil.

¿Alguien ha enfrentado este problema antes (y lo ha superado?)

Gracias de antemano por cualquier ayuda aquí.

Marcos

Respuesta:

Verifiqué esto nuevamente, y aquí hay información actualizada :

Es posible suprimir la GUI de MSI y configurar una GUI externa implementada por un tercero. Esta GUI externa puede recibir mensajes de msiexec.exe mientras realiza la instalación. Esto es principalmente para implementar una barra de progreso personalizada , pero parece que también puede interceptar la mayoría de los otros mensajes de error y mensajes de estado: función MsiSetExternalUI .

El parámetro interesante es dwMessageFilter . Al configurar esto, puede, por ejemplo, recibir solo los mensajes de error que ocurren durante la instalación, o eso parece. Supongo que esto puede ser suficiente para la mayoría de los propósitos.

INSTALLUI_HANDLER MsiSetExternalUI(
  _In_  INSTALLUI_HANDLER puiHandler,
  _In_  DWORD dwMessageFilter,
  _In_  LPVOID pvContext
);

Lamentablemente, no tengo un código de muestra para esto en este momento. Lo probaré más tarde, cuando mi sistema esté configurado correctamente. La función MsiEnableLog es una llamada de función relacionada que permitirá el registro en el archivo. Actualización: esto es lo que parece un ejemplo funcional de SDK .

En el nivel de la interfaz de línea de comandos , también puede configurar el registro para vaciar su búfer inmediatamente al archivo agregando el ! parámetro:

msiexec.exe /I "IsWiX.msi" /QN /L*V! "C:\msilog.log" 

Esto significa que el archivo de registro se escribe continuamente, por lo que no se pierde ningún búfer de registro si msiexec.exe falla. El costo es un instalador significativamente más lento debido a la sobrecarga de E / S.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım