VirtualBox

source: vbox/trunk/src/VBox/Additions/WINNT/Installer/VBoxGuestAdditionsW2KXP.nsh@ 85569

Last change on this file since 85569 was 84972, checked in by vboxsync, 5 years ago

Additions/WINNT/SharedFolders: Provide a dedicated 32bit VBoxSF driver for Windows <= 7 linked against the W2K3 DDK rdbss.lib and link the default one against the WHL version for Windows >= 8

The reason for shipping two binaries now is that the mmap FsPerf tests failed under certain circumstances, FlushViewOfFile() would return ERROR_INVALID_PARAMETER.
This only happens when the file is opened readonly first, and then opened read/write again while the first open is still active. The test would go on creating
a mapping of the file using the read/write handle, close both handles and then modify the mapping. Upon flushing the mapping ERROR_INVALID_PARAMETER is returned
because RDBSS passes the readonly file handle to our shared folder driver which the host shared folder service complains about rightfully because it is readonly.
The request returns VERR_INVALID_HANDLE for the write which gets translated to ERROR_INVALID_PARAMETER.
This only happens on 32bit Windows 8 and newer when linked against the W2K3 rdbss.lib, the reason is unknown.
Using the WHL version solves this and to not run into weird compatibility issues on older versions we ship two variants now and the installer decides during
install time which one is used.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id Revision
File size: 22.3 KB
Line 
1; $Id: VBoxGuestAdditionsW2KXP.nsh 84972 2020-06-26 14:58:51Z vboxsync $
2;; @file
3; VBoxGuestAdditionsW2KXP.nsh - Guest Additions installation for Windows 2000/XP.
4;
5
6;
7; Copyright (C) 2006-2020 Oracle Corporation
8;
9; This file is part of VirtualBox Open Source Edition (OSE), as
10; available from http://www.virtualbox.org. This file is free software;
11; you can redistribute it and/or modify it under the terms of the GNU
12; General Public License (GPL) as published by the Free Software
13; Foundation, in version 2 as it comes in the "COPYING" file of the
14; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16;
17
18Function W2K_SetVideoResolution
19
20 ; NSIS only supports global vars, even in functions -- great
21 Var /GLOBAL i
22 Var /GLOBAL tmp
23 Var /GLOBAL tmppath
24 Var /GLOBAL dev_id
25 Var /GLOBAL dev_desc
26
27 ; Check for all required parameters
28 StrCmp $g_iScreenX "0" exit
29 StrCmp $g_iScreenY "0" exit
30 StrCmp $g_iScreenBpp "0" exit
31
32 ${LogVerbose} "Setting display parameters ($g_iScreenXx$g_iScreenY, $g_iScreenBpp BPP) ..."
33
34 ; Enumerate all video devices (up to 32 at the moment, use key "MaxObjectNumber" key later)
35 ${For} $i 0 32
36
37 ReadRegStr $tmp HKLM "HARDWARE\DEVICEMAP\VIDEO" "\Device\Video$i"
38 StrCmp $tmp "" dev_not_found
39
40 ; Extract path to video settings
41 ; Ex: \Registry\Machine\System\CurrentControlSet\Control\Video\{28B74D2B-F0A9-48E0-8028-D76F6BB1AE65}\0000
42 ; Or: \Registry\Machine\System\CurrentControlSet\Control\Video\vboxvideo\Device0
43 ; Result: Machine\System\CurrentControlSet\Control\Video\{28B74D2B-F0A9-48E0-8028-D76F6BB1AE65}\0000
44 Push "$tmp" ; String
45 Push "\" ; SubString
46 Push ">" ; SearchDirection
47 Push ">" ; StrInclusionDirection
48 Push "0" ; IncludeSubString
49 Push "2" ; Loops
50 Push "0" ; CaseSensitive
51 Call StrStrAdv
52 Pop $tmppath ; $1 only contains the full path
53 StrCmp $tmppath "" dev_not_found
54
55 ; Get device description
56 ReadRegStr $dev_desc HKLM "$tmppath" "Device Description"
57!ifdef _DEBUG
58 ${LogVerbose} "Registry path: $tmppath"
59 ${LogVerbose} "Registry path to device name: $temp"
60!endif
61 ${LogVerbose} "Detected video device: $dev_desc"
62
63 ${If} $dev_desc == "VirtualBox Graphics Adapter"
64 ${LogVerbose} "VirtualBox video device found!"
65 Goto dev_found
66 ${EndIf}
67 ${Next}
68 Goto dev_not_found
69
70dev_found:
71
72 ; If we're on Windows 2000, skip the ID detection ...
73 ${If} $g_strWinVersion == "2000"
74 Goto change_res
75 ${EndIf}
76 Goto dev_found_detect_id
77
78dev_found_detect_id:
79
80 StrCpy $i 0 ; Start at index 0
81 ${LogVerbose} "Detecting device ID ..."
82
83dev_found_detect_id_loop:
84
85 ; Resolve real path to hardware instance "{GUID}"
86 EnumRegKey $dev_id HKLM "SYSTEM\CurrentControlSet\Control\Video" $i
87 StrCmp $dev_id "" dev_not_found ; No more entries? Jump out
88!ifdef _DEBUG
89 ${LogVerbose} "Got device ID: $dev_id"
90!endif
91 ReadRegStr $dev_desc HKLM "SYSTEM\CurrentControlSet\Control\Video\$dev_id\0000" "Device Description" ; Try to read device name
92 ${If} $dev_desc == "VirtualBox Graphics Adapter"
93 ${LogVerbose} "Device ID of $dev_desc: $dev_id"
94 Goto change_res
95 ${EndIf}
96
97 IntOp $i $i + 1 ; Increment index
98 goto dev_found_detect_id_loop
99
100dev_not_found:
101
102 ${LogVerbose} "No VirtualBox video device (yet) detected! No custom mode set."
103 Goto exit
104
105change_res:
106
107!ifdef _DEBUG
108 ${LogVerbose} "Device description: $dev_desc"
109 ${LogVerbose} "Device ID: $dev_id"
110!endif
111
112 Var /GLOBAL reg_path_device
113 Var /GLOBAL reg_path_monitor
114
115 ${LogVerbose} "Custom mode set: Platform is Windows $g_strWinVersion"
116 ${If} $g_strWinVersion == "2000"
117 ${OrIf} $g_strWinVersion == "Vista"
118 StrCpy $reg_path_device "SYSTEM\CurrentControlSet\SERVICES\VBoxVideo\Device0"
119 StrCpy $reg_path_monitor "SYSTEM\CurrentControlSet\SERVICES\VBoxVideo\Device0\Mon00000001"
120 ${ElseIf} $g_strWinVersion == "XP"
121 ${OrIf} $g_strWinVersion == "7"
122 ${OrIf} $g_strWinVersion == "8"
123 ${OrIf} $g_strWinVersion == "8_1"
124 ${OrIf} $g_strWinVersion == "10"
125 StrCpy $reg_path_device "SYSTEM\CurrentControlSet\Control\Video\$dev_id\0000"
126 StrCpy $reg_path_monitor "SYSTEM\CurrentControlSet\Control\VIDEO\$dev_id\0000\Mon00000001"
127 ${Else}
128 ${LogVerbose} "Custom mode set: Windows $g_strWinVersion not supported yet"
129 Goto exit
130 ${EndIf}
131
132 ; Write the new value in the adapter config (VBoxVideo.sys) using hex values in binary format
133 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" registry write HKLM $reg_path_device CustomXRes REG_BIN $g_iScreenX DWORD" "false"
134 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" registry write HKLM $reg_path_device CustomYRes REG_BIN $g_iScreenY DWORD" "false"
135 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" registry write HKLM $reg_path_device CustomBPP REG_BIN $g_iScreenBpp DWORD" "false"
136
137 ; ... and tell Windows to use that mode on next start!
138 WriteRegDWORD HKCC $reg_path_device "DefaultSettings.XResolution" "$g_iScreenX"
139 WriteRegDWORD HKCC $reg_path_device "DefaultSettings.YResolution" "$g_iScreenY"
140 WriteRegDWORD HKCC $reg_path_device "DefaultSettings.BitsPerPixel" "$g_iScreenBpp"
141
142 WriteRegDWORD HKCC $reg_path_monitor "DefaultSettings.XResolution" "$g_iScreenX"
143 WriteRegDWORD HKCC $reg_path_monitor "DefaultSettings.YResolution" "$g_iScreenY"
144 WriteRegDWORD HKCC $reg_path_monitor "DefaultSettings.BitsPerPixel" "$g_iScreenBpp"
145
146 ${LogVerbose} "Custom mode set to $g_iScreenXx$g_iScreenY, $g_iScreenBpp BPP on next restart."
147
148exit:
149
150FunctionEnd
151
152Function W2K_Prepare
153
154 ${If} $g_bNoVBoxServiceExit == "false"
155 ; Stop / kill VBoxService
156 Call StopVBoxService
157 ${EndIf}
158
159 ${If} $g_bNoVBoxTrayExit == "false"
160 ; Stop / kill VBoxTray
161 Call StopVBoxTray
162 ${EndIf}
163
164 ; Delete VBoxService from registry
165 DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Run" "VBoxService"
166
167 ; Delete old VBoxService.exe from install directory (replaced by VBoxTray.exe)
168 Delete /REBOOTOK "$INSTDIR\VBoxService.exe"
169
170FunctionEnd
171
172Function W2K_CopyFiles
173
174 Push $0
175 SetOutPath "$INSTDIR"
176
177 ; Video driver
178 FILE "$%PATH_OUT%\bin\additions\VBoxVideo.sys"
179 FILE "$%PATH_OUT%\bin\additions\VBoxDisp.dll"
180
181 ; Mouse driver
182 FILE "$%PATH_OUT%\bin\additions\VBoxMouse.sys"
183 FILE "$%PATH_OUT%\bin\additions\VBoxMouse.inf"
184!ifdef VBOX_SIGN_ADDITIONS
185 FILE "$%PATH_OUT%\bin\additions\VBoxMouse.cat"
186!endif
187
188 ; Guest driver
189 FILE "$%PATH_OUT%\bin\additions\VBoxGuest.sys"
190 FILE "$%PATH_OUT%\bin\additions\VBoxGuest.inf"
191!ifdef VBOX_SIGN_ADDITIONS
192 FILE "$%PATH_OUT%\bin\additions\VBoxGuest.cat"
193!endif
194
195 ; Guest driver files
196 FILE "$%PATH_OUT%\bin\additions\VBoxTray.exe"
197 FILE "$%PATH_OUT%\bin\additions\VBoxControl.exe" ; Not used by W2K and up, but required by the .INF file
198
199 ; WHQL fake
200!ifdef WHQL_FAKE
201 FILE "$%PATH_OUT%\bin\additions\VBoxWHQLFake.exe"
202!endif
203
204 SetOutPath $g_strSystemDir
205
206 ; VBoxService
207 ${If} $g_bNoVBoxServiceExit == "false"
208 ; VBoxService has been terminated before, so just install the file
209 ; in the regular way
210 FILE "$%PATH_OUT%\bin\additions\VBoxService.exe"
211 ${Else}
212 ; VBoxService is in use and wasn't terminated intentionally. So extract the
213 ; new version into a temporary location and install it on next reboot
214 Push $0
215 ClearErrors
216 GetTempFileName $0
217 IfErrors 0 +3
218 ${LogVerbose} "Error getting temp file for VBoxService.exe"
219 StrCpy "$0" "$INSTDIR\VBoxServiceTemp.exe"
220 ${LogVerbose} "VBoxService is in use, will be installed on next reboot (from '$0')"
221 File "/oname=$0" "$%PATH_OUT%\bin\additions\VBoxService.exe"
222 IfErrors 0 +2
223 ${LogVerbose} "Error copying VBoxService.exe to '$0'"
224 Rename /REBOOTOK "$0" "$g_strSystemDir\VBoxService.exe"
225 IfErrors 0 +2
226 ${LogVerbose} "Error renaming '$0' to '$g_strSystemDir\VBoxService.exe'"
227 Pop $0
228 ${EndIf}
229
230!if $%VBOX_WITH_WDDM% == "1"
231 ${If} $g_bWithWDDM == "true"
232 ; WDDM Video driver
233 SetOutPath "$INSTDIR"
234
235 !ifdef VBOX_SIGN_ADDITIONS
236 FILE "$%PATH_OUT%\bin\additions\VBoxWddm.cat"
237 !endif
238 FILE "$%PATH_OUT%\bin\additions\VBoxWddm.sys"
239 FILE "$%PATH_OUT%\bin\additions\VBoxWddm.inf"
240
241 FILE "$%PATH_OUT%\bin\additions\VBoxDispD3D.dll"
242 !if $%VBOX_WITH_MESA3D% == "1"
243 FILE "$%PATH_OUT%\bin\additions\VBoxNine.dll"
244 FILE "$%PATH_OUT%\bin\additions\VBoxSVGA.dll"
245 FILE "$%PATH_OUT%\bin\additions\VBoxICD.dll"
246 FILE "$%PATH_OUT%\bin\additions\VBoxGL.dll"
247 !endif
248
249 !if $%KBUILD_TARGET_ARCH% == "amd64"
250 FILE "$%PATH_OUT%\bin\additions\VBoxDispD3D-x86.dll"
251 !if $%VBOX_WITH_MESA3D% == "1"
252 FILE "$%PATH_OUT%\bin\additions\VBoxNine-x86.dll"
253 FILE "$%PATH_OUT%\bin\additions\VBoxSVGA-x86.dll"
254 FILE "$%PATH_OUT%\bin\additions\VBoxICD-x86.dll"
255 FILE "$%PATH_OUT%\bin\additions\VBoxGL-x86.dll"
256 !endif
257 !endif ; $%KBUILD_TARGET_ARCH% == "amd64"
258
259 Goto doneCr
260 ${EndIf}
261!endif ; $%VBOX_WITH_WDDM% == "1"
262
263doneCr:
264
265 Pop $0
266
267FunctionEnd
268
269!ifdef WHQL_FAKE
270
271Function W2K_WHQLFakeOn
272
273 StrCmp $g_bFakeWHQL "true" do
274 Goto exit
275
276do:
277
278 ${LogVerbose} "Turning off WHQL protection..."
279 ${CmdExecute} "$\"$INSTDIR\VBoxWHQLFake.exe$\" $\"ignore$\"" "true"
280
281exit:
282
283FunctionEnd
284
285Function W2K_WHQLFakeOff
286
287 StrCmp $g_bFakeWHQL "true" do
288 Goto exit
289
290do:
291
292 ${LogVerbose} "Turning back on WHQL protection..."
293 ${CmdExecute} "$\"$INSTDIR\VBoxWHQLFake.exe$\" $\"warn$\"" "true"
294
295exit:
296
297FunctionEnd
298
299!endif
300
301Function W2K_InstallFiles
302
303 ; The Shared Folder IFS goes to the system directory
304 !if $%BUILD_TARGET_ARCH% == "x86"
305 ; On x86 we have to use a different shared folder driver linked against an older RDBSS for Windows 7 and older.
306 ${If} $g_strWinVersion == "2000"
307 ${OrIf} $g_strWinVersion == "Vista"
308 ${OrIf} $g_strWinVersion == "XP"
309 ${OrIf} $g_strWinVersion == "7"
310 !insertmacro ReplaceDLL "$%PATH_OUT%\bin\additions\VBoxSFW2K.sys" "$g_strSystemDir\drivers\VBoxSF.sys" "$INSTDIR"
311 ${Else}
312 !insertmacro ReplaceDLL "$%PATH_OUT%\bin\additions\VBoxSF.sys" "$g_strSystemDir\drivers\VBoxSF.sys" "$INSTDIR"
313 ${EndIf}
314 !else
315 !insertmacro ReplaceDLL "$%PATH_OUT%\bin\additions\VBoxSF.sys" "$g_strSystemDir\drivers\VBoxSF.sys" "$INSTDIR"
316 !endif
317
318 !insertmacro ReplaceDLL "$%PATH_OUT%\bin\additions\VBoxMRXNP.dll" "$g_strSystemDir\VBoxMRXNP.dll" "$INSTDIR"
319 AccessControl::GrantOnFile "$g_strSystemDir\VBoxMRXNP.dll" "(BU)" "GenericRead"
320 !if $%KBUILD_TARGET_ARCH% == "amd64"
321 ; Only 64-bit installer: Copy the 32-bit DLL for 32 bit applications.
322 !insertmacro ReplaceDLL "$%PATH_OUT%\bin\additions\VBoxMRXNP-x86.dll" "$g_strSysWow64\VBoxMRXNP.dll" "$INSTDIR"
323 AccessControl::GrantOnFile "$g_strSysWow64\VBoxMRXNP.dll" "(BU)" "GenericRead"
324 !endif
325
326 ; The VBoxTray hook DLL also goes to the system directory; it might be locked
327 !insertmacro ReplaceDLL "$%PATH_OUT%\bin\additions\VBoxHook.dll" "$g_strSystemDir\VBoxHook.dll" "$INSTDIR"
328 AccessControl::GrantOnFile "$g_strSystemDir\VBoxHook.dll" "(BU)" "GenericRead"
329
330 ${LogVerbose} "Installing drivers ..."
331
332 Push $0 ; For fetching results
333
334 SetOutPath "$INSTDIR"
335
336 ${If} $g_bNoGuestDrv == "false"
337 ${LogVerbose} "Installing guest driver ..."
338 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" driver install $\"$INSTDIR\VBoxGuest.inf$\" $\"$INSTDIR\install_drivers.log$\"" "false"
339 ${Else}
340 ${LogVerbose} "Guest driver installation skipped!"
341 ${EndIf}
342
343 ${If} $g_bNoVideoDrv == "false"
344 ${If} $g_bWithWDDM == "true"
345 ${LogVerbose} "Installing WDDM video driver..."
346 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" driver install $\"$INSTDIR\VBoxWddm.inf$\" $\"$INSTDIR\install_drivers.log$\"" "false"
347 ${Else}
348 ${LogVerbose} "Installing video driver ..."
349 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" driver install $\"$INSTDIR\VBoxVideo.inf$\" $\"$INSTDIR\install_drivers.log$\"" "false"
350 ${EndIf}
351 ${Else}
352 ${LogVerbose} "Video driver installation skipped!"
353 ${EndIf}
354
355 ${If} $g_bNoMouseDrv == "false"
356 ${LogVerbose} "Installing mouse driver ..."
357 ; The mouse filter does not contain any device IDs but a "DefaultInstall" section;
358 ; so this .INF file needs to be installed using "InstallHinfSection" which is implemented
359 ; with VBoxDrvInst's "driver executeinf" routine
360 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" driver install $\"$INSTDIR\VBoxMouse.inf$\"" "false"
361 ${Else}
362 ${LogVerbose} "Mouse driver installation skipped!"
363 ${EndIf}
364
365 ; Create the VBoxService service
366 ; No need to stop/remove the service here! Do this only on uninstallation!
367 ${LogVerbose} "Installing VirtualBox service ..."
368 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" service create $\"VBoxService$\" $\"VirtualBox Guest Additions Service$\" 16 2 $\"%SystemRoot%\System32\VBoxService.exe$\" $\"Base$\"" "false"
369
370 ; Set service description
371 WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\VBoxService" "Description" "Manages VM runtime information, time synchronization, remote sysprep execution and miscellaneous utilities for guest operating systems."
372
373sf:
374
375 ${LogVerbose} "Installing Shared Folders service ..."
376
377 ; Create the Shared Folders service ...
378 ; No need to stop/remove the service here! Do this only on uninstallation!
379 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" service create $\"VBoxSF$\" $\"VirtualBox Shared Folders$\" 2 1 $\"\SystemRoot\System32\drivers\VBoxSF.sys$\" $\"NetworkProvider$\"" "false"
380
381 ; ... and the link to the network provider
382 WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\VBoxSF\NetworkProvider" "DeviceName" "\Device\VBoxMiniRdr"
383 WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\VBoxSF\NetworkProvider" "Name" "VirtualBox Shared Folders"
384 WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\VBoxSF\NetworkProvider" "ProviderPath" "$SYSDIR\VBoxMRXNP.dll"
385
386 ; Add default network providers (if not present or corrupted)
387 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" netprovider add WebClient" "false"
388 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" netprovider add LanmanWorkstation" "false"
389 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" netprovider add RDPNP" "false"
390
391 ; Add the shared folders network provider
392 ${LogVerbose} "Adding network provider (Order = $g_iSfOrder) ..."
393 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" netprovider add VBoxSF $g_iSfOrder" "false"
394
395 Goto done
396
397done:
398
399 Pop $0
400
401FunctionEnd
402
403Function W2K_Main
404
405 SetOutPath "$INSTDIR"
406 SetOverwrite on
407
408 Call W2K_Prepare
409 Call W2K_CopyFiles
410
411!ifdef WHQL_FAKE
412 Call W2K_WHQLFakeOn
413!endif
414
415 Call W2K_InstallFiles
416
417!ifdef WHQL_FAKE
418 Call W2K_WHQLFakeOff
419!endif
420
421 Call W2K_SetVideoResolution
422
423FunctionEnd
424
425!macro W2K_UninstallInstDir un
426Function ${un}W2K_UninstallInstDir
427
428 Delete /REBOOTOK "$INSTDIR\VBoxVideo.sys"
429 Delete /REBOOTOK "$INSTDIR\VBoxVideo.inf"
430 Delete /REBOOTOK "$INSTDIR\VBoxVideo.cat"
431 Delete /REBOOTOK "$INSTDIR\VBoxDisp.dll"
432
433 Delete /REBOOTOK "$INSTDIR\VBoxMouse.sys"
434 Delete /REBOOTOK "$INSTDIR\VBoxMouse.inf"
435 Delete /REBOOTOK "$INSTDIR\VBoxMouse.cat"
436
437 Delete /REBOOTOK "$INSTDIR\VBoxTray.exe"
438
439 Delete /REBOOTOK "$INSTDIR\VBoxGuest.sys"
440 Delete /REBOOTOK "$INSTDIR\VBoxGuest.inf"
441 Delete /REBOOTOK "$INSTDIR\VBoxGuest.cat"
442
443 Delete /REBOOTOK "$INSTDIR\VBCoInst.dll" ; Deprecated, does not get installed anymore
444 Delete /REBOOTOK "$INSTDIR\VBoxControl.exe"
445 Delete /REBOOTOK "$INSTDIR\VBoxService.exe" ; Deprecated, does not get installed anymore
446
447!if $%VBOX_WITH_WDDM% == "1"
448 Delete /REBOOTOK "$INSTDIR\VBoxWddm.cat"
449 Delete /REBOOTOK "$INSTDIR\VBoxWddm.sys"
450 Delete /REBOOTOK "$INSTDIR\VBoxWddm.inf"
451 ; Obsolete files begin
452 Delete /REBOOTOK "$INSTDIR\VBoxVideoWddm.cat"
453 Delete /REBOOTOK "$INSTDIR\VBoxVideoWddm.sys"
454 Delete /REBOOTOK "$INSTDIR\VBoxVideoWddm.inf"
455 Delete /REBOOTOK "$INSTDIR\VBoxVideoW8.cat"
456 Delete /REBOOTOK "$INSTDIR\VBoxVideoW8.sys"
457 Delete /REBOOTOK "$INSTDIR\VBoxVideoW8.inf"
458 ; Obsolete files end
459 Delete /REBOOTOK "$INSTDIR\VBoxDispD3D.dll"
460 !if $%VBOX_WITH_MESA3D% == "1"
461 Delete /REBOOTOK "$INSTDIR\VBoxNine.dll"
462 Delete /REBOOTOK "$INSTDIR\VBoxSVGA.dll"
463 Delete /REBOOTOK "$INSTDIR\VBoxICD.dll"
464 Delete /REBOOTOK "$INSTDIR\VBoxGL.dll"
465 !endif
466
467 Delete /REBOOTOK "$INSTDIR\VBoxD3D9wddm.dll"
468 Delete /REBOOTOK "$INSTDIR\wined3dwddm.dll"
469 ; Try to delete libWine in case it is there from old installation
470 Delete /REBOOTOK "$INSTDIR\libWine.dll"
471
472 !if $%KBUILD_TARGET_ARCH% == "amd64"
473 Delete /REBOOTOK "$INSTDIR\VBoxDispD3D-x86.dll"
474 !if $%VBOX_WITH_MESA3D% == "1"
475 Delete /REBOOTOK "$INSTDIR\VBoxNine-x86.dll"
476 Delete /REBOOTOK "$INSTDIR\VBoxSVGA-x86.dll"
477 Delete /REBOOTOK "$INSTDIR\VBoxICD-x86.dll"
478 Delete /REBOOTOK "$INSTDIR\VBoxGL-x86.dll"
479 !endif
480
481 Delete /REBOOTOK "$INSTDIR\VBoxD3D9wddm-x86.dll"
482 Delete /REBOOTOK "$INSTDIR\wined3dwddm-x86.dll"
483 !endif ; $%KBUILD_TARGET_ARCH% == "amd64"
484!endif ; $%VBOX_WITH_WDDM% == "1"
485
486 ; WHQL fake
487!ifdef WHQL_FAKE
488 Delete /REBOOTOK "$INSTDIR\VBoxWHQLFake.exe"
489!endif
490
491 ; Log file
492 Delete /REBOOTOK "$INSTDIR\install.log"
493 Delete /REBOOTOK "$INSTDIR\install_ui.log"
494
495FunctionEnd
496!macroend
497!insertmacro W2K_UninstallInstDir ""
498!insertmacro W2K_UninstallInstDir "un."
499
500!macro W2K_Uninstall un
501Function ${un}W2K_Uninstall
502
503 Push $0
504
505 ; Remove VirtualBox video driver
506 ${LogVerbose} "Uninstalling video driver ..."
507 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" driver uninstall $\"$INSTDIR\VBoxVideo.inf$\"" "true"
508 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" service delete VBoxVideo" "true"
509 Delete /REBOOTOK "$g_strSystemDir\drivers\VBoxVideo.sys"
510 Delete /REBOOTOK "$g_strSystemDir\VBoxDisp.dll"
511
512 ; Remove video driver
513!if $%VBOX_WITH_WDDM% == "1"
514
515 ${LogVerbose} "Uninstalling WDDM video driver..."
516 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" driver uninstall $\"$INSTDIR\VBoxWddm.inf$\"" "true"
517 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" service delete VBoxWddm" "true"
518 ;misha> @todo driver file removal (as well as service removal) should be done as driver package uninstall
519 ; could be done with "VBoxDrvInst.exe /u", e.g. by passing additional arg to it denoting that driver package is to be uninstalled
520 Delete /REBOOTOK "$g_strSystemDir\drivers\VBoxWddm.sys"
521
522 ; Obsolete files begin
523 ${LogVerbose} "Uninstalling WDDM video driver for Windows 8..."
524 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" driver uninstall $\"$INSTDIR\VBoxVideoW8.inf$\"" "true"
525 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" service delete VBoxVideoW8" "true"
526 ;misha> @todo driver file removal (as well as service removal) should be done as driver package uninstall
527 ; could be done with "VBoxDrvInst.exe /u", e.g. by passing additional arg to it denoting that driver package is to be uninstalled
528 Delete /REBOOTOK "$g_strSystemDir\drivers\VBoxVideoW8.sys"
529
530 ${LogVerbose} "Uninstalling WDDM video driver for Windows Vista and 7..."
531 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" driver uninstall $\"$INSTDIR\VBoxVideoWddm.inf$\"" "true"
532 ; Always try to remove both VBoxVideoWddm & VBoxVideo services no matter what is installed currently
533 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" service delete VBoxVideoWddm" "true"
534 ;misha> @todo driver file removal (as well as service removal) should be done as driver package uninstall
535 ; could be done with "VBoxDrvInst.exe /u", e.g. by passing additional arg to it denoting that driver package is to be uninstalled
536 Delete /REBOOTOK "$g_strSystemDir\drivers\VBoxVideoWddm.sys"
537 ; Obsolete files end
538
539 Delete /REBOOTOK "$g_strSystemDir\VBoxDispD3D.dll"
540 !if $%KBUILD_TARGET_ARCH% == "amd64"
541 Delete /REBOOTOK "$g_strSysWow64\VBoxDispD3D-x86.dll"
542 !endif
543
544 !if $%VBOX_WITH_MESA3D% == "1"
545 Delete /REBOOTOK "$g_strSystemDir\VBoxNine.dll"
546 Delete /REBOOTOK "$g_strSystemDir\VBoxSVGA.dll"
547 Delete /REBOOTOK "$g_strSystemDir\VBoxICD.dll"
548 Delete /REBOOTOK "$g_strSystemDir\VBoxGL.dll"
549
550 !if $%KBUILD_TARGET_ARCH% == "amd64"
551 Delete /REBOOTOK "$g_strSysWow64\VBoxNine-x86.dll"
552 Delete /REBOOTOK "$g_strSysWow64\VBoxSVGA-x86.dll"
553 Delete /REBOOTOK "$g_strSysWow64\VBoxICD-x86.dll"
554 Delete /REBOOTOK "$g_strSysWow64\VBoxGL-x86.dll"
555 !endif
556 !endif
557!endif ; $%VBOX_WITH_WDDM% == "1"
558
559 ; Remove mouse driver
560 ${LogVerbose} "Removing mouse driver ..."
561 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" service delete VBoxMouse" "true"
562 Delete /REBOOTOK "$g_strSystemDir\drivers\VBoxMouse.sys"
563 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" registry delmultisz $\"SYSTEM\CurrentControlSet\Control\Class\{4D36E96F-E325-11CE-BFC1-08002BE10318}$\" $\"UpperFilters$\" $\"VBoxMouse$\"" "true"
564
565 ; Delete the VBoxService service
566 Call ${un}StopVBoxService
567 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" service delete VBoxService" "true"
568 DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Run" "VBoxService"
569 Delete /REBOOTOK "$g_strSystemDir\VBoxService.exe"
570
571 ; VBoxGINA
572 Delete /REBOOTOK "$g_strSystemDir\VBoxGINA.dll"
573 ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon" "GinaDLL"
574 ${If} $0 == "VBoxGINA.dll"
575 ${LogVerbose} "Removing auto-logon support ..."
576 DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon" "GinaDLL"
577 ${EndIf}
578 DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\VBoxGINA"
579
580 ; Delete VBoxTray
581 Call ${un}StopVBoxTray
582 DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Run" "VBoxTray"
583
584 ; Remove guest driver
585 ${LogVerbose} "Removing guest driver ..."
586 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" driver uninstall $\"$INSTDIR\VBoxGuest.inf$\"" "true"
587
588 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" service delete VBoxGuest" "true"
589 Delete /REBOOTOK "$g_strSystemDir\drivers\VBoxGuest.sys"
590 Delete /REBOOTOK "$g_strSystemDir\VBCoInst.dll" ; Deprecated, does not get installed anymore
591 Delete /REBOOTOK "$g_strSystemDir\VBoxTray.exe"
592 Delete /REBOOTOK "$g_strSystemDir\VBoxHook.dll"
593 DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Run" "VBoxTray" ; Remove VBoxTray autorun
594 Delete /REBOOTOK "$g_strSystemDir\VBoxControl.exe"
595
596 ; Remove shared folders driver
597 ${LogVerbose} "Removing shared folders driver ..."
598 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" netprovider remove VBoxSF" "true"
599 ${CmdExecute} "$\"$INSTDIR\VBoxDrvInst.exe$\" service delete VBoxSF" "true"
600 Delete /REBOOTOK "$g_strSystemDir\VBoxMRXNP.dll" ; The network provider DLL will be locked
601 !if $%KBUILD_TARGET_ARCH% == "amd64"
602 ; Only 64-bit installer: Also remove 32-bit DLLs on 64-bit target arch in Wow64 node
603 Delete /REBOOTOK "$g_strSysWow64\VBoxMRXNP.dll"
604 !endif ; amd64
605 Delete /REBOOTOK "$g_strSystemDir\drivers\VBoxSF.sys"
606
607 Pop $0
608
609FunctionEnd
610!macroend
611!insertmacro W2K_Uninstall ""
612!insertmacro W2K_Uninstall "un."
613
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette