Wie automatisiere ich eine MSI-Installation?


11

Ich habe ungefähr 20 Anwendungen, die in einer bestimmten Reihenfolge ausgeführt werden müssen. Ich möchte sie als Skript ausführen, damit ich dies aus der Ferne tun kann.

Jede der Anwendungen verfügt über eine Setup.exe und eine MSI.

Ich hatte gehofft, nur ein einfaches Skript zu haben, das die MSIs mit einer Antwortdatei aufrief, aber es ist Jahre her, seit ich es getan habe. Ich weiß jedoch nicht mehr, wie ich eine Antwortdatei erstellen soll.

Ist das ein guter Weg, um es zu tun? Oder gäbe es einen einfacheren Weg?

Antworten:


17

Sprechen Sie über eine geladene Frage ...

Ignorieren Sie zunächst die Datei setup.exe. Wahrscheinlich ruft es nur den MSI an. Oder manchmal extrahieren sie eine Menge Dinge, DANN rufen sie die MSI auf. Normalerweise können Sie Ihr temporäres Verzeichnis beobachten, wenn Sie Setup ausführen und eine Vorstellung davon bekommen, was es tut.

Ich habe immer geschummelt und einen Probelauf von install ( msiexec /i path/to-install.msi /l*v /qn) mit hochgekurbelter Protokollierung durchgeführt, dann das Protokoll durchgesehen und die Eigenschaften ausgewählt, die ich festlegen wollte, und sie über die Befehlszeile festgelegt. Antwortdateien haben nie funktioniert oder es hat sich nicht gelohnt, den Prozess zu durchlaufen, um sie zu erstellen.

Dann fand ich InstEdit und benutzte es als Schiffsladung. Hiermit können Sie die Eigenschaften einer MSI bearbeiten und eine Transformation generieren, die Sie dann als Argument in Ihr Skript einfügen können: msiexec /i path/to/installer.msi /t path/to/transform.mst Ich empfehle, sie zuerst zu testen. Es gibt eine kostenlose Version, die so gut wie alles erledigt.

Sie können sich auch hier alle Schalter ansehen msiexec.


+1, aber leider scheinen die Schalter nicht mit allen MSIs zu funktionieren. Ich habe nicht nach dem Grund gesucht, aber bei einigen ist das definitiv der Fall.
Ciaran

Hängt davon ab, wie das MSI erstellt wurde. Es gibt einige Eigenschaften, die Sie zum Ignorieren bestimmter Parameter festlegen können (IIRC). Normalerweise funktionierte es immer, Instedit zu verwenden und eine Transformation zu erstellen. Die einzigen Fehler, auf die ich stieß, waren normalerweise menschliche Fehler.
Peelman

1
+1 für InstEdit
user66001

1
Die Log-Methode hat bei mir funktioniert. Es ist wichtig zu beachten, dass die Eigenschaften als aufgeführt werdenProperty(S) : PROPERTY_NAME...
Drew Chapin

5

Msiexec ist das Werkzeug, das Sie brauchen. Es hat einen -q-Parameter, mit dem es "leise" installieren kann:

/ qn: Zeigt keine Benutzeroberfläche an.

/ qb: Zeigt eine grundlegende Benutzeroberfläche an.

/ qr: Zeigt eine reduzierte Benutzeroberfläche mit einem modalen Dialogfeld an, das am Ende der Installation angezeigt wird.

/ qf: Zeigt die vollständige Benutzeroberfläche mit einem modalen Dialogfeld an, das am Ende angezeigt wird.

/ qn +: Zeigt keine Benutzeroberfläche an, mit Ausnahme eines modalen Dialogfelds, das am Ende angezeigt wird.

/ qb +: Zeigt eine grundlegende Benutzeroberfläche mit einem modalen Dialogfeld am Ende an.

/ qb-: Zeigt eine grundlegende Benutzeroberfläche ohne modale Dialogfelder an.

Sie können auch benannte Optionen (oder "Eigenschaften") am Ende der Befehlszeile angeben. Welche Eigenschaften unterstützt werden, hängt vom Paket ab. Zum Beispiel dieser Befehl:

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

... installieren Sie ActiveState Perl und weisen das MSI-Paket an, Perl.exe zu Ihrem PATH hinzuzufügen und .pl-Dateien damit zu verknüpfen. ( Quelle )


1
Beachten Sie, dass ein Entwickler die Option / q im MSI-Installationsprogramm deaktivieren kann.
Joel Coehoorn

1

Die meisten Anwendungen können unbeaufsichtigt installiert und daher mit Skripten versehen werden. Jede Setup.exe kann über eine Reihe potenzieller Switches verfügen. Daher ist es ein Muss, den Anbieter anzurufen oder die Website zu durchsuchen. Manchmal können Sie die Informationen abrufen, indem Sie das Setup mit der Option / ?, / h / help starten. MSI-Dateien können auch über eine beliebige Anzahl von Schaltern verfügen. In diesem Artikel finden Sie jedoch eine Liste der MSI-Befehlszeilenparameter .

Während der Skripterstellung wird möglicherweise eine App ausgeführt, die mit setup.exe installiert wird und anschließend eine andere Datei wie eine MSI startet. Ein Beispiel war MS Office XP. In diesem Fall könnte Ihr Skript annehmen, dass die von Ihnen gestartete Datei vollständig ist, und das nächste Setup starten, das fehlschlägt und dazu führt, dass alles nach Süden geht. Um dies zu umgehen, versuchen Sie, die Setup-Datei zu umgehen, und gehen Sie direkt zum eigentlichen Installationsprogramm (möglicherweise ein MSI) mit Befehlszeilenoptionen. Wenn dies nicht möglich ist, müssen Sie möglicherweise eine Art Timer-Pause erstellen. Früher habe ich ein kleines Hilfsprogramm namens wait.exe verwendet, das ich im Internet gefunden habe, aber es gibt eine Million Möglichkeiten, dies zu tun. Der Schlüssel für die Skripterstellung besteht jedoch darin, zu erkennen, dass eine Anwendung ordnungsgemäß installiert wurde, damit die nächste Installation beginnen kann.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.