Übersicht

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.

Technische Referenzen

https://docs.microsoft.com/en-us/windows/win32/msi/windows-installer-portal

Installationsablauf

Der Ablauf der Installation gestaltet sich immer nach dem gleichen Muster

  1. Überprüfung, ob die zu installierende Software bereits lokal installiert ist, dies ist eine Sicherheitsmassnahme, falls das Paket eventuell schon manuell installiert worden ist oder der Job falsch gesetzt worden ist.
  2. Alle Prozesse aus dem Programmfolder der zu installierenden Software werden gelöscht
  3. Alle Prozesse aus der "File Table" der MSI werden gelöscht
  4. Installation der MSI, in der Regel in der Kombination mit der MST
  5. Nachträgliches setzen der Einstellungen (z.B. Sprache, Servernamen, ...)
  6. Eventuell Vergabe von zusätzlichen Rechten auf dem Filesystem oder der Registry
  7. Optional ein Feedback, ob ein Reboot notwendig ist
  8. Überprüfung auf einen Registry Key oder ein File, ob die Installation korrekt durchgelaufen ist

Deinstallationsablauf

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.

  1. Überprüfung, ob die zu installierende Software bereits lokal installiert ist.
  2. Alle Prozesse aus dem Programmfolder der zu installierenden Software werden gelöscht
  3. Alle Prozesse aus der "File Table" der MSI werden gelöscht
  4. Deinstallation der MSI
  5. Eventuell Rücknahme von zusätzlichen Rechten auf dem Filesystem oder der Registry
  6. Optional ein Feedback, ob ein Reboot notwendig ist
  7. Überprüfung auf einen Registry Key oder ein File, ob die Installation korrekt durchgelaufen ist

Reparatur

  1. Überprüfung, ob die zu installierende Software bereits lokal installiert ist.
  2. Alle Prozesse aus dem Programmfolder der zu installierenden Software werden gelöscht
  3. Alle Prozesse aus der "File Table" der MSI werden gelöscht
  4. Reparatur der MSI
  5. Eventuell Reparatur von zusätzlichen Rechten auf dem Filesystem oder der Registry
  6. Optional ein Feedback, ob ein Reboot notwendig ist
  7. Überprüfung auf einen Registry Key oder ein File, ob die Installation korrekt durchgelaufen ist

Properties

Folgende Eigenschaften können als Kommandozeilenparameter in der deploy.xml gesetzt werden.

ALLUSERS1Installation pro Maschine unter Verwendung von Ordnern im Profil "Alle Benutzer".
ARPNOMODIFY1Deaktiviert die Änderungsfunktionalität im ARP
ARPSYSTEMCOMPONENTKein EintragEin 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.
LIMITUI1Die Ebene der Benutzeroberfläche (UI), die bei der Installation des Pakets verwendet wird, ist auf Basic beschränkt.
MSIDISABLERMRESTART1Windows Restart Manager: Die Eigenschaft wird ignoriert, wenn der Neustart-Manager nicht verfügbar oder deaktiviert ist.
MSIRESTARTMANAGERCONTROLDisableWindows Restart Manager: Deaktiviert den Neustart-Manager.
MSIRMSHUTDOWN2Windows Restart Manager: Die Eigenschaft wird ignoriert, wenn der Neustart-Manager nicht verfügbar oder deaktiviert ist.
REBOOTReallySuppressUnterdrückt alle Neustarts und Neustartaufforderungen, die durch ForceReboot während der Installation ausgelöst werden.
ROOTDRIVEC:\Legt das Standardlaufwerk für das Zielverzeichnis der Installation fest.

 

Features

Das Layout der Merkmale sollte nicht verändert werden, wenn es nicht benötigt wird.

Components

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.

Current User Entries

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

AktiveSetup

ActiveSetup-Einträge im Hersteller-MSI werden, wenn sie vorhanden sind, in den Abschnitt der Datei deploy.xml verschoben. Ansonsten gelten die Empfehlungen für Repackaged MSI.

Dateien

Die Hersteller-MSI kann ohne Änderungen belassen werden.

Medien/CAB's

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 .cab) komprimiert oder als unkomprimierte Dateien eingebunden werden, abhängig von den Besonderheiten der Hersteller-MSI.

Ini-Dateien

Die Hersteller-MSI kann ohne Änderungen belassen werden.

Registrierung

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.

Dateizuordnungen

Die Hersteller-msi kann ohne Änderungen belassen werden.

Umgebungsvariablen

Werte übernehmen, wenn Umgebungsvariable bereits vorhanden. Bei der Installation angelegte Umgebungsvariable muss beim Entfernen des Pakets entfernt werden.

Beispiel: *=-PATH

Dienste

Bei der Deinstallation der Anwendung sollten die installierten Dienste gestoppt und entfernt werden.

ODBC

Die msi des Herstellers kann ohne Änderungen belassen werden.

Benutzerdefinierte Aktionen

Es sollte keine zusätzliche Custom Action verwendet werden. Alle erforderlichen erweiterten Aktionen sollten über die Deploy.xml implementiert werden.

Sicherheitsberechtigungen

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.

Shortcuts

Die Shortcuts werden zusätzlich im <initialize> Abschnitt aufgezeichnet, so dass es möglich ist, sie auf ein anderes System zu exportieren

Spezielle Richtlinien

  1. ProductCode sollte niemals geändert werden
  2. LaunchConditions werden immer entfernt
  3. Allgemeine Manipulationen werden immer im MST durchgeführt
  4. Dynamische Manipulationen (Servernamen, Serienschlüssel) werden in der Deploy.xml vorgenommen

Paketvalidierung

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.