Page 1 of 1

Bei Unattended-Deinstallation nach Uninstallstring fragen

Posted: 07. Dec 2015, 09:30
by tim.v
Liebes Package-Cloud-Team,

wir nutzen jetzt die Package-Cloud schon das zweite Jahr und sind bisher sehr zufrieden.
Leider plagt uns schon seit längerem ein nerviges Phänomen bei div. Unattended-Deinstallationen von Ihnen aber auch selbstverständlich bei welchen von unseren.

Sehr häufig meldet das SWDepot-Log bei einem Paketupdate den Fehler:

"Die alte Version konnte nicht deinstalliert werden!"

An Ende bleibt eine meist vollständig deinstalliere Vorgängerversion, aber die Empirum-Registry-Schlüssel unter HKLM\Software\$Matrix42Packages$\<Hersteller\<Softwarename>\<Version> für die Installation verbleiben und die neue Version kann nicht (mehr) installiert werden!
Der Work-A-Round ist sehr umständlich und kann so gut wie nicht automatisiert werden (alte Version mit Reinstall oder Maschinenanteil erzwingen neu installieren. Dann das Update erneut verteilen).

Die Ursache hierfür haben wir leider bisher nicht herausfinden können, haben aber jetzt einen dringenden Verdacht.

Die Errorlevel-Abfrage ob die Unattended-Deinstallation erfolgreich war, schient bei vielen Unattended-Deinstallation unpraktikabel zu sein, da div. Setups wie z.B. Inno einen ChildProzess Names "_iu14D2N.tmp" oder NSIS "Au_.exe" erzeugen der es öfteren länger läuft als das eigentliche Deinstallationssetup, das dann scheinbar auch nicht mit Errorlevel 0 beendet wird.

Wir passen deshalb ab sofort sämtliche (Auch Ihre Package-Cloud-Pakete) Unattended-Deinstallation entsprechend wie folgt an:

Code: Select all

[Environment]
V_UnInstaller=setup.exe
V_UnInstRegKey={00000000-0000-0000-0000-000000000000}

...
[Set:Deinstallation]
;-Deltree %App%
; Alternative Prüfung ob Software ordnungsgemaeß deinstalliert wurde
If DoesRegKeyExist ("HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%V_UnInstRegKey%,UnInstallString") == "1" | DoesRegKeyExist ("HKLM,SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\%V_UnInstRegKey%,UnInstallString") == "1" Then "Set:DeInstallationError" EndIf

;If "%ErrorLevel%" <> "0" Then "SET:DeInstallationError" EndIf
;If "%Errorlevel%" == "3010" Then "SET:RebootRequired" EndIf

; Pruefe ob NSIS-Setup DeinstallationsChildprozess noch läuft
-WaitWhileProcessExists "Au_.exe",60
-WaitUntilProcessExists "Au_.exe",0

; Pruefe ob Inno-Setup DeinstallationsChildprozess noch läuft
;-WaitWhileProcessExists "_iu14D2N.tmp",60
;-WaitUntilProcessExists "_iu14D2N.tmp",0

-Call %VM_UnInstCMD%
-ReplaceEnv VM_UnInstCMD

-Set VM_UnInstCMD="%ProgramFilesDir%\%DeveloperName%\%ProductName%\%V_UnInstaller%" /s

...und es scheint sich Besserung bei uns einzufinden.

Vielleicht haben Sie noch einmal die Möglichkeit dies bei Ihnen zu überprüfen!? Ich hatte dazu bereits im Juni 2014 eine E-Mail-Konversation mit einem Matrix42 Package Cloud Engineer bei Ihnen.


Danke fürs durchlesen
Gruß
Tim