Für die Erstellung eines MSI-Paketes ist es natürlich zwingend, dass der Hersteller eine MSI-Datei zur Verfügung stellt. Da die Datei als Datenbank zur Verfügung steht, können wir mit dem FastWrapper sehr viele Informationen direkt auslesen. Daher ist es unnötig, z.B. den Uninstall Key manuell zu suchen.
https://docs.microsoft.com/en-us/windows/win32/msi/windows-installer-portal
Der Ablauf der Installation gestaltet sich immer nach dem gleichen Muster
Generell sollten alle Ressourcen, die bei der Installation installiert wurden, bei der Deinstallation entfernt werden. Dies ist das Standardverhalten der MSI-Technologie. Die Ausnahmen sind Dateien, die über Komponenten installiert wurden, die mit anderen installierten Paketen gemeinsam genutzt werden. Dateien und INI-Einträge, die nach der Installation der Software erstellt wurden, werden bei der Deinstallation standardmäßig nicht entfernt. Der Anwendungsordner verbleibt mit einigen erstellten Inhalten auf dem Computer. Benutzerspezifische Dateien und Registry-Einträge sollten nicht gelöscht werden.
Folgende Eigenschaften können als Kommandozeilenparameter in der deploy.xml gesetzt werden.
ALLUSERS | 1 | Installation pro Maschine unter Verwendung von Ordnern im Profil "Alle Benutzer". |
ARPNOMODIFY | 1 | Deaktiviert die Änderungsfunktionalität im ARP |
ARPSYSTEMCOMPONENT | Kein Eintrag | Ein ARP-Eintrag für jede msi. Falls msi mehr als einen ARP-Eintrag installiert, kann ARPSYSTEMCOMPONENT = 1 über die Registry-Tabelle gesetzt werden, um einen zusätzlichen APR-Eintrag zu verbergen. Er sollte bei der De-Installation des Pakets gelöscht werden. |
LIMITUI | 1 | Die Ebene der Benutzeroberfläche (UI), die bei der Installation des Pakets verwendet wird, ist auf Basic beschränkt. |
MSIDISABLERMRESTART | 1 | Windows Restart Manager: Die Eigenschaft wird ignoriert, wenn der Neustart-Manager nicht verfügbar oder deaktiviert ist. |
MSIRESTARTMANAGERCONTROL | Disable | Windows Restart Manager: Deaktiviert den Neustart-Manager. |
MSIRMSHUTDOWN | 2 | Windows Restart Manager: Die Eigenschaft wird ignoriert, wenn der Neustart-Manager nicht verfügbar oder deaktiviert ist. |
REBOOT | ReallySuppress | Unterdrückt alle Neustarts und Neustartaufforderungen, die durch ForceReboot während der Installation ausgelöst werden. |
ROOTDRIVE | C:\ | Legt das Standardlaufwerk für das Zielverzeichnis der Installation fest. |
Das Layout der Merkmale sollte nicht verändert werden, wenn es nicht benötigt wird.
Komponenten einer Hersteller-MSI können unverändert belassen werden. Komponenten, die über MST hinzugefügt werden, sollten den Vorschriften für Repackaged MSI entsprechen.
Wenn das Paket vom Hersteller korrekt erstellt wurde, ist der Benutzeranteil in diesem Fall vernachlässigbar, da er vom MSI per Selbstheilung ausgelöst wird.
In Ausnahmefällen kann aber auch hier der <userinstall> Abschnitt verwendet werden, der automatisch eine "ActiveSetup.vbs" im Hauptverzeichnis des Programms anlegt, die direkt bei der Installation für alle angemeldeten Benutzer ausgeführt wird, aber auch bei allen nachfolgenden Anmeldungen über die ActiveSetup.vbs ausgelöst wird
ActiveSetup-Einträge im Hersteller-MSI werden, wenn sie vorhanden sind, in den Abschnitt
Die Hersteller-MSI kann ohne Änderungen belassen werden.
Vendor msi Media Option wird unverändert belassen.
Wenn Dateien zum Paket hinzugefügt werden, sollten sie in eine neue externe CAB-Datei (mit dem Namen
Die Hersteller-MSI kann ohne Änderungen belassen werden.
Schlüssel sind auf hart kodierte Einträge zu untersuchen, z.B.: Rechnernamen, IP-Adressen, Portnummern etc. Diese Einträge sollten durch MSI-Eigenschaften ersetzt werden. Der Inhalt der SelfReg-Tabelle kann in der Hersteller-MSI so belassen werden.
Die Hersteller-msi kann ohne Änderungen belassen werden.
Werte übernehmen, wenn Umgebungsvariable bereits vorhanden. Bei der Installation angelegte Umgebungsvariable muss beim Entfernen des Pakets entfernt werden.
Beispiel: *=-PATH
Bei der Deinstallation der Anwendung sollten die installierten Dienste gestoppt und entfernt werden.
Die msi des Herstellers kann ohne Änderungen belassen werden.
Es sollte keine zusätzliche Custom Action verwendet werden. Alle erforderlichen erweiterten Aktionen sollten über die Deploy.xml implementiert werden.
Zugriffsrechte müssen für die lokale Benutzergruppe gesetzt werden (wenn nicht anders in der Installationsdokumentation beschrieben).
Die Zugriffsrechte für Dateien, Ordner, Registrierungsschlüssel und Dienste (falls erforderlich) werden durch Anweisungen in der Datei deploy.xml gesetzt, die nach der Installation ausgeführt werden. Es sollten die Dienstprogramme SECEDIT oder icacls verwendet werden.
In Ausnahmefällen kann die Tabelle LockPermissions, MsiLockPermissionsEx in der Hersteller-MSI belassen werden. Dies sollte in der Paketdokumentation vermerkt werden.
Die Shortcuts werden zusätzlich im <initialize> Abschnitt aufgezeichnet, so dass es möglich ist, sie auf ein anderes System zu exportieren
Bei der MSI-Validierung wird die Konsistenz und referenzielle Integrität der MSI-Dateidatenbank überprüft. Dies geschieht mit sogenannten ICE-Tests (Internal Consistency Evaluators). Die Standard-Validierung mit der "Full MSI Validation Suite" muss verwendet werden. ICE-Fehler in der "Vendor MSI" können ignoriert werden. Fehler von 3rd Party Merge Modules oder die von zertifizierten Merge Modules stammen, können ebenfalls ignoriert werden. Alle "Warnings"-Meldungen können ignoriert werden.