MSI Pakete erstellen

Einleitung & Infos

1257430764_gnome-app-installMSI 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.

Vorbereitung

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!

MSI Creation

Zuerst klickt ihr in WinINSTALL LE auf das Discover Icon (die Lupe) und startet damit den Discover Prozess ohne weitere Parameter.
msi-installer-mit-wininstall-le-erstellen-1-rundiscover

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.
msi-installer-mit-wininstall-le-erstellen-3-pfad

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:
msi-installer-mit-wininstall-le-erstellen-4-before

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.
msi-installer-mit-wininstall-le-erstellen-5-runinstaller

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.
msi-installer-mit-wininstall-le-erstellen-6-runafter

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:
msi-installer-mit-wininstall-le-erstellen-7-rawmsi
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.
msi-installer-mit-wininstall-le-erstellen-8-import-compress
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.
msi-installer-mit-wininstall-le-erstellen-10-fertig

Joah, noch Fragen, Ideen, Verbesserungen, Fehler, something? Mail me

Troubleshooting

Beim Erstellen der MSI:
Error: source files must begin with @SourceDir: DesktopFolder\Dokumente und Einstellungen\[user]\Anwendungsdaten\Mozilla\Firefox\Profiles\5epbvr49.default\formhistory.sqlite
msi-installer-mit-wininstall-le-erstellen-err-after2Hier 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!

17 Kommentare

  1. 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?

  2. 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.

  3. 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?

  4. 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 🙂

  5. Hallo,

    Danke für die Einführung. ich bekome leider immer nur die Meldung „Diese Aktion ist nur zulässig für Produkte, die augenblicklich installiert sind.
    Woran liegt das?

  6. Wie die Meldung eigentlich schon sagt, das Programm wurde in irgendeiner Art und Weise schonmal installiert. Bisherige Erfahrungen zeigen, dass das auch wirklich so ist.
    Die Meldung kannst selbst dann noch kommen wenn du Programm X deinstalliert hast.
    Installier das Microsoft Installation CleanUp Utility und suche damit nach der Software. Wenn sie noch in der Liste steht, löschen, neustarten und nochmal probieren.

  7. In der log datei steht folgendes:

    MSI (c) (EC:94) [16:19:35:843]: Failing install, missing product code
    Dieser Vorgang ist nur für Produkte gültig, die zurzeit installiert sind.
    C:\Users\hauke.homburg\Desktop\Acrobat.msi
    MSI (c) (EC:94) [16:19:35:843]: Produkt: — Installation fehlgeschlagen.

    MSI (c) (EC:94) [16:19:35:843]: Das Produkt wurde durch Windows Installer installiert. Produktname: . Produktversion: . Produktsprache: 1031. Hersteller: . Erfolg- bzw. Fehlerstatus der Installation: 1605.

  8. Okay was sagt uns das?
    Fehler 1605 ist mir erstmal nicht bekannt, Fehler 1603 dagegen seh ich recht häufig bei Installer Paketen und so.
    Interessant ist auch „missing product code„, die GUID des Programms fehlt. In den letzten 2 Tagen habe ich mich mit GUIDs von Windows Updates rumgeprügelt, macht nur Stress sag ich dir.
    Und anscheinend fehlt auch noch bisschen anderer Kram:

    Produktname: . Produktversion: . Produktsprache: 1031. Hersteller: .

    Also dem Installer fehlen Daten, die anscheinend bei der Erstellung nicht korrekt eingetragen worden sind.
    Den Vorgang musst du vielleicht nochmal wiederholen und bisschen variieren, ich kann dir jetzt aber nicht genau sagen woran das nun liegt.

    Aber ne andere Frage, warum erstellst du eine eigene Acrobat.msi? Acrobat (zumindest die Adobe Acrobat Professional Version) kommt mit einer eigenen MSI und sogar einem Acrobat Customization Wizard (je nach Acrobat Version den richtigen Wizard suchen), mit dem du die MSI geilstens bearbeiten kannst.
    So installieren wir bei uns Acrobat.
    Oder hast du eine andere Version?

  9. Ich muß erstmal in die paketierung reinkommen. Daher finde ich die Anleitung hier auch gut. Leider bin allein mit der Anleitung nicht klargekommen. Daher ja auch meine Fragen.
    ich habe auch schon 7-Zip probiert. mit gleichen Ergebnissen. ich versuche es halt mit etwas einfachem.

  10. Naja wenn du diesen Vorgang lernen willst solltest du wirklich nicht mit Monsterprogrammen wie Acrobat anfangen, die mehrere hundert Megabyte groß sind.
    Teste… CCleaner z.B.
    Bei CCleaner muss man während der Installation ein paar wichtige Häkchen setzen und entfernen. Das CCleaner angepasst zu verteilen macht also Sinn. Und es ist klein und einfach.

    Pack dir doch zuerst ein angepasstes kleines Programm und teste das durch.
    Wenn du weitere Fragen hast kannst du mir gerne eine Mail schicken.

  11. Danke schon mal für Deine Anleitung….habe jedoch das „Phänomen“ dass ich das MSI importiere (inkl. Häckchen copy Files) und dann auf compress gehe. Läuft alles sauber und fehlerfrei durch, jedoch am Schluss habe ich immer noch ein MSI mit 800KB !

  12. Lol. Ich brauche also eine Drittsnbieter-Software, die nicht von Microsoft ist, um ein solches Paket zu erstellen. Was für ein unprofessioneller Artikel. So kommt man als Entwickler sicher nicht zu einen sauberen Installationsprogramm.

Schreibe einen Kommentar