Ich habe dies erneut überprüft und hier einige aktualisierte Informationen :
Es ist möglich, die MSI-GUI zu unterdrücken und eine externe GUI festzulegen, die von einem Dritten implementiert wurde. Diese externe GUI kann während der Installation Nachrichten von msiexec.exe empfangen . Dies dient hauptsächlich zur Implementierung eines benutzerdefinierten Fortschrittsbalkens. Sie können jedoch anscheinend auch die meisten anderen Fehlermeldungen und Statusmeldungen abfangen: die MsiSetExternalUI-Funktion .
Der interessante Parameter ist der dwMessageFilter . Wenn Sie dies einstellen, können Sie beispielsweise nur die Fehlermeldungen erhalten, die während der Installation auftreten - oder so scheint es. Ich nehme an, das kann für die meisten Zwecke ausreichen.
INSTALLUI_HANDLER MsiSetExternalUI(
_In_ INSTALLUI_HANDLER puiHandler,
_In_ DWORD dwMessageFilter,
_In_ LPVOID pvContext
);
Leider habe ich momentan keinen Beispielcode dafür. Ich werde dies später testen, wenn ich mein System richtig eingerichtet habe. Die MsiEnableLog-Funktion ist ein verwandter Funktionsaufruf, der die Protokollierung in einer Datei ermöglicht. Update: Hier ist ein funktionierendes SDK-Beispiel .
Auf der Ebene der Befehlszeilenschnittstelle können Sie die Protokollierung auch so einstellen, dass der Puffer sofort in die Datei geleert wird, indem Sie das ! Parameter:
msiexec.exe /I "IsWiX.msi" /QN /L*V! "C:\msilog.log"
Dies bedeutet, dass die Protokolldatei kontinuierlich geschrieben wird, sodass bei einem Absturz von msiexec.exe kein Protokollpuffer verloren geht. Die Kosten sind aufgrund des E / A-Overheads erheblich langsamer.