Dans le cadre d'un pipeline de livraison continue, j'aimerais installer un msi sur une machine donnée. msiexec plus psexec le fait parfaitement, mais il semble que msiexec ne peut se connecter qu'à un fichier et j'en ai besoin pour me connecter à stdout / stderr.
À l'heure actuelle, pour récupérer la sortie dans notre logiciel CI, je vais devoir ajouter une deuxième étape pour faire écho au contenu du journal, ce qui semble un peu inutile.
Est-ce que quelqu'un a déjà fait face à ce problème (et l'a surmonté?)
Merci d'avance pour toute aide ici.
marque
Réponses:
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.
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:
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.
la source
MsiExec
peut uniquement se connecter à un fichier, vous devrez donc répéter le contenu de ce fichier après la fin du programme d'installation.la source
Je préfère mettre en cache le fichier journal MSI sur le système local en permanence dans un emplacement commun pour chaque installation, puis enregistrer simplement le code de sortie de l'ensemble de l'installation. Si la configuration signale un succès, le fichier journal est assez inintéressant? Juste plus de "bruit"?
En dehors de cela, il existe plusieurs systèmes de livraison de logiciels qui captureront les informations du journal pour une installation MSI et les stocker de manière centralisée. Un exemple est SCCM (Microsofts renommé Systems Management Server - SMS).
Configuration de la journalisation pour tous les fichiers MSI, voir la section "Globalement pour toutes les configurations sur une machine": http://www.installsite.org/pages/en/msifaq/a/1022.htm
la source
J'utilise le script powershell suivant. Il nécessite toujours d'écrire le journal dans un fichier, mais il écrit également le contenu en direct sur stdout:
la source