Seite 1 von 1

[GELÖST] Probleme bei Deinstallation eines Paketes

Verfasst: 17 Okt 2013, 13:33
von Maggus
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:

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

Wenn ich die Deinstallationsroutine mit angemeldetem Benutzer, mittels msiexec, aufrufe läuft alles sauber durch.

Gruß
Maggus

Re: Probleme bei Deinstallation eines Paketes

Verfasst: 05 Nov 2013, 13:54
von ueluekmen
Hi,

an dieser Stelle hilft meistens das Log ein zu schalten und eine Logdatei erstellen zu lassen. Dort sollte genau geschaut werden, welches Problem er tatsächlich hat.

Ist der Client ein XP oder Win7?

Re: Probleme bei Deinstallation eines Paketes

Verfasst: 05 Nov 2013, 13:55
von ueluekmen
Achso, vielleicht sollte man auch sagen, wie das geht, sorry ;)

http://technet.microsoft.com/en-us/libr ... SetLogging

Re: Probleme bei Deinstallation eines Paketes

Verfasst: 07 Nov 2013, 08:29
von Maggus
Danke für die Antwort. Zwischenzeitlich habe ich das Problem aber schon lösen können. Falls es gewünscht ist, kann ich das Script hier gerne noch anfügen.

Re: Probleme bei Deinstallation eines Paketes

Verfasst: 07 Nov 2013, 11:25
von ueluekmen
Hi Maggus,

hier ist nicht der richtige Ort für Skripte, aber du kannst gerne dein Skript in unserem wiki mit der community teilen. Du kannst dort auch direkt ins Wiki schreiben, wenn du im Forum angemeldet bist:

wiki/