5 Nov
MSI Pakete sind grob umschrieben Installationsdateien wie .exe Installer. Sie haben jedoch den Vorteil, dass sie in einer Art Datenbank Daten aufnehmen können, die man ihnen zusteckt. So kann ich also in eine MSI Installationsdatei einer Software bereits den Produktkey integrieren und dieser wird dann während der Installation automatisch eingetragen.
MSI Dateien werden oft benutzt um Softwareinstallationen ohne Benutzerinteraktion zu installieren. Sie können dann auch versteckt ausgeführt werden, der Benutzer bekommt dann von der Installation gar nichts mit.
Möchte man Software über Gruppenrichtlinien installieren, brauch man diese MSI Dateien (alternativ auch MST oder andere Formate, die aber ähnlich sind).
Man sollte als Administrator also wissen, wie man MSI Installationsdateien erstellt. Viele Programme bieten im Netz auch MSI Dateien parallel zu den normalen .exe Installern an, wie zum Beispiel Frontmotion Firefox, der MSI Pendant zum Firefox. Große Softwareprodukte wie Office, Acrobat Pro, Photoshop, bla haben sowieso immer eine MSI Datei mit auf der CD. Trotzdem bleiben 95% ohne MSI und deswegen lohnt sich das Tutorial.
Der Vorgang ist erstaunlich komplex und hat viele Tücken und Fehler auf Lager. Also aufmerksam Lesen, Verstehen und nicht schnell durchklicken.
Zuerst braucht ihr die Software WinINSTALL LE, Download hier.
Installieren und starten
Die Software, von der ihr die MSI erstellen wollt, darf nicht installiert sein. Deinstalliert sie notfalls vorher. Haltet die normale Installationsdatei bereit, in meinem Beispiel Paint.NET 3.5 mit .exe Installer.
Während des ganzen Prozederes darf bis auf WinINSTALL KEIN Programm laufen! Kein Firefox, kein Musikplayer, das wird euch am Ende sonst richtig Stress machen!
Zuerst klickt ihr in WinINSTALL LE auf das Discover Icon (die Lupe) und startet damit den Discover Prozess ohne weitere Parameter.

Der Assistent startet sich. Ein Klick auf Weiter und dann müsst ihr den Namen des Projekts angeben. Der Pfad und der Name der .msi wird automatisch ergänzt.
Der Zielordner sollte sich im WinINSTALL LE Programmordner befinden, normalerweise C:\Programme\OnDemand\WinINSTALL\Packages\ bzw. %programfiles%\OnDemand\WinINSTALL\Packages\. Dieser Ordner wurde entsprechend vorbereitet.
Mein Testdurchlauf mit Desktop als Zielordner endete in mehreren fehlerhaften Durchläufen und viel verschwendeter Zeit.

Die nächsten 2 Schritte fragen ab, welches euer “working drive” und euer “installation drive” ist. Auf dem “working drive” landen temporäre Dateien, “installation drive” sollte klar sein. Beides C: in meinem Fall.
Die 2 Schritte danach fragen “exclusion files” und “exclusion registry keys” ab. Belasst alles so und klickt weiter.
Jetzt sind alle Informationen da und der “Before” Scan startet und zeichnet den Stand des System vor der Installation auf.
Hier sei nochmal erwähnt, KEINE PROGRAMME laufen zu haben, ausser WinINSTALL.
Der Scan wird je nach System 1-5 Minuten dauern und (hoffentlich) mit diesem Fenster beendet:

Wie die Meldung schon verkündet, ihr sollt jetzt die Installer starten. Nach dem Klick auf [OK] öffnet sich ein Durchsuchen-Fenster, ihr sucht euch die Installer.exe raus und startet sie.

Bei der Installation der Software darauf achten, dass sie “für alle Benutzer” installiert wird, Konfigurationsdateien im Programmordner, nicht unter den persönlichen Anwendungsdaten, gespeichert werden. Die Installation sollte nichts im “Dokumente und Einstellungen” (bzw. “Users”) Tree abspeichern, ausser im “All Users” Ordner. Werden Dateien in den “Dokumente und Einstellungen\[Benutzername]” installiert, wird das bei anderen Benutzern Probleme machen. Dazu aber mehr später.
Installation abgeschlossen? Dann müsst ihr in WinINSTALL LE wieder den Discover Button drücken und bestätigen, damit sich der Assistent wieder startet. Dieser erkennt den laufenden Prozess und bietet euch nun an, einen “Danach” Snapshot zu erstellen und die Änderungen heraus zu kristallisieren.

Der Vorgang wird wieder 1-5 Minuten dauern und danach (hoffentlich) ohne Fehlermeldungen seinen Erfolg verkünden. Geht nun mal in das Verzeichnis, das ihr im 2. Schritt als Zielpfad ausgewählt habt, “%programfiles%\OnDemand\WinINSTALL\Packages\Projektname“, dort müsste das Bild etwa so aussehen:

Ist hier der Ordner “Dokumente und Einstellungen” vorhanden, schaut rein, in welche Profile Dateien bewegt werden. Ist ausser All User noch ein anderer Benutzerordner vorhanden, prüft die Dateien und löscht sie ggf. Dazu aber mehr in der Troubleshooting Section.
Ihr geht vielleicht davon aus, das wars. Allerdings wird die MSI Datei nur irgendwas zwischen 100 und 500kb groß sein. Dort sind nämlich noch nicht all die Dateien integriert, die in den Ordner stecken. Das ist der nächste Schritt, die MSI “standalone machen”.
In WinINSTALL, rechts-klickt “Windows Installer Packages” und importiert eure MSI. Hier unbedingt “Copy Package Source Files” aktivieren! Eine sinnvolle Description eingeben, die wird (glaube ich zumindest) später nach der Installation in der Systemsteuerung->Software angezeigt.

Nach dem Rechtsklick auf das Paket und “Compress…” erscheint ein kleines Fenster, hier einfach OK drücken und dann sollte WinINSTALL die MSI und die Daten zusammenfassen. Das kann bis zu einer Minute dauern. Jetzt solltet ihr in dem Ordner, den ihr gerade als Pfad angegeben habt, eine große MSI Datei haben.
Das wars
Die MSI installiert sich per Doppelklick ohne weitere Benutzereingaben zu fordern. Wie sich das Programm installiert habt ihr ja bei der manuellen Installation festgelegt.

Joah, noch Fragen, Ideen, Verbesserungen, Fehler, something? Mail me
Beim Erstellen der MSI:
Error: source files must begin with @SourceDir: DesktopFolder\Dokumente und Einstellungen\[user]\Anwendungsdaten\Mozilla\Firefox\Profiles\5epbvr49.default\formhistory.sqlite
Hier konnte eine Datei nicht kopiert werden. Der häufigste Grund war, dass diese Datei während des “Danach” Snapshots gerade in Benutzung war und deswegen nicht kopiert werden durfte. Das erfahrt ihr auch durch einen “File copy error” bzw “Failed to copy”:
Beim “Compress…” der MSI:
Error: unable to compress file \\Computername\WinInstall\Packages\Programm\langer\blöder\Pfad\EvtlMitDatei.tmp into cabinet \\Computername\WinInstall\Packages\Programm\Irgendeine.cab: Error opening input file: 1 (0)
Wenn ihr das MSI File in das Programm importiert müsst ihr darauf achten, dass “Copy Package Source Files” aktiviert ist, unbedingt Häkchen setzen!
Hat dir dieser Post gefallen? Dann schau noch unter den "Ähnlichen Artikeln" nach und abonniere meinen RSS Feed.
5 Responses for "MSI Pakete erstellen"
Danke für die ausführliche Beschreibung.
Bisher benutzte ich die Version 2003 lediglich zum Manipulieren von msi-Paketen.
danke für die ausführliche anleitung. hab mich auch schon mal kurz mit wininstall-le beschäftigt, aber nicht weiter verfolgt…
du schreibst oben, es dürfen keine programme laufen ausser wininstall. wie ist das mit dem virenscanner? kann der laufen oder muss der deaktiviert sein?
du hast wininstall nicht auf einem frischinstalliertem rechner ausgeführt, oder? das war dein normaler pc mit bereits unterschiedlich installierten programmen?
Jap, Virenscanner ist okay, den hatte ich auch an. Ich meine aktive, im Vordergrund laufende Programme. Programme im Hintergrund wie Teamviewer, Dropbox, FSCapture oder so verhalten sich ja ruhig.
Ja ich hab WinINSTALL auf meinem Rechner ausgeführt, nicht frisch installiert.
danke für die schnelle antwort.
hast du zufällig erfahrung wie es sich mit unterschiedlichen windows-versionen verhält? (windows 2000, xp, vista, w7)?
muss man für jede windows-version ein eigenes .msi-file erstellen?
Ich denke mal je nach Programm ist das unterschiedlich. Wenn das Programm in einen C:\WINDOWS Ordner schreibt oder eine Datei editiert, die in Windows 7 nicht mehr existiert, dann wirds wohl problematisch. Oder eine Installation unter Win7 nutzt die Ordner User oder Program Files, das geht unter XP natürlich nicht.
Also das wirste testen und wahrscheinlich wird es nur bei [2000+XP] und [Vista+7] gehen.
< – sind aber alles nur Vermutungen
Leave a reply