VBoxGuestAdditionsW2KXP.nsh revision f6afc7bc4533a33c56dadc0008389a232defb0db
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;*
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;* @file
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;* VBoxGuestAdditionsW2KXP.nsh - Guest Additions installation for Windows 2000/XP.
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;*
2f14f4556ae74ad40719bc9690534693abb71868vboxsync
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;*
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;* Copyright (C) 2011 Oracle Corporation
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;*
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.
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;*
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunction W2K_SetVideoResolution
78a072e1b56619e3230735ae073668311232ec94vboxsync
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
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync ; Check for all required parameters
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCmp $g_iScreenX "0" exit
b0c4bd49112a99f00ef48b7a8eae6fb310a62bdavboxsync StrCmp $g_iScreenY "0" exit
b0c4bd49112a99f00ef48b7a8eae6fb310a62bdavboxsync StrCmp $g_iScreenBpp "0" exit
b0c4bd49112a99f00ef48b7a8eae6fb310a62bdavboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Setting display parameters ($g_iScreenXx$g_iScreenY, $g_iScreenBpp BPP) ..."
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Enumerate all video devices (up to 32 at the moment, use key "MaxObjectNumber" key later)
b0c4bd49112a99f00ef48b7a8eae6fb310a62bdavboxsync ${For} $i 0 32
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ReadRegStr $tmp HKLM "HARDWARE\DEVICEMAP\VIDEO" "\Device\Video$i"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync StrCmp $tmp "" dev_not_found
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
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
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!endif
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Detected video device: $dev_desc"
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ${If} $dev_desc == "VirtualBox Graphics Adapter"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync DetailPrint "VirtualBox video device found!"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync Goto dev_found
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ${EndIf}
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ${Next}
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync Goto dev_not_found
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
cc260ed3418d1fd2771d0395f818f76808b60238vboxsyncdev_found:
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ; If we're on Windows 2000, skip the ID detection ...
78a072e1b56619e3230735ae073668311232ec94vboxsync ${If} $g_strWinVersion == "2000"
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto change_res
78a072e1b56619e3230735ae073668311232ec94vboxsync ${EndIf}
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto dev_found_detect_id
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncdev_found_detect_id:
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCpy $i 0 ; Start at index 0
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Detecting device ID ..."
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncdev_found_detect_id_loop:
78a072e1b56619e3230735ae073668311232ec94vboxsync
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!endif
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 ${EndIf}
08c4185261c17943cff6cc94522579696eeeb478vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsync IntOp $i $i + 1 ; Increment index
08c4185261c17943cff6cc94522579696eeeb478vboxsync goto dev_found_detect_id_loop
08c4185261c17943cff6cc94522579696eeeb478vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsyncdev_not_found:
08c4185261c17943cff6cc94522579696eeeb478vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsync DetailPrint "No VirtualBox video device (yet) detected! No custom mode set."
08c4185261c17943cff6cc94522579696eeeb478vboxsync Goto exit
08c4185261c17943cff6cc94522579696eeeb478vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsyncchange_res:
08c4185261c17943cff6cc94522579696eeeb478vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsync!ifdef _DEBUG
08c4185261c17943cff6cc94522579696eeeb478vboxsync DetailPrint "Device description: $dev_desc"
08c4185261c17943cff6cc94522579696eeeb478vboxsync DetailPrint "Device ID: $dev_id"
08c4185261c17943cff6cc94522579696eeeb478vboxsync!endif
08c4185261c17943cff6cc94522579696eeeb478vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsync Var /GLOBAL reg_path_device
08c4185261c17943cff6cc94522579696eeeb478vboxsync Var /GLOBAL reg_path_monitor
08c4185261c17943cff6cc94522579696eeeb478vboxsync
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 ${Else}
08c4185261c17943cff6cc94522579696eeeb478vboxsync DetailPrint "Custom mode set: Windows $g_strWinVersion not supported yet"
08c4185261c17943cff6cc94522579696eeeb478vboxsync Goto exit
08c4185261c17943cff6cc94522579696eeeb478vboxsync ${EndIf}
08c4185261c17943cff6cc94522579696eeeb478vboxsync
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'
08c4185261c17943cff6cc94522579696eeeb478vboxsync
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
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"
78a072e1b56619e3230735ae073668311232ec94vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsync DetailPrint "Custom mode set to $g_iScreenXx$g_iScreenY, $g_iScreenBpp BPP on next restart."
a6ab77f04b22f0de7691f50dfdee8196024ce26dvboxsync
034b3d77b1a08b77b1fa9bfd7489997421713f15vboxsyncexit:
a6ab77f04b22f0de7691f50dfdee8196024ce26dvboxsync
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsyncFunctionEnd
a6ab77f04b22f0de7691f50dfdee8196024ce26dvboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunction W2K_Prepare
9726c89eba6e777f3eb4d57f65ca6171a2241d29vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsync ${If} $g_bNoVBoxServiceExit == "false"
08c4185261c17943cff6cc94522579696eeeb478vboxsync ; Stop / kill VBoxService
78a072e1b56619e3230735ae073668311232ec94vboxsync Call StopVBoxService
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ${EndIf}
08c4185261c17943cff6cc94522579696eeeb478vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsync ${If} $g_bNoVBoxTrayExit == "false"
08c4185261c17943cff6cc94522579696eeeb478vboxsync ; Stop / kill VBoxTray
08c4185261c17943cff6cc94522579696eeeb478vboxsync Call StopVBoxTray
08c4185261c17943cff6cc94522579696eeeb478vboxsync ${EndIf}
08c4185261c17943cff6cc94522579696eeeb478vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsync ; Delete VBoxService from registry
08c4185261c17943cff6cc94522579696eeeb478vboxsync DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Run" "VBoxService"
08c4185261c17943cff6cc94522579696eeeb478vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsync ; Delete old VBoxService.exe from install directory (replaced by VBoxTray.exe)
da31d917654e0b617e7a9bf8b0cf786136edf8e8vboxsync Delete /REBOOTOK "$INSTDIR\VBoxService.exe"
78a072e1b56619e3230735ae073668311232ec94vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsyncFunctionEnd
08c4185261c17943cff6cc94522579696eeeb478vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsyncFunction W2K_CopyFiles
9726c89eba6e777f3eb4d57f65ca6171a2241d29vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsync Push $0
da31d917654e0b617e7a9bf8b0cf786136edf8e8vboxsync SetOutPath "$INSTDIR"
08c4185261c17943cff6cc94522579696eeeb478vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsync ; Video driver
08c4185261c17943cff6cc94522579696eeeb478vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideo.sys"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxDisp.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync
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!endif
78a072e1b56619e3230735ae073668311232ec94vboxsync
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!endif
78a072e1b56619e3230735ae073668311232ec94vboxsync
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
78a072e1b56619e3230735ae073668311232ec94vboxsync ; WHQL fake
78a072e1b56619e3230735ae073668311232ec94vboxsync!ifdef WHQL_FAKE
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxWHQLFake.exe"
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync SetOutPath $g_strSystemDir
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ; VBoxService
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxService.exe" ; Only used by W2K and up (for Shared Folders at the moment)
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync!if $%VBOX_WITH_WDDM% == "1"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ${If} $g_bWithWDDM == "true"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ; WDDM Video driver
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync SetOutPath "$INSTDIR"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync !ifdef VBOX_SIGN_ADDITIONS
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideoWddm.cat"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync !endif
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
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
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxD3D9wddm.dll"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\wined3dwddm.dll"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync !endif ; $%VBOX_WITH_CROGL% == "1"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxDispD3D-x86.dll"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
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
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
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto doneCr
78a072e1b56619e3230735ae073668311232ec94vboxsync ${EndIf}
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif ; $%VBOX_WITH_WDDM% == "1"
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!if $%VBOX_WITH_CROGL% == "1"
78a072e1b56619e3230735ae073668311232ec94vboxsync ; crOpenGL
78a072e1b56619e3230735ae073668311232ec94vboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
78a072e1b56619e3230735ae073668311232ec94vboxsync !define LIBRARY_X64 ; Enable installation of 64-bit libraries
78a072e1b56619e3230735ae073668311232ec94vboxsync !endif
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
78a072e1b56619e3230735ae073668311232ec94vboxsync !endif
78a072e1b56619e3230735ae073668311232ec94vboxsync
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
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif ; VBOX_WITH_CROGL
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncdoneCr:
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $0
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunctionEnd
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!ifdef WHQL_FAKE
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunction W2K_WHQLFakeOn
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync StrCmp $g_bFakeWHQL "true" do
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync Goto exit
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncdo:
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Turning off WHQL protection..."
78a072e1b56619e3230735ae073668311232ec94vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxWHQLFake.exe" "ignore"'
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncexit:
78a072e1b56619e3230735ae073668311232ec94vboxsync
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsyncFunctionEnd
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsyncFunction W2K_WHQLFakeOff
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCmp $g_bFakeWHQL "true" do
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto exit
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncdo:
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Turning back on WHQL protection..."
78a072e1b56619e3230735ae073668311232ec94vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxWHQLFake.exe" "warn"'
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncexit:
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsyncFunctionEnd
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync!endif
156101683587682f6d63b4af322f611d90b77fcevboxsync
156101683587682f6d63b4af322f611d90b77fcevboxsyncFunction W2K_InstallFiles
156101683587682f6d63b4af322f611d90b77fcevboxsync
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"
78a072e1b56619e3230735ae073668311232ec94vboxsync
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"
78a072e1b56619e3230735ae073668311232ec94vboxsync
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync DetailPrint "Installing drivers ..."
78a072e1b56619e3230735ae073668311232ec94vboxsync
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync Push $0 ; For fetching results
78a072e1b56619e3230735ae073668311232ec94vboxsync
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync SetOutPath "$INSTDIR"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
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 ${Else}
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync LogText "Guest driver installation skipped!"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ${EndIf}
78a072e1b56619e3230735ae073668311232ec94vboxsync
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 ${Else}
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Installing video driver ..."
78a072e1b56619e3230735ae073668311232ec94vboxsync nsExec::ExecToLog '"$INSTDIR\VBoxDrvInst.exe" driver install "$INSTDIR\VBoxVideo.inf" "$INSTDIR\install_drivers.log"'
78a072e1b56619e3230735ae073668311232ec94vboxsync ${EndIf}
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 ${Else}
78a072e1b56619e3230735ae073668311232ec94vboxsync LogText "Video driver installation skipped!"
78a072e1b56619e3230735ae073668311232ec94vboxsync ${EndIf}
78a072e1b56619e3230735ae073668311232ec94vboxsync
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 ${Else}
78a072e1b56619e3230735ae073668311232ec94vboxsync LogText "Mouse driver installation skipped!"
78a072e1b56619e3230735ae073668311232ec94vboxsync ${EndIf}
78a072e1b56619e3230735ae073668311232ec94vboxsync
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
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
78a072e1b56619e3230735ae073668311232ec94vboxsyncsf:
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Installing Shared Folders service ..."
78a072e1b56619e3230735ae073668311232ec94vboxsync
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
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"
78a072e1b56619e3230735ae073668311232ec94vboxsync
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
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
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync!if $%VBOX_WITH_CROGL% == "1"
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsynccropengl:
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync ${If} $g_bWithWDDM == "true"
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync ; Nothing to do here
78a072e1b56619e3230735ae073668311232ec94vboxsync ${Else}
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"
78a072e1b56619e3230735ae073668311232ec94vboxsync ${EndIf}
40d48df41519667fa639cfe552c097210b9685acvboxsync SetRegView 64
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif
78a072e1b56619e3230735ae073668311232ec94vboxsync ${Endif}
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto done
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncerror:
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Abort "ERROR: Could not install files for Windows 2000 / XP / Vista! Installation aborted."
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncdone:
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $0
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunctionEnd
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunction W2K_Main
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync SetOutPath "$INSTDIR"
78a072e1b56619e3230735ae073668311232ec94vboxsync SetOverwrite on
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Call W2K_Prepare
78a072e1b56619e3230735ae073668311232ec94vboxsync Call W2K_CopyFiles
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!ifdef WHQL_FAKE
78a072e1b56619e3230735ae073668311232ec94vboxsync Call W2K_WHQLFakeOn
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Call W2K_InstallFiles
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!ifdef WHQL_FAKE
78a072e1b56619e3230735ae073668311232ec94vboxsync Call W2K_WHQLFakeOff
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Call W2K_SetVideoResolution
78a072e1b56619e3230735ae073668311232ec94vboxsync
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsyncFunctionEnd
78a072e1b56619e3230735ae073668311232ec94vboxsync
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync!macro W2K_UninstallInstDir un
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunction ${un}W2K_UninstallInstDir
78a072e1b56619e3230735ae073668311232ec94vboxsync
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
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\VBoxMouse.sys"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\VBoxMouse.inf"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\VBoxMouse.cat"
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\VBoxTray.exe"
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\VBoxGuest.sys"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\VBoxGuest.inf"
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync Delete /REBOOTOK "$INSTDIR\VBoxGuest.cat"
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync
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
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
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
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
78a072e1b56619e3230735ae073668311232ec94vboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxDispD3D-x86.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync
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
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
78a072e1b56619e3230735ae073668311232ec94vboxsync ; WHQL fake
78a072e1b56619e3230735ae073668311232ec94vboxsync!ifdef WHQL_FAKE
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\VBoxWHQLFake.exe"
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Log file
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync Delete /REBOOTOK "$INSTDIR\install.log"
78a072e1b56619e3230735ae073668311232ec94vboxsync Delete /REBOOTOK "$INSTDIR\install_ui.log"
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunctionEnd
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync!macroend
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro W2K_UninstallInstDir ""
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync!insertmacro W2K_UninstallInstDir "un."
78a072e1b56619e3230735ae073668311232ec94vboxsync
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync!macro W2K_Uninstall un
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsyncFunction ${un}W2K_Uninstall
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync Push $0
223d0cc6ed8bf5767cb97c734684460b8eae31a8vboxsync
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
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
78a072e1b56619e3230735ae073668311232ec94vboxsync!if $%VBOX_WITH_CROGL% == "1"
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Removing 3D graphics support ..."
78a072e1b56619e3230735ae073668311232ec94vboxsync
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
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
eb563d667bee4ab4ac0ba8be38d68f911f1d53eavboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
eb563d667bee4ab4ac0ba8be38d68f911f1d53eavboxsync
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"
78a072e1b56619e3230735ae073668311232ec94vboxsync
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
78a072e1b56619e3230735ae073668311232ec94vboxsync
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\VBoxOGL"
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif ; VBOX_WITH_CROGL
78a072e1b56619e3230735ae073668311232ec94vboxsync
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
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
78a072e1b56619e3230735ae073668311232ec94vboxsync ; GINA
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 ${EndIf}
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Delete VBoxTray
78a072e1b56619e3230735ae073668311232ec94vboxsync Call ${un}StopVBoxTray
78a072e1b56619e3230735ae073668311232ec94vboxsync DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Run" "VBoxTray"
78a072e1b56619e3230735ae073668311232ec94vboxsync
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
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
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"
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $0
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunctionEnd
78a072e1b56619e3230735ae073668311232ec94vboxsync!macroend
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync!insertmacro W2K_Uninstall ""
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro W2K_Uninstall "un."
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync