e9c0d852b4db112840ba14c704766576cffd623cvboxsync; $Id: $
e9c0d852b4db112840ba14c704766576cffd623cvboxsync;; @file
e9c0d852b4db112840ba14c704766576cffd623cvboxsync; VBoxGuestAdditionsUninstallOld.nsh - Guest Additions uninstallation handling
e9c0d852b4db112840ba14c704766576cffd623cvboxsync; for legacy packages.
e9c0d852b4db112840ba14c704766576cffd623cvboxsync;
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync;
4df0640e3f60845347b8c00d3b04a9fdecfef63cvboxsync; Copyright (C) 2006-2013 Oracle Corporation
e9c0d852b4db112840ba14c704766576cffd623cvboxsync;
e9c0d852b4db112840ba14c704766576cffd623cvboxsync; This file is part of VirtualBox Open Source Edition (OSE), as
e9c0d852b4db112840ba14c704766576cffd623cvboxsync; available from http://www.virtualbox.org. This file is free software;
e9c0d852b4db112840ba14c704766576cffd623cvboxsync; you can redistribute it and/or modify it under the terms of the GNU
e9c0d852b4db112840ba14c704766576cffd623cvboxsync; General Public License (GPL) as published by the Free Software
e9c0d852b4db112840ba14c704766576cffd623cvboxsync; Foundation, in version 2 as it comes in the "COPYING" file of the
e9c0d852b4db112840ba14c704766576cffd623cvboxsync; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
e9c0d852b4db112840ba14c704766576cffd623cvboxsync; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
e9c0d852b4db112840ba14c704766576cffd623cvboxsync;
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!macro Uninstall_RunExtUnInstaller un
e9c0d852b4db112840ba14c704766576cffd623cvboxsyncFunction ${un}Uninstall_RunExtUnInstaller
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Pop $0
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push $1
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push $2
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Try to run the current uninstaller
e9c0d852b4db112840ba14c704766576cffd623cvboxsync StrCpy $1 "$0\uninst.exe"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync IfFileExists "$1" run 0
e9c0d852b4db112840ba14c704766576cffd623cvboxsync MessageBox MB_OK "VirtualBox Guest Additions uninstaller not found! Path = $1" /SD IDOK
e9c0d852b4db112840ba14c704766576cffd623cvboxsync StrCpy $0 1 ; Tell the caller that we were not able to start the uninstaller
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Goto exit
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsyncrun:
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Always try to run in silent mode
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Goto run_uninst_silent
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsyncrun_uninst_silent:
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ExecWait '"$1" /S _?=$0' $2 ; Silently run uninst.exe in it's dir and don't copy it to a temp. location
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Goto handle_result
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsyncrun_uninst:
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ExecWait '"$1" _?=$0' $2 ; Run uninst.exe in it's dir and don't copy it to a temp. location
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Goto handle_result
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsynchandle_result:
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Note that here a race might going on after the user clicked on
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; "Reboot now" in the installer ran above and this installer cleaning
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; up afterwards
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; ... so try to abort the current reboot / shutdown caused by the installer ran before
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Call ${un}AbortShutdown
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync;!ifdef _DEBUG
e9c0d852b4db112840ba14c704766576cffd623cvboxsync; MessageBox MB_OK 'Debug Message: Uninstaller was called, result is: $2' /SD IDOK
e9c0d852b4db112840ba14c704766576cffd623cvboxsync;!endif
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ${Switch} $2 ; Check exit codes
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ${Case} 1 ; Aborted by user
e9c0d852b4db112840ba14c704766576cffd623cvboxsync StrCpy $0 1 ; Tell the caller that we were aborted by the user
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ${Break}
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ${Case} 2 ; Aborted by script (that might be okay)
e9c0d852b4db112840ba14c704766576cffd623cvboxsync StrCpy $0 0 ; All went well
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ${Break}
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ${Default} ; Normal exixt
e9c0d852b4db112840ba14c704766576cffd623cvboxsync StrCpy $0 0 ; All went well
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ${Break}
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ${EndSwitch}
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Goto exit
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsyncexit:
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Pop $2
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Pop $1
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push $0
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsyncFunctionEnd
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!macroend
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!insertmacro Uninstall_RunExtUnInstaller ""
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!insertmacro Uninstall_RunExtUnInstaller "un."
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!macro Uninstall_WipeInstallationDirectory un
e9c0d852b4db112840ba14c704766576cffd623cvboxsyncFunction ${un}Uninstall_WipeInstallationDirectory
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Pop $0
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push $1
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push $2
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Do some basic sanity checks for not screwing up too fatal ...
4df0640e3f60845347b8c00d3b04a9fdecfef63cvboxsync ${LogVerbose} "Removing old installation directory ($0) ..."
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ${If} $0 != $PROGRAMFILES
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ${AndIf} $0 != $PROGRAMFILES32
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ${AndIf} $0 != $PROGRAMFILES64
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ${AndIf} $0 != $COMMONFILES32
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ${AndIf} $0 != $COMMONFILES64
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ${AndIf} $0 != $WINDIR
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ${AndIf} $0 != $SYSDIR
4df0640e3f60845347b8c00d3b04a9fdecfef63cvboxsync ${LogVerbose} "Wiping ($0) ..."
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Goto wipe
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ${EndIf}
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Goto wipe_abort
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsyncwipe:
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync RMDir /r /REBOOTOK "$0"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync StrCpy $0 0 ; All went well
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Goto exit
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsyncwipe_abort:
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
4df0640e3f60845347b8c00d3b04a9fdecfef63cvboxsync ${LogVerbose} "Won't remove directory ($0)!"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync StrCpy $0 1 ; Signal some failure
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Goto exit
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsyncexit:
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Pop $2
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Pop $1
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push $0
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsyncFunctionEnd
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!macroend
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!insertmacro Uninstall_WipeInstallationDirectory ""
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!insertmacro Uninstall_WipeInstallationDirectory "un."
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync; This function cleans up an old Sun installation
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!macro Uninstall_Sun un
e9c0d852b4db112840ba14c704766576cffd623cvboxsyncFunction ${un}Uninstall_Sun
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push $0
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push $1
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push $2
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Get current installation path
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Sun VirtualBox Guest Additions" "UninstallString"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync StrCmp $0 "" exit
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Extract path
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push "$0" ; String
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push "\" ; SubString
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push "<" ; SearchDirection
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push "<" ; StrInclusionDirection
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push "0" ; IncludeSubString
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push "0" ; Loops
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push "0" ; CaseSensitive
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Call ${un}StrStrAdv
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Pop $1 ; $1 only contains the full path
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync StrCmp $1 "" exit
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Save current i8042prt info to new uninstall registry path
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Sun VirtualBox Guest Additions" ${ORG_MOUSE_PATH}
e9c0d852b4db112840ba14c704766576cffd623cvboxsync WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" ${ORG_MOUSE_PATH} $0
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Try to wipe current installation directory
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push $1 ; Push uninstaller path to stack
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Call ${un}Uninstall_WipeInstallationDirectory
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Pop $2 ; Get uninstaller exit code from stack
e9c0d852b4db112840ba14c704766576cffd623cvboxsync StrCmp $2 0 common exit ; Only process common part if exit code is 0, otherwise exit
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsynccommon:
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Make sure everything is cleaned up in case the old uninstaller did forget something
e9c0d852b4db112840ba14c704766576cffd623cvboxsync DeleteRegKey HKLM "SOFTWARE\Sun\VirtualBox Guest Additions"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync DeleteRegKey /ifempty HKLM "SOFTWARE\Sun"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Sun VirtualBox Guest Additions"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\netamd.inf"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\pcntpci5.cat"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\PCNTPCI5.sys"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Try to remove old installation directory if empty
e9c0d852b4db112840ba14c704766576cffd623cvboxsync RMDir /r /REBOOTOK "$SMPROGRAMS\Sun VirtualBox Guest Additions"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync RMDir /REBOOTOK "$1"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Get original mouse driver info and restore it
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ;ReadRegStr $0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" ${ORG_MOUSE_PATH}
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ;WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\i8042prt" "ImagePath" $0
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ;Delete "$SYSDIR\drivers\VBoxMouseNT.sys"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Delete vendor installation directory (only if completely empty)
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!if $%BUILD_TARGET_ARCH% == "x86" ; 32-bit
e9c0d852b4db112840ba14c704766576cffd623cvboxsync RMDir /REBOOTOK "$PROGRAMFILES32\Sun"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!else ; 64-bit
e9c0d852b4db112840ba14c704766576cffd623cvboxsync RMDir /REBOOTOK "$PROGRAMFILES64\Sun"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!endif
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsyncexit:
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Pop $2
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Pop $1
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Pop $0
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsyncFunctionEnd
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!macroend
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!insertmacro Uninstall_Sun ""
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!insertmacro Uninstall_Sun "un."
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync; This function cleans up an old xVM Sun installation
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!macro Uninstall_SunXVM un
e9c0d852b4db112840ba14c704766576cffd623cvboxsyncFunction ${un}Uninstall_SunXVM
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push $0
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push $1
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push $2
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Get current installation path
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Sun xVM VirtualBox Guest Additions" "UninstallString"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync StrCmp $0 "" exit
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Extract path
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push "$0" ; String
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push "\" ; SubString
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push "<" ; SearchDirection
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push "<" ; StrInclusionDirection
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push "0" ; IncludeSubString
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push "0" ; Loops
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push "0" ; CaseSensitive
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Call ${un}StrStrAdv
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Pop $1 ; $1 only contains the full path
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync StrCmp $1 "" exit
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Save current i8042prt info to new uninstall registry path
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Sun xVM VirtualBox Guest Additions" ${ORG_MOUSE_PATH}
e9c0d852b4db112840ba14c704766576cffd623cvboxsync WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" ${ORG_MOUSE_PATH} $0
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Try to wipe current installation directory
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push $1 ; Push uninstaller path to stack
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Call ${un}Uninstall_WipeInstallationDirectory
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Pop $2 ; Get uninstaller exit code from stack
e9c0d852b4db112840ba14c704766576cffd623cvboxsync StrCmp $2 0 common exit ; Only process common part if exit code is 0, otherwise exit
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsynccommon:
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Make sure everything is cleaned up in case the old uninstaller did forget something
e9c0d852b4db112840ba14c704766576cffd623cvboxsync DeleteRegKey HKLM "SOFTWARE\Sun\xVM VirtualBox Guest Additions"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync DeleteRegKey /ifempty HKLM "SOFTWARE\Sun"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Sun xVM VirtualBox Guest Additions"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\netamd.inf"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\pcntpci5.cat"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\PCNTPCI5.sys"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Try to remove old installation directory if empty
e9c0d852b4db112840ba14c704766576cffd623cvboxsync RMDir /r /REBOOTOK "$SMPROGRAMS\Sun xVM VirtualBox Guest Additions"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync RMDir /REBOOTOK "$1"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Delete vendor installation directory (only if completely empty)
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!if $%BUILD_TARGET_ARCH% == "x86" ; 32-bit
e9c0d852b4db112840ba14c704766576cffd623cvboxsync RMDir /REBOOTOK "$PROGRAMFILES32\Sun"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!else ; 64-bit
e9c0d852b4db112840ba14c704766576cffd623cvboxsync RMDir /REBOOTOK "$PROGRAMFILES64\Sun"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!endif
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Get original mouse driver info and restore it
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ;ReadRegStr $0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" ${ORG_MOUSE_PATH}
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ;WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\i8042prt" "ImagePath" $0
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ;Delete "$SYSDIR\drivers\VBoxMouseNT.sys"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsyncexit:
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Pop $2
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Pop $1
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Pop $0
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsyncFunctionEnd
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!macroend
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!insertmacro Uninstall_SunXVM ""
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!insertmacro Uninstall_SunXVM "un."
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync; This function cleans up an old innotek installation
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!macro Uninstall_Innotek un
e9c0d852b4db112840ba14c704766576cffd623cvboxsyncFunction ${un}Uninstall_Innotek
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push $0
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push $1
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push $2
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\innotek VirtualBox Guest Additions" "UninstallString"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync StrCmp $0 "" exit
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Extract path
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push "$0" ; String
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push "\" ; SubString
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push "<" ; SearchDirection
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push "<" ; StrInclusionDirection
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push "0" ; IncludeSubString
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push "0" ; Loops
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push "0" ; CaseSensitive
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Call ${un}StrStrAdv
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Pop $1 ; $1 only contains the full path
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync StrCmp $1 "" exit
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Save current i8042prt info to new uninstall registry path
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\innotek VirtualBox Guest Additions" ${ORG_MOUSE_PATH}
e9c0d852b4db112840ba14c704766576cffd623cvboxsync WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" ${ORG_MOUSE_PATH} $0
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Try to wipe current installation directory
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Push $1 ; Push uninstaller path to stack
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Call ${un}Uninstall_WipeInstallationDirectory
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Pop $2 ; Get uninstaller exit code from stack
e9c0d852b4db112840ba14c704766576cffd623cvboxsync StrCmp $2 0 common exit ; Only process common part if exit code is 0, otherwise exit
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsynccommon:
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Remove left over files which were not entirely cached by the formerly running
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; uninstaller
e9c0d852b4db112840ba14c704766576cffd623cvboxsync DeleteRegKey HKLM "SOFTWARE\innotek\VirtualBox Guest Additions"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync DeleteRegKey HKLM "SOFTWARE\innotek"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\innotek VirtualBox Guest Additions"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\VBoxGuestDrvInst.exe"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\VBoxMouseInst.exe"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\VBoxSFDrvInst.exe"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\RegCleanup.exe"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\VBoxService.exe"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\VBoxMouseInst.exe"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\innotek VirtualBox Guest Additions.url"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\uninst.exe"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\iexplore.ico"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\install.log"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\VBCoInst.dll"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\VBoxControl.exe"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\VBoxDisp.dll"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\VBoxGINA.dll"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\VBoxGuest.cat"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\VBoxGuest.inf"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\VBoxGuest.sys"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\VBoxMouse.inf"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\VBoxMouse.sys"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\VBoxVideo.cat"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\VBoxVideo.inf"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Delete /REBOOTOK "$1\VBoxVideo.sys"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Try to remove old installation directory if empty
e9c0d852b4db112840ba14c704766576cffd623cvboxsync RMDir /r /REBOOTOK "$SMPROGRAMS\innotek VirtualBox Guest Additions"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync RMDir /REBOOTOK "$1"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Delete vendor installation directory (only if completely empty)
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!if $%BUILD_TARGET_ARCH% == "x86" ; 32-bit
e9c0d852b4db112840ba14c704766576cffd623cvboxsync RMDir /REBOOTOK "$PROGRAMFILES32\innotek"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!else ; 64-bit
e9c0d852b4db112840ba14c704766576cffd623cvboxsync RMDir /REBOOTOK "$PROGRAMFILES64\innotek"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!endif
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ; Get original mouse driver info and restore it
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ;ReadRegStr $0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" ${ORG_MOUSE_PATH}
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ;WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\i8042prt" "ImagePath" $0
e9c0d852b4db112840ba14c704766576cffd623cvboxsync ;Delete "$SYSDIR\drivers\VBoxMouseNT.sys"
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsyncexit:
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Pop $2
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Pop $1
e9c0d852b4db112840ba14c704766576cffd623cvboxsync Pop $0
e9c0d852b4db112840ba14c704766576cffd623cvboxsync
e9c0d852b4db112840ba14c704766576cffd623cvboxsyncFunctionEnd
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!macroend
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!insertmacro Uninstall_Innotek ""
e9c0d852b4db112840ba14c704766576cffd623cvboxsync!insertmacro Uninstall_Innotek "un."