VBoxGuestAdditionsW2KXP.nsh revision f6afc7bc4533a33c56dadc0008389a232defb0db
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;* VBoxGuestAdditionsW2KXP.nsh - Guest Additions installation for Windows 2000/XP.
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;* Copyright (C) 2011 Oracle Corporation
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;* This file is part of VirtualBox Open Source Edition (OSE), as
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;* available from http://www.virtualbox.org. This file is free software;
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;* you can redistribute it and/or modify it under the terms of the GNU
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;* General Public License (GPL) as published by the Free Software
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;* Foundation, in version 2 as it comes in the "COPYING" file of the
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;* VirtualBox OSE distribution. VirtualBox OSE is distributed in the
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;* hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunction W2K_SetVideoResolution
78a072e1b56619e3230735ae073668311232ec94vboxsync ; NSIS only supports global vars, even in functions -- great
78a072e1b56619e3230735ae073668311232ec94vboxsync Var /GLOBAL i
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync Var /GLOBAL tmp
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync Var /GLOBAL tmppath
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync Var /GLOBAL dev_id
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync Var /GLOBAL dev_desc
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync ; Check for all required parameters
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCmp $g_iScreenX "0" exit
b0c4bd49112a99f00ef48b7a8eae6fb310a62bdavboxsync StrCmp $g_iScreenY "0" exit
b0c4bd49112a99f00ef48b7a8eae6fb310a62bdavboxsync StrCmp $g_iScreenBpp "0" exit
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Setting display parameters ($g_iScreenXx$g_iScreenY, $g_iScreenBpp BPP) ..."
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Enumerate all video devices (up to 32 at the moment, use key "MaxObjectNumber" key later)
b0c4bd49112a99f00ef48b7a8eae6fb310a62bdavboxsync ${For} $i 0 32
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ReadRegStr $tmp HKLM "HARDWARE\DEVICEMAP\VIDEO" "\Device\Video$i"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync StrCmp $tmp "" dev_not_found
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ; Extract path to video settings
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ; Ex: \Registry\Machine\System\CurrentControlSet\Control\Video\{28B74D2B-F0A9-48E0-8028-D76F6BB1AE65}\0000
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ; Or: \Registry\Machine\System\CurrentControlSet\Control\Video\vboxvideo\Device0
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ; Result: Machine\System\CurrentControlSet\Control\Video\{28B74D2B-F0A9-48E0-8028-D76F6BB1AE65}\0000
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync Push "$tmp" ; String
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync Push "\" ; SubString
78a072e1b56619e3230735ae073668311232ec94vboxsync Push ">" ; SearchDirection
d5d45608052fd506e4114bf112df6efae7fcd8a7vboxsync Push ">" ; StrInclusionDirection
9be72bf71509dd721ffa1df70ead200abf30afd8vboxsync Push "0" ; IncludeSubString
e7184fff6d89903aed623860629a05047960ac2dvboxsync Push "2" ; Loops
e7184fff6d89903aed623860629a05047960ac2dvboxsync Push "0" ; CaseSensitive
e7184fff6d89903aed623860629a05047960ac2dvboxsync Call StrStrAdv
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $tmppath ; $1 only contains the full path
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync StrCmp $tmppath "" dev_not_found
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ; Get device description
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ReadRegStr $dev_desc HKLM "$tmppath" "Device Description"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync!ifdef _DEBUG
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync DetailPrint "Registry path: $tmppath"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync DetailPrint "Registry path to device name: $temp"
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Detected video device: $dev_desc"
78a072e1b56619e3230735ae073668311232ec94vboxsync ${If} $dev_desc == "VirtualBox Graphics Adapter"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync DetailPrint "VirtualBox video device found!"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync Goto dev_found
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync Goto dev_not_found
78a072e1b56619e3230735ae073668311232ec94vboxsync ; If we're on Windows 2000, skip the ID detection ...
78a072e1b56619e3230735ae073668311232ec94vboxsync ${If} $g_strWinVersion == "2000"
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto change_res
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto dev_found_detect_id
78a072e1b56619e3230735ae073668311232ec94vboxsyncdev_found_detect_id:
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCpy $i 0 ; Start at index 0
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Detecting device ID ..."
78a072e1b56619e3230735ae073668311232ec94vboxsyncdev_found_detect_id_loop:
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Resolve real path to hardware instance "{GUID}"
78a072e1b56619e3230735ae073668311232ec94vboxsync EnumRegKey $dev_id HKLM "SYSTEM\CurrentControlSet\Control\Video" $i
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCmp $dev_id "" dev_not_found ; No more entries? Jump out
78a072e1b56619e3230735ae073668311232ec94vboxsync!ifdef _DEBUG
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Got device ID: $dev_id"
78a072e1b56619e3230735ae073668311232ec94vboxsync ReadRegStr $dev_desc HKLM "SYSTEM\CurrentControlSet\Control\Video\$dev_id\0000" "Device Description" ; Try to read device name
08c4185261c17943cff6cc94522579696eeeb478vboxsync ${If} $dev_desc == "VirtualBox Graphics Adapter"
08c4185261c17943cff6cc94522579696eeeb478vboxsync DetailPrint "Device ID of $dev_desc: $dev_id"
08c4185261c17943cff6cc94522579696eeeb478vboxsync Goto change_res
08c4185261c17943cff6cc94522579696eeeb478vboxsync IntOp $i $i + 1 ; Increment index
08c4185261c17943cff6cc94522579696eeeb478vboxsync goto dev_found_detect_id_loop
08c4185261c17943cff6cc94522579696eeeb478vboxsyncdev_not_found:
08c4185261c17943cff6cc94522579696eeeb478vboxsync DetailPrint "No VirtualBox video device (yet) detected! No custom mode set."
08c4185261c17943cff6cc94522579696eeeb478vboxsync!ifdef _DEBUG
08c4185261c17943cff6cc94522579696eeeb478vboxsync DetailPrint "Device description: $dev_desc"
08c4185261c17943cff6cc94522579696eeeb478vboxsync DetailPrint "Device ID: $dev_id"
08c4185261c17943cff6cc94522579696eeeb478vboxsync Var /GLOBAL reg_path_device
08c4185261c17943cff6cc94522579696eeeb478vboxsync Var /GLOBAL reg_path_monitor
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Custom mode set: Platform is Windows $g_strWinVersion"
08c4185261c17943cff6cc94522579696eeeb478vboxsync ${If} $g_strWinVersion == "2000"
08c4185261c17943cff6cc94522579696eeeb478vboxsync ${OrIf} $g_strWinVersion == "Vista"
9726c89eba6e777f3eb4d57f65ca6171a2241d29vboxsync StrCpy $reg_path_device "SYSTEM\CurrentControlSet\SERVICES\VBoxVideo\Device0"
08c4185261c17943cff6cc94522579696eeeb478vboxsync StrCpy $reg_path_monitor "SYSTEM\CurrentControlSet\SERVICES\VBoxVideo\Device0\Mon00000001"
08c4185261c17943cff6cc94522579696eeeb478vboxsync ${ElseIf} $g_strWinVersion == "XP"
08c4185261c17943cff6cc94522579696eeeb478vboxsync ${OrIf} $g_strWinVersion == "7"
da31d917654e0b617e7a9bf8b0cf786136edf8e8vboxsync StrCpy $reg_path_device "SYSTEM\CurrentControlSet\Control\Video\$dev_id\0000"
08c4185261c17943cff6cc94522579696eeeb478vboxsync StrCpy $reg_path_monitor "SYSTEM\CurrentControlSet\Control\VIDEO\$dev_id\0000\Mon00000001"
08c4185261c17943cff6cc94522579696eeeb478vboxsync DetailPrint "Custom mode set: Windows $g_strWinVersion not supported yet"
08c4185261c17943cff6cc94522579696eeeb478vboxsync ; Write the new value in the adapter config (VBoxVideo.sys) using hex values in binary format
08c4185261c17943cff6cc94522579696eeeb478vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" registry write HKLM $reg_path_device CustomXRes REG_BIN $g_iScreenX DWORD'
08c4185261c17943cff6cc94522579696eeeb478vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" registry write HKLM $reg_path_device CustomYRes REG_BIN $g_iScreenY DWORD'
08c4185261c17943cff6cc94522579696eeeb478vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" registry write HKLM $reg_path_device CustomBPP REG_BIN $g_iScreenBpp DWORD'
78a072e1b56619e3230735ae073668311232ec94vboxsync ; ... and tell Windows to use that mode on next start!
08c4185261c17943cff6cc94522579696eeeb478vboxsync WriteRegDWORD HKCC $reg_path_device "DefaultSettings.XResolution" "$g_iScreenX"
08c4185261c17943cff6cc94522579696eeeb478vboxsync WriteRegDWORD HKCC $reg_path_device "DefaultSettings.YResolution" "$g_iScreenY"
78a072e1b56619e3230735ae073668311232ec94vboxsync WriteRegDWORD HKCC $reg_path_device "DefaultSettings.BitsPerPixel" "$g_iScreenBpp"
08c4185261c17943cff6cc94522579696eeeb478vboxsync WriteRegDWORD HKCC $reg_path_monitor "DefaultSettings.XResolution" "$g_iScreenX"
08c4185261c17943cff6cc94522579696eeeb478vboxsync WriteRegDWORD HKCC $reg_path_monitor "DefaultSettings.YResolution" "$g_iScreenY"
08c4185261c17943cff6cc94522579696eeeb478vboxsync WriteRegDWORD HKCC $reg_path_monitor "DefaultSettings.BitsPerPixel" "$g_iScreenBpp"
08c4185261c17943cff6cc94522579696eeeb478vboxsync DetailPrint "Custom mode set to $g_iScreenXx$g_iScreenY, $g_iScreenBpp BPP on next restart."
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunction W2K_Prepare
08c4185261c17943cff6cc94522579696eeeb478vboxsync ${If} $g_bNoVBoxServiceExit == "false"
08c4185261c17943cff6cc94522579696eeeb478vboxsync ; Stop / kill VBoxService
78a072e1b56619e3230735ae073668311232ec94vboxsync Call StopVBoxService
08c4185261c17943cff6cc94522579696eeeb478vboxsync ${If} $g_bNoVBoxTrayExit == "false"
08c4185261c17943cff6cc94522579696eeeb478vboxsync ; Stop / kill VBoxTray
08c4185261c17943cff6cc94522579696eeeb478vboxsync Call StopVBoxTray
08c4185261c17943cff6cc94522579696eeeb478vboxsync ; Delete VBoxService from registry
08c4185261c17943cff6cc94522579696eeeb478vboxsync DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Run" "VBoxService"
08c4185261c17943cff6cc94522579696eeeb478vboxsync ; Delete old VBoxService.exe from install directory (replaced by VBoxTray.exe)
da31d917654e0b617e7a9bf8b0cf786136edf8e8vboxsync Delete /REBOOTOK "$INSTDIR\VBoxService.exe"
08c4185261c17943cff6cc94522579696eeeb478vboxsyncFunction W2K_CopyFiles
da31d917654e0b617e7a9bf8b0cf786136edf8e8vboxsync SetOutPath "$INSTDIR"
08c4185261c17943cff6cc94522579696eeeb478vboxsync ; Video driver
08c4185261c17943cff6cc94522579696eeeb478vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideo.sys"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxDisp.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Mouse driver
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxMouse.sys"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxMouse.inf"
78a072e1b56619e3230735ae073668311232ec94vboxsync!ifdef VBOX_SIGN_ADDITIONS
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxMouse.cat"
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Guest driver
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxGuest.sys"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxGuest.inf"
78a072e1b56619e3230735ae073668311232ec94vboxsync!ifdef VBOX_SIGN_ADDITIONS
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxGuest.cat"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ; Guest driver files
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxTray.exe"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxControl.exe" ; Not used by W2K and up, but required by the .INF file
78a072e1b56619e3230735ae073668311232ec94vboxsync ; WHQL fake
78a072e1b56619e3230735ae073668311232ec94vboxsync!ifdef WHQL_FAKE
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxWHQLFake.exe"
78a072e1b56619e3230735ae073668311232ec94vboxsync SetOutPath $g_strSystemDir
78a072e1b56619e3230735ae073668311232ec94vboxsync ; VBoxService
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxService.exe" ; Only used by W2K and up (for Shared Folders at the moment)
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync!if $%VBOX_WITH_WDDM% == "1"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ${If} $g_bWithWDDM == "true"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ; WDDM Video driver
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync SetOutPath "$INSTDIR"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync !ifdef VBOX_SIGN_ADDITIONS
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideoWddm.cat"
84ac4fe6468b328aadfe9994176e00504338a47avboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideoWddm.sys"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideoWddm.inf"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxDispD3D.dll"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync !if $%VBOX_WITH_CROGL% == "1"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLarrayspu.dll"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLcrutil.dll"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLerrorspu.dll"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpackspu.dll"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpassthroughspu.dll"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLfeedbackspu.dll"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGL.dll"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxD3D9wddm.dll"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\wined3dwddm.dll"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync !endif ; $%VBOX_WITH_CROGL% == "1"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxDispD3D-x86.dll"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync !if $%VBOX_WITH_CROGL% == "1"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLarrayspu-x86.dll"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLcrutil-x86.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLerrorspu-x86.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpackspu-x86.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpassthroughspu-x86.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLfeedbackspu-x86.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGL-x86.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxD3D9wddm-x86.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\wined3dwddm-x86.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync !endif ; $%VBOX_WITH_CROGL% == "1"
78a072e1b56619e3230735ae073668311232ec94vboxsync !endif ; $%BUILD_TARGET_ARCH% == "amd64"
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto doneCr
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif ; $%VBOX_WITH_WDDM% == "1"
78a072e1b56619e3230735ae073668311232ec94vboxsync!if $%VBOX_WITH_CROGL% == "1"
78a072e1b56619e3230735ae073668311232ec94vboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
78a072e1b56619e3230735ae073668311232ec94vboxsync !define LIBRARY_X64 ; Enable installation of 64-bit libraries
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCpy $0 "$TEMP\VBoxGuestAdditions\VBoxOGL"
78a072e1b56619e3230735ae073668311232ec94vboxsync CreateDirectory "$0"
78a072e1b56619e3230735ae073668311232ec94vboxsync !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED "$%PATH_OUT%\bin\additions\VBoxOGLarrayspu.dll" "$g_strSystemDir\VBoxOGLarrayspu.dll" "$0"
78a072e1b56619e3230735ae073668311232ec94vboxsync !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED "$%PATH_OUT%\bin\additions\VBoxOGLcrutil.dll" "$g_strSystemDir\VBoxOGLcrutil.dll" "$0"
78a072e1b56619e3230735ae073668311232ec94vboxsync !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED "$%PATH_OUT%\bin\additions\VBoxOGLerrorspu.dll" "$g_strSystemDir\VBoxOGLerrorspu.dll" "$0"
78a072e1b56619e3230735ae073668311232ec94vboxsync !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED "$%PATH_OUT%\bin\additions\VBoxOGLpackspu.dll" "$g_strSystemDir\VBoxOGLpackspu.dll" "$0"
78a072e1b56619e3230735ae073668311232ec94vboxsync !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED "$%PATH_OUT%\bin\additions\VBoxOGLpassthroughspu.dll" "$g_strSystemDir\VBoxOGLpassthroughspu.dll" "$0"
78a072e1b56619e3230735ae073668311232ec94vboxsync !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED "$%PATH_OUT%\bin\additions\VBoxOGLfeedbackspu.dll" "$g_strSystemDir\VBoxOGLfeedbackspu.dll" "$0"
78a072e1b56619e3230735ae073668311232ec94vboxsync !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED "$%PATH_OUT%\bin\additions\VBoxOGL.dll" "$g_strSystemDir\VBoxOGL.dll" "$0"
78a072e1b56619e3230735ae073668311232ec94vboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
78a072e1b56619e3230735ae073668311232ec94vboxsync !undef LIBRARY_X64 ; Disable installation of 64-bit libraries
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCpy $0 "$TEMP\VBoxGuestAdditions\VBoxOGL32"
78a072e1b56619e3230735ae073668311232ec94vboxsync CreateDirectory "$0"
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Only 64-bit installer: Also copy 32-bit DLLs on 64-bit target arch in
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Wow64 node (32-bit sub system). Note that $SYSDIR contains the 32-bit
78a072e1b56619e3230735ae073668311232ec94vboxsync ; path after calling EnableX64FSRedirection
78a072e1b56619e3230735ae073668311232ec94vboxsync ${EnableX64FSRedirection}
78a072e1b56619e3230735ae073668311232ec94vboxsync !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxOGLarrayspu.dll" "$SYSDIR\VBoxOGLarrayspu.dll" "$0"
78a072e1b56619e3230735ae073668311232ec94vboxsync !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxOGLcrutil.dll" "$SYSDIR\VBoxOGLcrutil.dll" "$0"
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxOGLerrorspu.dll" "$SYSDIR\VBoxOGLerrorspu.dll" "$0"
78a072e1b56619e3230735ae073668311232ec94vboxsync !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxOGLpackspu.dll" "$SYSDIR\VBoxOGLpackspu.dll" "$0"
78a072e1b56619e3230735ae073668311232ec94vboxsync !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxOGLpassthroughspu.dll" "$SYSDIR\VBoxOGLpassthroughspu.dll" "$0"
78a072e1b56619e3230735ae073668311232ec94vboxsync !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxOGLfeedbackspu.dll" "$SYSDIR\VBoxOGLfeedbackspu.dll" "$0"
78a072e1b56619e3230735ae073668311232ec94vboxsync !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxOGL.dll" "$SYSDIR\VBoxOGL.dll" "$0"
78a072e1b56619e3230735ae073668311232ec94vboxsync ${DisableX64FSRedirection}
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif ; VBOX_WITH_CROGL
78a072e1b56619e3230735ae073668311232ec94vboxsync!ifdef WHQL_FAKE
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunction W2K_WHQLFakeOn
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync StrCmp $g_bFakeWHQL "true" do
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Turning off WHQL protection..."
78a072e1b56619e3230735ae073668311232ec94vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxWHQLFake.exe" "ignore"'
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsyncFunction W2K_WHQLFakeOff
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCmp $g_bFakeWHQL "true" do
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Turning back on WHQL protection..."
78a072e1b56619e3230735ae073668311232ec94vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxWHQLFake.exe" "warn"'
156101683587682f6d63b4af322f611d90b77fcevboxsyncFunction W2K_InstallFiles
156101683587682f6d63b4af322f611d90b77fcevboxsync ; The Shared Folder IFS goes to the system directory
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync FILE /oname=$g_strSystemDir\drivers\VBoxSF.sys "$%PATH_OUT%\bin\additions\VBoxSF.sys"
78a072e1b56619e3230735ae073668311232ec94vboxsync !insertmacro ReplaceDLL "$%PATH_OUT%\bin\additions\VBoxMRXNP.dll" "$g_strSystemDir\VBoxMRXNP.dll" "$INSTDIR"
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync AccessControl::GrantOnFile "$g_strSystemDir\VBoxMRXNP.dll" "(BU)" "GenericRead"
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync ; The VBoxTray hook DLL also goes to the system directory; it might be locked
78a072e1b56619e3230735ae073668311232ec94vboxsync !insertmacro ReplaceDLL "$%PATH_OUT%\bin\additions\VBoxHook.dll" "$g_strSystemDir\VBoxHook.dll" "$INSTDIR"
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync AccessControl::GrantOnFile "$g_strSystemDir\VBoxHook.dll" "(BU)" "GenericRead"
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync DetailPrint "Installing drivers ..."
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync Push $0 ; For fetching results
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync SetOutPath "$INSTDIR"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ${If} $g_bNoGuestDrv == "false"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync DetailPrint "Installing guest driver ..."
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" driver install "$INSTDIR\VBoxGuest.inf" "$INSTDIR\install_drivers.log"'
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync Pop $0 ; Ret value
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync LogText "Guest driver returned: $0"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync IntCmp $0 0 +1 error error ; Check ret value (0=OK, 1=Error)
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync LogText "Guest driver installation skipped!"
78a072e1b56619e3230735ae073668311232ec94vboxsync ${If} $g_bNoVideoDrv == "false"
78a072e1b56619e3230735ae073668311232ec94vboxsync ${If} $g_bWithWDDM == "true"
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Installing WDDM video driver ..."
78a072e1b56619e3230735ae073668311232ec94vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" driver install "$INSTDIR\VBoxVideoWddm.inf" "$INSTDIR\install_drivers.log"'
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Installing video driver ..."
78a072e1b56619e3230735ae073668311232ec94vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" driver install "$INSTDIR\VBoxVideo.inf" "$INSTDIR\install_drivers.log"'
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $0 ; Ret value
78a072e1b56619e3230735ae073668311232ec94vboxsync LogText "Video driver returned: $0"
78a072e1b56619e3230735ae073668311232ec94vboxsync IntCmp $0 0 +1 error error ; Check ret value (0=OK, 1=Error)
78a072e1b56619e3230735ae073668311232ec94vboxsync LogText "Video driver installation skipped!"
78a072e1b56619e3230735ae073668311232ec94vboxsync ${If} $g_bNoMouseDrv == "false"
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Installing mouse driver ..."
78a072e1b56619e3230735ae073668311232ec94vboxsync ; The mouse filter does not contain any device IDs but a "DefaultInstall" section;
78a072e1b56619e3230735ae073668311232ec94vboxsync ; so this .INF file needs to be installed using "InstallHinfSection" which is implemented
78a072e1b56619e3230735ae073668311232ec94vboxsync ; with VBoxDrvInst's "driver executeinf" routine
78a072e1b56619e3230735ae073668311232ec94vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" driver executeinf "$INSTDIR\VBoxMouse.inf"'
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $0 ; Ret value
78a072e1b56619e3230735ae073668311232ec94vboxsync LogText "Mouse driver returned: $0"
78a072e1b56619e3230735ae073668311232ec94vboxsync IntCmp $0 0 +1 error error ; Check ret value (0=OK, 1=Error)
78a072e1b56619e3230735ae073668311232ec94vboxsync LogText "Mouse driver installation skipped!"
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Create the VBoxService service
78a072e1b56619e3230735ae073668311232ec94vboxsync ; No need to stop/remove the service here! Do this only on uninstallation!
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Installing VirtualBox service ..."
78a072e1b56619e3230735ae073668311232ec94vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" service create "VBoxService" "VirtualBox Guest Additions Service" 16 2 "system32\VBoxService.exe" "Base"'
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $0 ; Ret value
78a072e1b56619e3230735ae073668311232ec94vboxsync LogText "VBoxService returned: $0"
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Set service description
78a072e1b56619e3230735ae073668311232ec94vboxsync WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\VBoxService" "Description" "Manages VM runtime information, time synchronization, remote sysprep execution and miscellaneous utilities for guest operating systems."
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Installing Shared Folders service ..."
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync ; Create the Shared Folders service ...
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync ; No need to stop/remove the service here! Do this only on uninstallation!
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" service create "VBoxSF" "VirtualBox Shared Folders" 2 1 "system32\drivers\VBoxSF.sys" "NetworkProvider"'
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync ; ... and the link to the network provider
78a072e1b56619e3230735ae073668311232ec94vboxsync WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\VBoxSF\NetworkProvider" "DeviceName" "\Device\VBoxMiniRdr"
78a072e1b56619e3230735ae073668311232ec94vboxsync WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\VBoxSF\NetworkProvider" "Name" "VirtualBox Shared Folders"
78a072e1b56619e3230735ae073668311232ec94vboxsync WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\VBoxSF\NetworkProvider" "ProviderPath" "$SYSDIR\VBoxMRXNP.dll"
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync ; Add default network providers (if not present or corrupted)
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" netprovider add WebClient'
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" netprovider add LanmanWorkstation'
78a072e1b56619e3230735ae073668311232ec94vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" netprovider add RDPNP'
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Add the shared folders network provider
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Adding network provider (Order = $g_iSfOrder) ..."
78a072e1b56619e3230735ae073668311232ec94vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" netprovider add VBoxSF $g_iSfOrder'
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $0 ; Ret value
78a072e1b56619e3230735ae073668311232ec94vboxsync IntCmp $0 0 +1 error error ; Check ret value (0=OK, 1=Error)
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync!if $%VBOX_WITH_CROGL% == "1"
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync ${If} $g_bWithWDDM == "true"
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync ; Nothing to do here
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Installing 3D OpenGL support ..."
78a072e1b56619e3230735ae073668311232ec94vboxsync WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\VBoxOGL" "Version" 2
78a072e1b56619e3230735ae073668311232ec94vboxsync WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\VBoxOGL" "DriverVersion" 1
78a072e1b56619e3230735ae073668311232ec94vboxsync WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\VBoxOGL" "Flags" 1
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync WriteRegStr HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\VBoxOGL" "Dll" "VBoxOGL.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync!if $%BUILD_TARGET_ARCH% == "amd64"
78a072e1b56619e3230735ae073668311232ec94vboxsync SetRegView 32
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Write additional keys required for Windows XP, Vista and 7 64-bit (but for 32-bit stuff)
78a072e1b56619e3230735ae073668311232ec94vboxsync ${If} $g_strWinVersion == '7'
78a072e1b56619e3230735ae073668311232ec94vboxsync ${OrIf} $g_strWinVersion == 'Vista'
78a072e1b56619e3230735ae073668311232ec94vboxsync ${OrIf} $g_strWinVersion == '2003' ; Windows XP 64-bit is a renamed Windows 2003 really
78a072e1b56619e3230735ae073668311232ec94vboxsync WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\VBoxOGL" "Version" 2
78a072e1b56619e3230735ae073668311232ec94vboxsync WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\VBoxOGL" "DriverVersion" 1
78a072e1b56619e3230735ae073668311232ec94vboxsync WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\VBoxOGL" "Flags" 1
78a072e1b56619e3230735ae073668311232ec94vboxsync WriteRegStr HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\VBoxOGL" "Dll" "VBoxOGL.dll"
40d48df41519667fa639cfe552c097210b9685acvboxsync SetRegView 64
78a072e1b56619e3230735ae073668311232ec94vboxsync Abort "ERROR: Could not install files for Windows 2000 / XP / Vista! Installation aborted."
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunction W2K_Main
78a072e1b56619e3230735ae073668311232ec94vboxsync SetOutPath "$INSTDIR"
78a072e1b56619e3230735ae073668311232ec94vboxsync SetOverwrite on
78a072e1b56619e3230735ae073668311232ec94vboxsync Call W2K_Prepare
78a072e1b56619e3230735ae073668311232ec94vboxsync Call W2K_CopyFiles
78a072e1b56619e3230735ae073668311232ec94vboxsync!ifdef WHQL_FAKE
78a072e1b56619e3230735ae073668311232ec94vboxsync Call W2K_WHQLFakeOn
78a072e1b56619e3230735ae073668311232ec94vboxsync Call W2K_InstallFiles
78a072e1b56619e3230735ae073668311232ec94vboxsync!ifdef WHQL_FAKE
78a072e1b56619e3230735ae073668311232ec94vboxsync Call W2K_WHQLFakeOff
78a072e1b56619e3230735ae073668311232ec94vboxsync Call W2K_SetVideoResolution
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync!macro W2K_UninstallInstDir un
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunction ${un}W2K_UninstallInstDir
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\VBoxVideo.sys"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\VBoxVideo.inf"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\VBoxVideo.cat"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\VBoxDisp.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\VBoxMouse.sys"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\VBoxMouse.inf"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\VBoxMouse.cat"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\VBoxTray.exe"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\VBoxGuest.sys"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\VBoxGuest.inf"
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync Delete /REBOOTOK "$INSTDIR\VBoxGuest.cat"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\VBCoInst.dll" ; Deprecated, does not get installed anymore
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync Delete /REBOOTOK "$INSTDIR\VBoxControl.exe"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\VBoxService.exe" ; Deprecated, does not get installed anymore
78a072e1b56619e3230735ae073668311232ec94vboxsync!if $%VBOX_WITH_WDDM% == "1"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxVideoWddm.cat"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxVideoWddm.sys"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxVideoWddm.inf"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxDispD3D.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxOGLarrayspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxOGLcrutil.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxOGLerrorspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxOGLpackspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxOGLpassthroughspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxOGLfeedbackspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxOGL.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxD3D9wddm.dll"
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\wined3dwddm.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Try to delete libWine in case it is there from old installation
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\libWine.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxDispD3D-x86.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxOGLarrayspu-x86.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxOGLcrutil-x86.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxOGLerrorspu-x86.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxOGLpackspu-x86.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxOGLpassthroughspu-x86.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxOGLfeedbackspu-x86.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxOGL-x86.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxD3D9wddm-x86.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\wined3dwddm-x86.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync !endif ; $%BUILD_TARGET_ARCH% == "amd64"
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif ; $%VBOX_WITH_WDDM% == "1"
78a072e1b56619e3230735ae073668311232ec94vboxsync ; WHQL fake
78a072e1b56619e3230735ae073668311232ec94vboxsync!ifdef WHQL_FAKE
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\VBoxWHQLFake.exe"
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync Delete /REBOOTOK "$INSTDIR\install.log"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\install_ui.log"
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro W2K_UninstallInstDir ""
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync!insertmacro W2K_UninstallInstDir "un."
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync!macro W2K_Uninstall un
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsyncFunction ${un}W2K_Uninstall
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync ; Remove VirtualBox video driver
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync DetailPrint "Uninstalling video driver ..."
78a072e1b56619e3230735ae073668311232ec94vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" driver uninstall "$INSTDIR\VBoxVideo.inf'
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync Pop $0 ; Ret value
78a072e1b56619e3230735ae073668311232ec94vboxsync ; @todo Add error handling here!
78a072e1b56619e3230735ae073668311232ec94vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" service delete VBoxVideo'
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\drivers\VBoxVideo.sys"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\VBoxDisp.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Remove video driver
78a072e1b56619e3230735ae073668311232ec94vboxsync!if $%VBOX_WITH_WDDM% == "1"
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Uninstalling WDDM video driver ..."
d5d45608052fd506e4114bf112df6efae7fcd8a7vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" driver install "$INSTDIR\VBoxVideoWddm.inf"'
9be72bf71509dd721ffa1df70ead200abf30afd8vboxsync Pop $0 ; Ret value
d5d45608052fd506e4114bf112df6efae7fcd8a7vboxsync ; Always try to remove both VBoxVideoWddm & VBoxVideo services no matter what is installed currently
9be72bf71509dd721ffa1df70ead200abf30afd8vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" service delete VBoxVideoWddm'
9be72bf71509dd721ffa1df70ead200abf30afd8vboxsync Pop $0 ; Ret value
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync ;misha> @todo driver file removal (as well as service removal) should be done as driver package uninstall
78a072e1b56619e3230735ae073668311232ec94vboxsync ; could be done with "VBoxDrvInst.exe /u", e.g. by passing additional arg to it denoting that driver package is to be uninstalled
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\drivers\VBoxVideoWddm.sys"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\VBoxDispD3D.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif ; $%VBOX_WITH_WDDM% == "1"
78a072e1b56619e3230735ae073668311232ec94vboxsync!if $%VBOX_WITH_CROGL% == "1"
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Removing 3D graphics support ..."
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\VBoxOGLarrayspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\VBoxOGLcrutil.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\VBoxOGLerrorspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\VBoxOGLpackspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\VBoxOGLpassthroughspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\VBoxOGLfeedbackspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\VBoxOGL.dll"
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync ; Remove D3D stuff
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync ; @todo add a feature flag to only remove if installed explicitly
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync Delete /REBOOTOK "$g_strSystemDir\libWine.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\VBoxD3D8.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\VBoxD3D9.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\wined3d.dll"
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync ; Update DLL cache
78a072e1b56619e3230735ae073668311232ec94vboxsync IfFileExists "$g_strSystemDir\dllcache\msd3d8.dll" 0 +2
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\dllcache\d3d8.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Rename /REBOOTOK "$g_strSystemDir\dllcache\msd3d8.dll" "$g_strSystemDir\dllcache\d3d8.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync IfFileExists g_strSystemDir\dllcache\msd3d9.dll" 0 +2
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\dllcache\d3d9.dll"
ca7f7f38dae7697e6b3046bf4d80dfc98eb59210vboxsync Rename /REBOOTOK "$g_strSystemDir\dllcache\msd3d9.dll" "$g_strSystemDir\dllcache\d3d9.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Restore original DX DLLs
78a072e1b56619e3230735ae073668311232ec94vboxsync IfFileExists "$g_strSystemDir\msd3d8.dll" 0 +2
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\d3d8.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Rename /REBOOTOK "$g_strSystemDir\msd3d8.dll" "$g_strSystemDir\d3d8.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync IfFileExists "$g_strSystemDir\msd3d9.dll" 0 +2
eb563d667bee4ab4ac0ba8be38d68f911f1d53eavboxsync Delete /REBOOTOK "$g_strSystemDir\d3d9.dll"
eb563d667bee4ab4ac0ba8be38d68f911f1d53eavboxsync Rename /REBOOTOK "$g_strSystemDir\msd3d9.dll" "$g_strSystemDir\d3d9.dll"
eb563d667bee4ab4ac0ba8be38d68f911f1d53eavboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync ; Only 64-bit installer: Also remove 32-bit DLLs on 64-bit target arch in Wow64 node
78a072e1b56619e3230735ae073668311232ec94vboxsync ${EnableX64FSRedirection}
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$SYSDIR\VBoxOGLarrayspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$SYSDIR\VBoxOGLcrutil.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$SYSDIR\VBoxOGLerrorspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$SYSDIR\VBoxOGLpackspu.dll"
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync Delete /REBOOTOK "$SYSDIR\VBoxOGLpassthroughspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$SYSDIR\VBoxOGLfeedbackspu.dll"
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync Delete /REBOOTOK "$SYSDIR\VBoxOGL.dll"
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync ; Remove D3D stuff
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync ; @todo add a feature flag to only remove if installed explicitly
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync Delete /REBOOTOK "$SYSDIR\libWine.dll"
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync Delete /REBOOTOK "$SYSDIR\VBoxD3D8.dll"
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync Delete /REBOOTOK "$SYSDIR\VBoxD3D9.dll"
36dd9dabf3f64468206cb74145b51245cf7fde54vboxsync Delete /REBOOTOK "$SYSDIR\wined3d.dll"
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync ; Update DLL cache
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync IfFileExists "$SYSDIR\dllcache\msd3d8.dll" 0 +2
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync Delete /REBOOTOK "$SYSDIR\dllcache\d3d8.dll"
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync Rename /REBOOTOK "$SYSDIR\dllcache\msd3d8.dll" "$SYSDIR\dllcache\d3d8.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync IfFileExists "$SYSDIR\dllcache\msd3d9.dll" 0 +2
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$SYSDIR\dllcache\d3d9.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Rename /REBOOTOK "$SYSDIR\dllcache\msd3d9.dll" "$SYSDIR\dllcache\d3d9.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Restore original DX DLLs
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync IfFileExists "$SYSDIR\msd3d8.dll" 0 +2
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$SYSDIR\d3d8.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Rename /REBOOTOK "$SYSDIR\msd3d8.dll" "$SYSDIR\d3d8.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync IfFileExists "$SYSDIR\msd3d9.dll" 0 +2
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$SYSDIR\d3d9.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync Rename /REBOOTOK "$SYSDIR\msd3d9.dll" "$SYSDIR\d3d9.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync DeleteRegKey HKLM "SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\VBoxOGL"
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync ${DisableX64FSRedirection}
78a072e1b56619e3230735ae073668311232ec94vboxsync !endif ; amd64
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\VBoxOGL"
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif ; VBOX_WITH_CROGL
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Remove mouse driver
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync DetailPrint "Removing mouse driver ..."
78a072e1b56619e3230735ae073668311232ec94vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" service delete VBoxMouse'
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $0 ; Ret value
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\drivers\VBoxMouse.sys"
e3197fda68ad1e45cc3004f5b58a326a5270aa8fvboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" registry delmultisz "SYSTEM\CurrentControlSet\Control\Class\{4D36E96F-E325-11CE-BFC1-08002BE10318}" "UpperFilters" "VBoxMouse"'
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $0 ; Ret value
78a072e1b56619e3230735ae073668311232ec94vboxsync ; @todo Add error handling here!
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Delete the VBoxService service
78a072e1b56619e3230735ae073668311232ec94vboxsync Call ${un}StopVBoxService
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" service delete VBoxService'
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $0 ; Ret value
78a072e1b56619e3230735ae073668311232ec94vboxsync DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Run" "VBoxService"
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync Delete /REBOOTOK "$g_strSystemDir\VBoxService.exe"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\VBoxGINA.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon" "GinaDLL"
78a072e1b56619e3230735ae073668311232ec94vboxsync ${If} $0 == "VBoxGINA.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Removing GINA ..."
78a072e1b56619e3230735ae073668311232ec94vboxsync DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon" "GinaDLL"
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Delete VBoxTray
78a072e1b56619e3230735ae073668311232ec94vboxsync Call ${un}StopVBoxTray
78a072e1b56619e3230735ae073668311232ec94vboxsync DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Run" "VBoxTray"
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Remove guest driver
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Removing guest driver ..."
85668909c68b5d0e67c89d6042535b41c4bffeccvboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" driver uninstall "$INSTDIR\VBoxGuest.inf"'
85668909c68b5d0e67c89d6042535b41c4bffeccvboxsync Pop $0 ; Ret value
78a072e1b56619e3230735ae073668311232ec94vboxsync ; @todo Add error handling here!
78a072e1b56619e3230735ae073668311232ec94vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" service delete VBoxGuest'
034b3d77b1a08b77b1fa9bfd7489997421713f15vboxsync Pop $0 ; Ret value
034b3d77b1a08b77b1fa9bfd7489997421713f15vboxsync Delete /REBOOTOK "$g_strSystemDir\drivers\VBoxGuest.sys"
034b3d77b1a08b77b1fa9bfd7489997421713f15vboxsync Delete /REBOOTOK "$g_strSystemDir\VBCoInst.dll" ; Deprecated, does not get installed anymore
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\VBoxTray.exe"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\VBoxHook.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Run" "VBoxTray" ; Remove VBoxTray autorun
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\VBoxControl.exe"
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Remove shared folders driver
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Removing shared folders driver ..."
78a072e1b56619e3230735ae073668311232ec94vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" netprovider remove VBoxSF'
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $0 ; Ret value
78a072e1b56619e3230735ae073668311232ec94vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" service delete VBoxSF'
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync Pop $0 ; Ret value
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\VBoxMRXNP.dll" ; The network provider DLL will be locked
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$g_strSystemDir\drivers\VBoxSF.sys"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync!insertmacro W2K_Uninstall ""
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro W2K_Uninstall "un."