UnInstall im eScript

User Rating: 5 / 5

Star ActiveStar ActiveStar ActiveStar ActiveStar Active
 

Wie funktioniert die Deinstallations Routine in einem eScript?

  • Das Script wird bei einer Deinstallation wie auch bei einer Installation immer von oben nach unten abgearbeitet.
  • Der Part ":$BeginUninstallScript" wird nur zusätzlich bei einer Deinstallation ausgeführt.
  • Das eScript versucht alle Schritte des Installationspart rückgängig zu machen. Der UnInstall wird auch nur ausgeführt, wenn in den "Execution Settings" der Haken bei "Support automatic uninstallation" ausgewählt ist.

Dazu zählen die Befehle:

  • MSIInstallProduct
  • MsiApplyPatch
  • InstallFileList wird zum DeleteFileList
    usw.

Wenn, wie in meinem Fall, der Installationspart bei einer Deinstallation nicht ausgeführt werden soll, kann man im Script "CheckInstallMode" benutzen:

If CheckInstallMode(imUninstall)
 goto EOS
Else
... Install Script Part...


:EOS
:$BeginUninstallScript
... Uninstall Script Part ...

Getestet auf DSM 7.1

 

Mein Problemfall war:
Die Installation/Konfiguration und Deinstallation vom IBM Tivoli Storage Manager
Die Installation geht bequem per MSiInstallProduct.
Die Konfiguration und Installation der Dienste habe ich in einem eigenen Konfigurationspaket separiert.
Das erste Problem zeigt sich bereits bei unterschiedlichen Versionen. Die eigens für mein Unternehmen
erstellte MSI-Installations-Datei besitzt bei jedem Versionssprung eine neue GUID (Product-Identifier).
Eine neue Version wird damit gnadenlos übergebügelt. Wenn da nicht die TSM Dienste wären, denn so lange diese nicht gestoppt sind, passiert nichts.
Für eine Deinstallation müsste ich jetzt alle vorher verteilten Product-Identifier angeben, denn das MSiInstallProduct deinstalliert
nur sein eigenes Produkt. Und, es müssen alle Dienste vorher gestoppt werden.
Also habe ich mir ein VBS-Script erstellt, welches den Product-Identifier vorher ausliest, ggf. vorhandene Dienste stoppt usw.
Die Deinstalltion lasse ich nun ganz im ":$BeginUninstallScript" ablaufen. Damit kann ich jegliche Installationen mit unterschiedlichen
Product-Identifier löschen, die Dienste vorher stoppen und am Ende auch löschen (auch in einem eigenen VBS-Script, weil die Namen der Dienste ja unterschiedlich sein können).
Nach der ganzen Arbeit, hätte ich mir das eScript auch sparen können und alles in ein VBS-Script erpart, wäre aus meiner Sicht einfacher gewesen.