Empirum Paket – Deinstallation ohne Quellen

Die Deinstallation eines Empirum Paketes sollte komplett lokal, ohne weiteren Zugriff auf die Installationsquellen, möglich sein. Die Zuweisung und Installation einer höheren Version mit dem Setup.inf Standardwert AskUninstallOld=1 setzt das schon fast voraus. Von Haus aus bringen die meisten Installer bereits ihre Deinstallationsroutine, in Form einer uninstall.exe im jeweiligen Programmverzeichnis, mit. Warum jetzt dieser Beitrag?

Unattended Uninstallation Dialog

Wenn Du beim Nutzen des Package Wizards zum Erstellen einer „Unattended“ sprich „Silent“ Installation einer EXE an den Dialog zur Deinstallation kommst, kannst Du das „Basis Verzeichnis“ nicht anpassen. In das Eingabefeld für das Deinstallationsprogramm kannst Du den Aufruf „C:\Program Files (x86)\My Program\unins000.exe“ eintragen und den Assistenten erfolgreich beenden.

Deinstallation schlägt fehl

Die Tests zur Deinstallation des Programms im Rahmen der Paketierung schlagen fehl. Warum?

Fehlersuche / Behebung

Um herauszufinden, warum der Fehler auftritt, müssen wir uns die Abfolge der Befehle zur Deinstallation der Software in unserem erstellten Paket ansehen. Ein Blick in die Sektion [Set:Deinstallation] der Setup.inf, die für die Deinstallation zuständig ist, bringt den Fehler schnell zum Vorschein. Hier wird versucht, den folgenden Befehl auszuführen:

-Call "%Src%\C:\Program Files (x86)\My Program\unins000.exe" /S

Der Teil „%SRC%\C:\…“ sieht nicht nur seltsam aus, sondern kann auch nicht funktionieren. Angepasst, sollte der Aufruf wie folgt ausschauen:

-Call "C:\Program Files (x86)\My Program\unins000.exe" /S

oder besser noch

-Call "%ProgramFilesDirx86%\My Program\unins000.exe" /S

Mit diesen Anpassungen sollte die Deinstallation nun erfolgreich durchgeführt werden.

Anpassen der Vorlage

Damit die Anpassung nicht immer wieder im erstellten Paket vorgenommen werden muss, passt man die Vorlage „Unattended.inf“ (Empirum\Configurator\Packages\Matrix42\Packaging Center\<Version>\Templates) an. Dazu entfernt man aus der nachfolgenden Zeile:

-Call "%Src%\{UnattDeInst}" {UnattDeInstPar}

das %SRC%\ und macht daraus:

-Call "{UnattDeInst}" {UnattDeInstPar}

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.