Re: alte Version nachträglich deinstallieren
Posted: 28. Sep 2012, 12:34
Hallo,
bei einer Paket-Installation gibt es immer Registry-Einträge vom Program selbst und zusätzlich vom Empirum zur Paketverwaltung.
Ein Beispiel:
Wir haben ein Netzwerk, in dem Java V. 1.6.18 mit nicht deaktiviertem Autoupdate verteilt wurde.
Wochen später ist auf einigen PC's immer noch die Version 1.6.18, andere PC's sind auf einem aktuellen Stand, die meisten sind irgendwo dazwischen.
Wenn ich nun die aktuelle Version 1.6.35 verteilen will, kann ich AskUninstallOld=1 nicht mehr verwenden, da sonst für die Deinstallation die Setup.inf für die V. 1.6.18
aufgerufen wird, obwohl inzwischen Java wegen Autoupdaten die {GUID} von {26A24AE4-039D-4CA4-87B4-2F83216018FF} auf z.B. {26A24AE4-039D-4CA4-87B4-2F83216035FF} geändert hat.
Somit wird der Aufruf fehlschlagen:
Call Msiexec /qn /norestart /x {26A24AE4-039D-4CA4-87B4-2F83216018FF}
Die Lösung:
[Set:CleanUp]
; 1.6.18 - 1.6.34
;32-Bit Versionen:
Call Msiexec /qn /norestart /x {26A24AE4-039D-4CA4-87B4-2F83216018FF}
...
Call Msiexec /qn /norestart /x {26A24AE4-039D-4CA4-87B4-2F83216034FF}
;64-Bit Versionen
Call Msiexec /qn /norestart /x {26A24AE4-039D-4CA4-87B4-2F86416018FF}
Call Msiexec /qn /norestart /x {26A24AE4-039D-4CA4-87B4-2F86416019FF}
...
Call Msiexec /qn /norestart /x {26A24AE4-039D-4CA4-87B4-2F86416034FF}
;Registry-Bereinigung:
;die nutzlosen Empirum-Einträge für die Java-Version 6.0.18 werden gelöscht:
Callhidden cmd /c reg delete "HKLM\SOFTWARE\Sun\Java Runtime Environment 6\6.0.180" /f
Callhidden cmd /c reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Java Runtime Environment 6 6.0.180" /f
Callhidden cmd /c reg delete "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Java Runtime Environment 6 6.0.180" /f
Gruß
Roman
bei einer Paket-Installation gibt es immer Registry-Einträge vom Program selbst und zusätzlich vom Empirum zur Paketverwaltung.
Ein Beispiel:
Wir haben ein Netzwerk, in dem Java V. 1.6.18 mit nicht deaktiviertem Autoupdate verteilt wurde.
Wochen später ist auf einigen PC's immer noch die Version 1.6.18, andere PC's sind auf einem aktuellen Stand, die meisten sind irgendwo dazwischen.
Wenn ich nun die aktuelle Version 1.6.35 verteilen will, kann ich AskUninstallOld=1 nicht mehr verwenden, da sonst für die Deinstallation die Setup.inf für die V. 1.6.18
aufgerufen wird, obwohl inzwischen Java wegen Autoupdaten die {GUID} von {26A24AE4-039D-4CA4-87B4-2F83216018FF} auf z.B. {26A24AE4-039D-4CA4-87B4-2F83216035FF} geändert hat.
Somit wird der Aufruf fehlschlagen:
Call Msiexec /qn /norestart /x {26A24AE4-039D-4CA4-87B4-2F83216018FF}
Die Lösung:
[Set:CleanUp]
; 1.6.18 - 1.6.34
;32-Bit Versionen:
Call Msiexec /qn /norestart /x {26A24AE4-039D-4CA4-87B4-2F83216018FF}
...
Call Msiexec /qn /norestart /x {26A24AE4-039D-4CA4-87B4-2F83216034FF}
;64-Bit Versionen
Call Msiexec /qn /norestart /x {26A24AE4-039D-4CA4-87B4-2F86416018FF}
Call Msiexec /qn /norestart /x {26A24AE4-039D-4CA4-87B4-2F86416019FF}
...
Call Msiexec /qn /norestart /x {26A24AE4-039D-4CA4-87B4-2F86416034FF}
;Registry-Bereinigung:
;die nutzlosen Empirum-Einträge für die Java-Version 6.0.18 werden gelöscht:
Callhidden cmd /c reg delete "HKLM\SOFTWARE\Sun\Java Runtime Environment 6\6.0.180" /f
Callhidden cmd /c reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Java Runtime Environment 6 6.0.180" /f
Callhidden cmd /c reg delete "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Java Runtime Environment 6 6.0.180" /f
Gruß
Roman