In diesem Blog erkläre ich, welche Elemente beim Repaketieren einer MSI Installation auftauchen und wie mit diesen umzugehen ist.
Im Jahr 2004 habe ich ein Artikel auf myITforum.com mit dem Titel ‘The three biggest mistakes in Windows Installer repackaging ‘ veröffentlicht, der unter Punkt 3 beschreibt, dass es nicht falsch sein muss, eine MSI Installation zu repaketieren.
Beim Repaketieren einer MSI Datei sind auf folgende sechs Punkte Rücksicht zu nehmen:
1. Darwin Descriptoren
Diese Registry-Keys werden anhand der Advertising Tabellen erstellt und sollen nicht über die repaketierte MSI mit installiert werden, da die repaketierte MSI eigene Darwin Descriptoren generiert (sollte der Support des Advertisings gewünscht sein). Es gibt zwei Darwin Descriptoren in der Regsitry, die sich wie folgt identifizieren lassen:
In der CLSID Sektion des Classes Root Hive, erkennbar als InprocServer32 Wert
Oder als Command Verb in einem Programmatic Identifier (ProgID)
2. Windows Installer Datei Registrationen
Jede MSI Installation registriert sich am Ende des Installationsprozesses auf dem PC. Neben der lokalen Kopie der MSI Datei werden Transformdateien, Patch Dateien und Ikonen von Shortcuts im C:WindowsInstaller Verzeichnis niedergelegt. Diese sind aus der repaketierten MSI Installation zu löschen.
3. Windows Installer Registry Registrationen
Neben den Windows Installer Dateien werden in den folgenden Bereichen der Registry Einträge vorgenommen, die zu löschen sind:
Weitere Registry-Einträge wie Uninstall und SharedDlls Informationen sind anhand der Repackaging Best Practices zu verwalten.
4. Advertised Shortcuts
Sollte die Hersteller MSI Installation Advertised Shortcuts erstellen, so werden diese in der repaketierten MSI Installation nicht funktionieren, da diese Binär sind und nicht interpretiert werden können.
Die Shortcuts müssen entweder manuell nachgebaut werden, oder bei der Hersteller Installation kann über die Befehlszeile ein Argument mitgegeben werden, welches anstelle von advertised Shortcuts normale Shortcuts erstellen wird. Das Argument DISABLEADVTSHORTCUTS zwingt die MSI Installation normale Shortcuts zu erstellen, welche von einem Repaketierungs-Tool interpretiert werden können.
5. .NET Assemblies
Achten Sie auf Einträge in der MSIAssembly Tabelle des Hersteller MSIs, da diese aufwändig sind in CustomActions umzuschreiben. Es können alle Einträge vom Hersteller MSI kopiert und in die repaketierte MSI übernommen werden. Anpassungen sind in den meisten Fällen von Nöten, da die Komponenten-Namen und Datei-Einträge in der File Tabelle unterschiedlich ausfallen werden.
Beispiel: Die MSIAssembly Tabelle von einer Hersteller MSI
Die angepasste MSIAssembly Tabelle nach dem Repaketieren
Nicht zu vergessen ist danach das Gleiche mit der MsiAssemblyName Tabelle zu tun.
6. Update Funktionalität sicherstellen
Die Sicherstellung der Kompatibilität für Major Updates, die vom Hersteller bei zukünftigen MSI Installationen erwartet wird, kann über den Produkt Code (Property) und den UpgradeCode (Property) berücksichtigt werden. Beide Werte werden während dem Repaketierungsprozess neu generiert und sollten vom originalen MSI Paket übernommen werden.
Bei der Repaketierung einer Hersteller MSI wird die Unterstützung von Hersteller-Patches (MSP Dateien) verloren gehen. MSP Dateien müssen ebenfalls repaketiert werden und mit einem geeigneten Tool wie dem Wise PatchCreationWizard von Symantec manuell erstellt werden.
Unter Berücksichtigung dieser sechs Punkte steht nun nichts mehr im Wege, eine Hersteller MSI in eine eigene MSI zu repaketieren.
Stefan Hotan
A member of the Ontrex SPA Team