Ho controllato di nuovo questo, ed ecco alcune informazioni aggiornate :
È possibile sopprimere la GUI MSI e impostare una GUI esterna implementata da una terza parte. Questa GUI esterna è in grado di ricevere messaggi da msiexec.exe mentre esegue l'installazione. Questo è principalmente per implementare una barra di avanzamento personalizzata , ma sembra che tu possa anche intercettare la maggior parte degli altri messaggi di errore e messaggi di stato: funzione MsiSetExternalUI .
Il parametro interessante è dwMessageFilter . Impostando questo è possibile, ad esempio, ricevere solo i messaggi di errore che si verificano durante l'installazione - o così sembrerebbe. Suppongo che questo possa essere sufficiente per la maggior parte degli scopi.
INSTALLUI_HANDLER MsiSetExternalUI(
_In_ INSTALLUI_HANDLER puiHandler,
_In_ DWORD dwMessageFilter,
_In_ LPVOID pvContext
);
Purtroppo al momento non ho un codice di esempio per questo. Lo proverò più tardi, quando avrò configurato correttamente il mio sistema. La funzione MsiEnableLog è una chiamata di funzione correlata che abilita la registrazione su file. Aggiornamento: ecco come appare un esempio di SDK funzionante .
A livello di interfaccia della riga di comando , è anche possibile impostare la registrazione per scaricare immediatamente il suo buffer nel file aggiungendo il ! parametro:
msiexec.exe /I "IsWiX.msi" /QN /L*V! "C:\msilog.log"
Ciò significa che il file di registro viene scritto continuamente, quindi nessun buffer di registro viene perso in caso di arresto anomalo di msiexec.exe. Il costo è un installatore significativamente più lento a causa dell'overhead IO.