J'ai vérifié à nouveau et voici quelques informations mises à jour :
Il est possible de supprimer l'interface graphique MSI et de définir une interface graphique externe implémentée par un tiers. Cette interface graphique externe peut recevoir des messages de msiexec.exe lors de l'installation. Il s'agit principalement d'implémenter une barre de progression personnalisée , mais il semble que vous pouvez également intercepter la plupart des autres messages d'erreur et messages d'état: fonction MsiSetExternalUI .
Le paramètre intéressant est le dwMessageFilter . En le définissant, vous pouvez, par exemple, recevoir uniquement les messages d'erreur qui se produisent lors de l'installation - ou du moins il semblerait. Je suppose que cela peut suffire dans la plupart des cas.
INSTALLUI_HANDLER MsiSetExternalUI(
_In_ INSTALLUI_HANDLER puiHandler,
_In_ DWORD dwMessageFilter,
_In_ LPVOID pvContext
);
Malheureusement, je n'ai pas d'exemple de code pour le moment. Je testerai cela plus tard, une fois que mon système sera correctement configuré. La fonction MsiEnableLog est un appel de fonction connexe qui permettra la journalisation dans un fichier. Mise à jour: voici à quoi ressemble un exemple de SDK fonctionnel .
Au niveau de l'interface de ligne de commande , vous pouvez également définir la journalisation pour vider immédiatement son tampon dans un fichier en ajoutant le ! paramètre:
msiexec.exe /I "IsWiX.msi" /QN /L*V! "C:\msilog.log"
Cela signifie que le fichier journal est écrit en continu afin qu'aucun tampon de journal ne soit perdu si msiexec.exe se bloque. Le coût est un installateur considérablement plus lent en raison des frais généraux d'E / S.