Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Uninstall Problem in Custom Action


1 reply to this topic

zahni

zahni
  • Full Members
  • 2 posts

Posted 20 November 2007 - 16:05

Hallo zusammen,


ich bin gerade dabei eine neue Version einer Software via MSI zu verteilen. Dabei versuche ich mittels einer Custom Action die Vorgängerversion zu deinstallieren,welche schon etwas älter ist.
Eigentlich kein Problem, dachte ich. Die Vorgängerversion wurde mit Installshield3 o.5 installiert und ich wollte nur den Uninstall-String aus der Registry auslesen und via VBS-Script innerhalb einer Custom Action ausführen. Ich führe den Aufruf return = Ws.Run ("C:\temp\IsUninst.exe -x -fC:\temp\Deisl1.isu -cC:\temp\UNINST.dll",1 ,TRUE) innerhalb des VBS Scriptes durch. Dies funktioniert ausserhalb des MSIs problemlos. Nur wenn ich dies innerhalb des MSIs als Custom Action aufrufe bekomme ich einen Fehler.
Jetzt habe ich herausgefunden, dass innerhalb des Uninstall Vorgangs ein weiteres MSI Paket(VBA6.msi) zum deinstallieren aufgerufen wird und somit zum Fehler führt, da breits eine MSI Installation läuft.
Gibt es eine Möglichkeit mehrere MSI DE/Installation gleichzeit zu starten. Oder hat jemand eine andere Idee?
Zuerst dachte ich, ich kann das Installshield-LOG "Deisl1.isu " nachträglich bearbeiten, sodass der Aufruf zum deinstallieren des VBA6.msi nicht ausgeführt wird. Leider habe ich keine Möglichkeit zu editieren von ISU Files gefunden. Gibt es diese Möglichkeit?

Danke schon mal.

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 23 November 2007 - 01:50

Du könntest die Deinstallation in the UI Sequence aufrufen - nicht schön aber möglich (nicht unter Windows 9X/Me).
Bei diesen alten InstallSield Versionen muss der Aufruf zur Deinstallation der .msi Datei per DLL erfolgen (uninstall extension DLL hieß das glaube ich). Wenn das die einzige Aufgabe der DLL ist, könntest du sie einfach nicht aufrufen, d.h. lass den -c Parameter weg. Wenn die DLL noch andere aufgaben erfüllt, könntest du versuchen sie auszutauschen.