Comment automatiser une installation MSI?


11

J'ai environ 20 applications qui doivent être exécutées dans un ordre spécifique. Je veux les scénariser pour pouvoir le faire à distance.

Chacune des applications possède un Setup.exe et un MSI.

J'espérais juste avoir un script simple qui appelait les MSI avec un fichier de réponses, mais cela fait des années que je ne l'ai pas fait. Cependant, je ne me souviens pas comment créer un fichier de réponses.

Est-ce une bonne façon de procéder? Ou y aurait-il un moyen plus simple?

Réponses:


17

Parlez d'une question chargée ...

Pour commencer, ignorez le fichier setup.exe. Il y a de fortes chances qu'il n'appelle que le MSI. Ou parfois, ils extraient un tas de choses PUIS appelez le MSI, vous pouvez généralement regarder votre répertoire temporaire lorsque vous exécutez le programme d'installation et avoir une idée de ce qu'il fait.

J'ai toujours triché et fait un essai à sec de l'installation ( msiexec /i path/to-install.msi /l*v /qn) avec la journalisation lancée, puis j'ai parcouru le journal et choisi les propriétés que je voulais définir et les définir via la ligne de commande. Les fichiers de réponses n'ont jamais fonctionné ou ne valaient pas la peine de passer par le processus pour les créer.

Ensuite, j'ai trouvé InstEdit et l' ai utilisé comme bateau. Il vous permettra de modifier les propriétés d'un MSI et de générer une transformation que vous pourrez ensuite passer comme argument dans votre script: msiexec /i path/to/installer.msi /t path/to/transform.mst je recommande de lui donner un premier coup, il y a une version gratuite qui fait à peu près tout.

Vous pouvez également consulter ici tous les commutateurs msiexec.


+1 mais malheureusement, les commutateurs ne semblent pas fonctionner avec tous les MSI. Je n'ai pas cherché à savoir pourquoi, mais c'est certainement le cas pour certains.
Ciaran

Dépend de la façon dont le MSI a été créé. Il existe certaines propriétés que vous pouvez définir pour ignorer certains paramètres, IIRC. Généralement, l'utilisation d'Instedit et la construction d'une transformation fonctionnaient toujours, les seules erreurs que j'ai rencontrées étaient généralement humaines.
peelman

1
+1 pour InstEdit
user66001

1
La méthode du journal a fonctionné pour moi. Il est important de noter cependant que les propriétés seront répertoriées commeProperty(S) : PROPERTY_NAME...
Drew Chapin

5

Msiexec est l'outil dont vous avez besoin. Il a un paramètre -q pour lui permettre d'installer des trucs "silencieux":

/ qn: n'affiche aucune interface utilisateur.

/ qb: affiche une interface utilisateur de base.

/ qr: affiche une interface utilisateur réduite avec une boîte de dialogue modale affichée à la fin de l'installation.

/ qf: affiche l'interface utilisateur complète avec une boîte de dialogue modale affichée à la fin.

/ qn +: n'affiche aucune interface utilisateur, à l'exception d'une boîte de dialogue modale affichée à la fin.

/ qb +: affiche une interface utilisateur de base avec une boîte de dialogue modale affichée à la fin.

/ qb-: affiche une interface utilisateur de base sans boîte de dialogue modale.

Vous pouvez également fournir des options nommées (ou "propriétés") à la fin de la ligne de commande; les propriétés prises en charge dépendent du package. Par exemple, cette commande:

msiexec /qb /l* perl-log.txt /i ActivePerl.msi PERL_PATH=Yes PERL_EXT=Yes

... est la façon dont vous installez ActiveState Perl, en demandant au package MSI d'ajouter Perl.exe à votre CHEMIN et d'y associer des fichiers .pl. ( source )


1
Notez qu'un développeur peut choisir de désactiver l'option / q dans son programme d'installation msi.
Joel Coehoorn

2

La plupart des applications peuvent être installées en mode silencieux et donc scriptées. Chaque Setup.exe peut avoir un certain nombre de commutateurs potentiels, il est donc impératif d'appeler le fournisseur ou de rechercher sur son site Web. Parfois, vous pouvez obtenir les informations en démarrant la configuration avec un commutateur / ?, / h / help. Les fichiers MSI peuvent également avoir n'importe quel nombre de commutateurs, mais cet article Paramètres de ligne de commande MSI fournit une liste.

Lorsque vous créez un script pour le processus, vous pouvez exécuter une application qui s'installe avec setup.exe, puis lance un autre fichier comme un MSI. Un exemple était MS Office XP. Lorsque cela se produit, votre script peut penser que le fichier que vous avez lancé est terminé et démarrer la prochaine configuration qui échoue, ce qui fait que tout va vers le sud. Pour contourner ce problème, essayez de contourner le fichier d'installation et accédez directement au programme d'installation (potentiellement un MSI) avec des options de ligne de commande. Si ce n'est pas possible, vous devrez peut-être créer une sorte de pause de la minuterie. J'avais l'habitude d'utiliser un petit utilitaire appelé wait.exe que j'ai trouvé sur Internet mais il y a un million de façons de le faire. La clé du script est cependant de pouvoir identifier qu'une application est correctement installée afin que la prochaine installation puisse commencer.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.