[GELÖST] Probleme bei Deinstallation eines Paketes
Verfasst: 17 Okt 2013, 13:33
Hallo,
ich teste aktuell die Installation von Sophos Anti-Virus 10.2. Bislang auch alles ok, nur bei der Deinstallationsroutine erhalte ich die Meldung das ein Prozeß nicht beendet werden konnte.
Nun habe ich vor der Deinstallationsroutine ein Taskkill eingebaut, aber scheinbar wird dieser ignoriert.
Das betreffende Produkt hat die ID {15C418EB-7675-42BE-B2B3-281952DA014D} Sophos AutoUpdate.
Habt ihr da noch Tips für mich?
Anbei meine aktuelle Deinstallationsroutine:
Wenn ich die Deinstallationsroutine mit angemeldetem Benutzer, mittels msiexec, aufrufe läuft alles sauber durch.
Gruß
Maggus
ich teste aktuell die Installation von Sophos Anti-Virus 10.2. Bislang auch alles ok, nur bei der Deinstallationsroutine erhalte ich die Meldung das ein Prozeß nicht beendet werden konnte.
Nun habe ich vor der Deinstallationsroutine ein Taskkill eingebaut, aber scheinbar wird dieser ignoriert.
Das betreffende Produkt hat die ID {15C418EB-7675-42BE-B2B3-281952DA014D} Sophos AutoUpdate.
Habt ihr da noch Tips für mich?
Anbei meine aktuelle Deinstallationsroutine:
Code: Alles auswählen
; Copyright (c) uib gmbh (www.uib.de)
; This sourcecode is owned by uib gmbh
; and published under the Terms of the General Public License.
; credits: http://www.opsi.org/en/credits/
DefVar $MsiId32_1$
DefVar $MsiId32_2$
DefVar $MsiId64_1$
DefVar $MsiId64_2$
Set $MsiId32$ = '{9ACB414D-9347-40B6-A453-5EFB2DB59DFA}'
Set $MsiId32_1$ = '{15C418EB-7675-42BE-B2B3-281952DA014D}'
Set $MsiId32_2$ = '{FED1005D-CBC8-45D5-A288-FFC7BB304121}'
Set $UninstallProgram32$ = $InstallDir32$ + "\uninstall.exe"
Set $MsiId64$ = '{9ACB414D-9347-40B6-A453-5EFB2DB59DFA}'
Set $MsiId64_1$ = '{15C418EB-7675-42BE-B2B3-281952DA014D}'
Set $MsiId64_2$ = '{FED1005D-CBC8-45D5-A288-FFC7BB304121}'
Set $UninstallProgram64$ = $InstallDir64$ + "\uninstall.exe"
if (($INST_SystemType$ = "x86 System") and ($INST_architecture$ = "system specific")) or ($INST_architecture$ = "both") or ($INST_architecture$ = "32 only")
Message "Uninstalling " + $ProductId$ + " 32 Bit..."
if FileExists($UninstallProgram32$)
comment "Uninstall program found, starting uninstall"
Winbatch_uninstall_32
sub_check_exitcode
endif
if not (GetRegistryStringValue32("[HKEY_LOCAL_Machine\SOFTWARE\Classes\Installer\Products\D414BCA974396B044A35E5BFD25BD9AF\] ProductName") = "")
comment "MSI id " + $MsiId32$ + " found in registry, starting msiexec to uninstall"
Winbatch_uninstall_msi_32
sub_check_exitcode
endif
comment "Delete files"
Files_uninstall_32 /32Bit
comment "Cleanup registry"
Registry_uninstall /32Bit
endif
if ($INST_SystemType$ = "64 Bit System") and (($INST_architecture$ = "system specific") or ($INST_architecture$ = "both") or ($INST_architecture$ = "64 only"))
Message "Uninstalling " + $ProductId$ + " 64 Bit..."
if FileExists($UninstallProgram64$)
comment "Uninstall program found, starting uninstall"
Winbatch_uninstall_64
sub_check_exitcode
endif
if not (GetRegistryStringValue64("[HKEY_LOCAL_Machine\SOFTWARE\Classes\Installer\Products\D414BCA974396B044A35E5BFD25BD9AF\] ProductName") = "")
comment "MSI id " + $MsiId64$ + " found in registry, starting msiexec to uninstall"
Winbatch_uninstall_msi_64
sub_check_exitcode
endif
comment "Delete files"
Files_uninstall_64 /64Bit
comment "Cleanup registry"
Registry_uninstall /64Bit
endif
comment "Delete program shortcuts"
LinkFolder_uninstall
[Winbatch_uninstall_32]
; Choose one of the following examples as basis for program uninstall
;
; === Nullsoft Scriptable Install System ================================================================
; maby better Call as
; Winbatch_uninstall /WaitforProcessending "Au_.exe" /Timeoutseconds 10
; "$UninstallProgram32$" /S
;
; === Inno Setup ========================================================================================
; "$UninstallProgram32$" /silent /norestart /SUPPRESSMSGBOXES /nocancel
[Winbatch_uninstall_msi_32]
taskkill /F /IM almon.exe /T
msiexec /x $MsiId32$ /qn! REBOOT=ReallySuppress
msiexec /x $MsiId32_1$ /qn! REBOOT=ReallySuppress
msiexec /x $MsiId32_2$ /qn! REBOOT=ReallySuppress
[Files_uninstall_32]
; Example for recursively deleting the installation directory (don't forget the trailing backslash):
;
; delete -sf "$InstallDir32$\"
[Winbatch_uninstall_64]
; Choose one of the following examples as basis for program uninstall
;
; === Nullsoft Scriptable Install System ================================================================
; maby better Call as
; Winbatch_uninstall /WaitforProcessending "Au_.exe" /Timeoutseconds 10
; "$UninstallProgram64$" /S
;
; === Inno Setup ========================================================================================
; "$UninstallProgram64$" /silent /norestart /SUPPRESSMSGBOXES /nocancel
[Winbatch_uninstall_msi_64]
taskkill /F /IM almon.exe /T
msiexec /x $MsiId64$ /qn! REBOOT=ReallySuppress
msiexec /x $MsiId64_1$ /qn! REBOOT=ReallySuppress
msiexec /x $MsiId64_2$ /qn! REBOOT=ReallySuppress
[Files_uninstall_64]
; Example for recursively deleting the installation directory:
;
; del -sf "$InstallDir64$\"
[Registry_uninstall]
; Example of deleting a registry key:
;
; deletekey [HKEY_LOCAL_MACHINE\Software\$ProductId$]
[LinkFolder_uninstall]
; Example of deleting a folder from AllUsers startmenu:
;
; set_basefolder common_programs
; delete_subfolder $ProductId$
;
; Example of deleting a shortcut from AllUsers desktop:
;
; set_basefolder common_desktopdirectory
; set_subfolder ""
; delete_element $ProductId$
[Sub_check_exitcode]
comment "Test for installation success via exit code"
set $ExitCode$ = getLastExitCode
; informations to exit codes see
; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx
; http://msdn.microsoft.com/en-us/library/aa368542.aspx
if ($ExitCode$ = "0")
comment "Looks good: setup program gives exitcode zero"
else
comment "Setup program gives a exitcode unequal zero: " + $ExitCode$
if ($ExitCode$ = "1605")
comment "ERROR_UNKNOWN_PRODUCT 1605 This action is only valid for products that are currently installed."
comment "Uninstall of a not installed product failed - no problem"
else
if ($ExitCode$ = "1641")
comment "looks good: setup program gives exitcode 1641"
comment "ERROR_SUCCESS_REBOOT_INITIATED 1641 The installer has initiated a restart. This message is indicative of a success."
else
if ($ExitCode$ = "3010")
comment "looks good: setup program gives exitcode 3010"
comment "ERROR_SUCCESS_REBOOT_REQUIRED 3010 A restart is required to complete the install. This message is indicative of a success."
else
logError "Fatal: Setup program gives an unknown exitcode unequal zero: " + $ExitCode$
isFatalError
endif
endif
endif
endif
Gruß
Maggus