Revisé esto nuevamente, y aquí hay información actualizada :
Es posible suprimir la GUI de MSI y establecer 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 el 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. Probaré esto más tarde, cuando configure mi sistema 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 de SDK en funcionamiento .
En el nivel de interfaz de línea de comando , 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 el búfer de registro si msiexec.exe falla. El costo es un instalador significativamente más lento debido a la sobrecarga de E / S.