Eu verifiquei isso novamente, e aqui estão algumas informações atualizadas :
É possível suprimir a GUI da MSI e definir uma GUI externa implementada por terceiros. Essa GUI externa pode receber mensagens do msiexec.exe enquanto executa a instalação. Isso é principalmente para implementar uma barra de progresso personalizada , mas parece que você também pode interceptar a maioria das outras mensagens de erro e status: Função MsiSetExternalUI .
O parâmetro interessante é o dwMessageFilter . Ao definir isso, você pode, por exemplo, receber apenas as mensagens de erro que ocorrem durante a instalação - ou assim parece. Suponho que isso possa ser suficiente para a maioria dos propósitos.
INSTALLUI_HANDLER MsiSetExternalUI(
_In_ INSTALLUI_HANDLER puiHandler,
_In_ DWORD dwMessageFilter,
_In_ LPVOID pvContext
);
Lamentavelmente, não tenho código de amostra para isso no momento. Vou testar isso mais tarde, quando eu configurar meu sistema corretamente. A função MsiEnableLog é uma chamada de função relacionada que permitirá o log do arquivo. Atualização: Aqui está o que parece um exemplo de SDK em funcionamento .
No nível da interface da linha de comandos , você também pode configurar o log para liberar seu buffer imediatamente para arquivar, adicionando o ! parâmetro:
msiexec.exe /I "IsWiX.msi" /QN /L*V! "C:\msilog.log"
Isso significa que o arquivo de log é gravado continuamente, para que nenhum buffer de log seja perdido se o msiexec.exe travar. O custo é de um instalador significativamente mais lento devido à sobrecarga de E / S.