VBoxGuestAdditionsCommon.nsh revision 6fd13c2e3e855d7f5a7147cb0414af050e1503e6
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; $Id$
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; @file
1ce069685b24d243eb0464f46d4c56b250c64445vboxsync; VBoxGuestAdditionsCommon.nsh - Common / shared utility functions.
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync;
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync;
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync; Copyright (C) 2006-2014 Oracle Corporation
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync;
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; This file is part of VirtualBox Open Source Edition (OSE), as
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; available from http://www.virtualbox.org. This file is free software;
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; you can redistribute it and/or modify it under the terms of the GNU
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; General Public License (GPL) as published by the Free Software
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; Foundation, in version 2 as it comes in the "COPYING" file of the
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync;
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncFunction Common_CopyFiles
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync SetOutPath "$INSTDIR"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync SetOverwrite on
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!ifdef VBOX_WITH_LICENSE_INSTALL_RTF
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; Copy license file (if any) into the installation directory
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "/oname=${LICENSE_FILE_RTF}" "$%VBOX_BRAND_LICENSE_RTF%"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!endif
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%VBOX_PATH_DIFX%\DIFxAPI.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxDrvInst.exe"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideo.inf"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!ifdef VBOX_SIGN_ADDITIONS
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideo.cat"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!endif
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "iexplore.ico"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
9ce5d949e4f1572d445a5c0aecabe9de8b672c99vboxsyncFunctionEnd
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!ifndef UNINSTALLER_ONLY
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncFunction ExtractFiles
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync ; @todo: Use a define for all the file specs to group the files per module
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync ; and keep the redundancy low
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync StrCpy "$0" "$INSTDIR\$%BUILD_TARGET_ARCH%"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; Root files
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync SetOutPath "$0"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!if $%VBOX_WITH_LICENSE_INSTALL_RTF% == "1"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "/oname=${LICENSE_FILE_RTF}" "$%VBOX_BRAND_LICENSE_RTF%"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!endif
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; Video driver
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync SetOutPath "$0\VBoxVideo"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideo.sys"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideo.inf"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!ifdef VBOX_SIGN_ADDITIONS
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideo.cat"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!endif
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxDisp.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!if $%VBOX_WITH_CROGL% == "1"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; crOpenGL
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLarrayspu.dll"
376b92d26cc4fad78e813cf33afcc0784adc9b19vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLcrutil.dll"
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLerrorspu.dll"
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpackspu.dll"
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpassthroughspu.dll"
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLfeedbackspu.dll"
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGL.dll"
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsync
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsync SetOutPath "$0\VBoxVideo\OpenGL"
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsync FILE "$%PATH_OUT%\bin\additions\d3d8.dll"
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsync FILE "$%PATH_OUT%\bin\additions\d3d9.dll"
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxD3D8.dll"
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxD3D9.dll"
376b92d26cc4fad78e813cf33afcc0784adc9b19vboxsync FILE "$%PATH_OUT%\bin\additions\wined3d.dll"
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsync
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsync ; Only 64-bit installer: Also copy 32-bit DLLs on 64-bit target
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsync SetOutPath "$0\VBoxVideo\OpenGL\SysWow64"
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\d3d8.dll"
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\d3d9.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxOGLarrayspu.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxOGLcrutil.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxOGLerrorspu.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxOGLpackspu.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxOGLpassthroughspu.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxOGLfeedbackspu.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxOGL.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxD3D8.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxD3D9.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\wined3d.dll"
508452243fd3328f7b9e0405d39fb9dc004e31b8vboxsync !endif
508452243fd3328f7b9e0405d39fb9dc004e31b8vboxsync!endif
508452243fd3328f7b9e0405d39fb9dc004e31b8vboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!if $%VBOX_WITH_WDDM% == "1"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; WDDM Video driver for Vista and 7
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync SetOutPath "$0\VBoxVideoWddm"
f409459bdd4c15cdb8d7fb6c6d54338cce9ac814vboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync !ifdef VBOX_SIGN_ADDITIONS
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideoWddm.cat"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync !endif
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideoWddm.sys"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideoWddm.inf"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxDispD3D.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync !if $%VBOX_WITH_CROGL% == "1"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLarrayspu.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLcrutil.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLerrorspu.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpackspu.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpassthroughspu.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLfeedbackspu.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGL.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxD3D9wddm.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\wined3dwddm.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync !endif ; $%VBOX_WITH_CROGL% == "1"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxDispD3D-x86.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync !if $%VBOX_WITH_CROGL% == "1"
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLarrayspu-x86.dll"
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLcrutil-x86.dll"
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLerrorspu-x86.dll"
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpackspu-x86.dll"
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpassthroughspu-x86.dll"
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLfeedbackspu-x86.dll"
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGL-x86.dll"
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxD3D9wddm-x86.dll"
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync FILE "$%PATH_OUT%\bin\additions\wined3dwddm-x86.dll"
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync !endif ; $%VBOX_WITH_CROGL% == "1"
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync !endif ; $%BUILD_TARGET_ARCH% == "amd64"
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync !if $%VBOX_WITH_WDDM_W8% == "1"
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync ; WDDM Video driver for Win8
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync SetOutPath "$0\VBoxVideoW8"
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync !ifdef VBOX_SIGN_ADDITIONS
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideoW8.cat"
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync !endif
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideoW8.sys"
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideoW8.inf"
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxDispD3D.dll"
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync !if $%VBOX_WITH_CROGL% == "1"
657b2c9f6d33f08001e5fa6f6e0572dcf0391013vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLarrayspu.dll"
657b2c9f6d33f08001e5fa6f6e0572dcf0391013vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLcrutil.dll"
657b2c9f6d33f08001e5fa6f6e0572dcf0391013vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLerrorspu.dll"
657b2c9f6d33f08001e5fa6f6e0572dcf0391013vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpackspu.dll"
657b2c9f6d33f08001e5fa6f6e0572dcf0391013vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpassthroughspu.dll"
657b2c9f6d33f08001e5fa6f6e0572dcf0391013vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLfeedbackspu.dll"
657b2c9f6d33f08001e5fa6f6e0572dcf0391013vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGL.dll"
657b2c9f6d33f08001e5fa6f6e0572dcf0391013vboxsync
657b2c9f6d33f08001e5fa6f6e0572dcf0391013vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxD3D9wddm.dll"
657b2c9f6d33f08001e5fa6f6e0572dcf0391013vboxsync FILE "$%PATH_OUT%\bin\additions\wined3dwddm.dll"
657b2c9f6d33f08001e5fa6f6e0572dcf0391013vboxsync !endif ; $%VBOX_WITH_CROGL% == "1"
9cb702c3a5fd2287c57c7c1e98a61ba9e357b4devboxsync
657b2c9f6d33f08001e5fa6f6e0572dcf0391013vboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
6fe1329154975472e055284198df7fa8e64dee3avboxsync FILE "$%PATH_OUT%\bin\additions\VBoxDispD3D-x86.dll"
6fe1329154975472e055284198df7fa8e64dee3avboxsync
6fe1329154975472e055284198df7fa8e64dee3avboxsync !if $%VBOX_WITH_CROGL% == "1"
6fe1329154975472e055284198df7fa8e64dee3avboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLarrayspu-x86.dll"
6fe1329154975472e055284198df7fa8e64dee3avboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLcrutil-x86.dll"
6fe1329154975472e055284198df7fa8e64dee3avboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLerrorspu-x86.dll"
6fe1329154975472e055284198df7fa8e64dee3avboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpackspu-x86.dll"
6fe1329154975472e055284198df7fa8e64dee3avboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpassthroughspu-x86.dll"
6fe1329154975472e055284198df7fa8e64dee3avboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLfeedbackspu-x86.dll"
6fe1329154975472e055284198df7fa8e64dee3avboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGL-x86.dll"
6fe1329154975472e055284198df7fa8e64dee3avboxsync
6fe1329154975472e055284198df7fa8e64dee3avboxsync FILE "$%PATH_OUT%\bin\additions\VBoxD3D9wddm-x86.dll"
6fe1329154975472e055284198df7fa8e64dee3avboxsync FILE "$%PATH_OUT%\bin\additions\wined3dwddm-x86.dll"
6fe1329154975472e055284198df7fa8e64dee3avboxsync !endif ; $%VBOX_WITH_CROGL% == "1"
6fe1329154975472e055284198df7fa8e64dee3avboxsync !endif ; $%BUILD_TARGET_ARCH% == "amd64"
6fe1329154975472e055284198df7fa8e64dee3avboxsync !endif ; $%VBOX_WITH_WDDM_W8% == "1"
6fe1329154975472e055284198df7fa8e64dee3avboxsync!endif ; $%VBOX_WITH_WDDM% == "1"
6fe1329154975472e055284198df7fa8e64dee3avboxsync
6fe1329154975472e055284198df7fa8e64dee3avboxsync ; Mouse driver
6fe1329154975472e055284198df7fa8e64dee3avboxsync SetOutPath "$0\VBoxMouse"
6fe1329154975472e055284198df7fa8e64dee3avboxsync FILE "$%PATH_OUT%\bin\additions\VBoxMouse.sys"
6fe1329154975472e055284198df7fa8e64dee3avboxsync FILE "$%PATH_OUT%\bin\additions\VBoxMouse.inf"
6fe1329154975472e055284198df7fa8e64dee3avboxsync!ifdef VBOX_SIGN_ADDITIONS
6fe1329154975472e055284198df7fa8e64dee3avboxsync FILE "$%PATH_OUT%\bin\additions\VBoxMouse.cat"
6fe1329154975472e055284198df7fa8e64dee3avboxsync!endif
6fe1329154975472e055284198df7fa8e64dee3avboxsync
6fe1329154975472e055284198df7fa8e64dee3avboxsync!if $%BUILD_TARGET_ARCH% == "x86"
6fe1329154975472e055284198df7fa8e64dee3avboxsync SetOutPath "$0\VBoxMouse\NT4"
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync FILE "$%PATH_OUT%\bin\additions\VBoxMouseNT.sys"
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync!endif
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync ; Guest driver
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync SetOutPath "$0\VBoxGuest"
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync FILE "$%PATH_OUT%\bin\additions\VBoxGuest.sys"
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync FILE "$%PATH_OUT%\bin\additions\VBoxGuest.inf"
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync!ifdef VBOX_SIGN_ADDITIONS
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync FILE "$%PATH_OUT%\bin\additions\VBoxGuest.cat"
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync!endif
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync FILE "$%PATH_OUT%\bin\additions\VBoxTray.exe"
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync FILE "$%PATH_OUT%\bin\additions\VBoxHook.dll"
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync FILE "$%PATH_OUT%\bin\additions\VBoxControl.exe"
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync!if $%BUILD_TARGET_ARCH% == "x86"
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync SetOutPath "$0\VBoxGuest\NT4"
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync FILE "$%PATH_OUT%\bin\additions\VBoxGuestNT.sys"
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync!endif
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync ; VBoxService
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync SetOutPath "$0\Bin"
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync FILE "$%PATH_OUT%\bin\additions\VBoxService.exe"
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync!if $%BUILD_TARGET_ARCH% == "x86"
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync FILE "$%PATH_OUT%\bin\additions\VBoxServiceNT.exe"
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync!endif
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync ; Shared Folders
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync SetOutPath "$0\VBoxSF"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxSF.sys"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxMRXNP.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; Only 64-bit installer: Also copy 32-bit DLLs on 64-bit target
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxMRXNP-x86.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync !endif
ae16af2d7d3c99d359094a7f19f5937efc2e66bdvboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; Auto-Logon
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync SetOutPath "$0\AutoLogon"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync FILE "$%PATH_OUT%\bin\additions\VBoxGINA.dll"
ae017640afff8b6cc50453182a4edf2eb0903a12vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxCredProv.dll"
cdf129515a2b03bc9d122091ce7656d6e6934cc7vboxsync
7e837ad8d6aeb3f86520ea7adb61e4eb15f2087evboxsync ; Misc tools
7e837ad8d6aeb3f86520ea7adb61e4eb15f2087evboxsync SetOutPath "$0\Tools"
7e837ad8d6aeb3f86520ea7adb61e4eb15f2087evboxsync FILE "$%PATH_OUT%\bin\additions\VBoxDrvInst.exe"
cdf129515a2b03bc9d122091ce7656d6e6934cc7vboxsync FILE "$%VBOX_PATH_DIFX%\DIFxAPI.dll"
7e837ad8d6aeb3f86520ea7adb61e4eb15f2087evboxsync
7e837ad8d6aeb3f86520ea7adb61e4eb15f2087evboxsync!if $%BUILD_TARGET_ARCH% == "x86"
7e837ad8d6aeb3f86520ea7adb61e4eb15f2087evboxsync SetOutPath "$0\Tools\NT4"
7e837ad8d6aeb3f86520ea7adb61e4eb15f2087evboxsync FILE "$%PATH_OUT%\bin\additions\VBoxGuestDrvInst.exe"
7e837ad8d6aeb3f86520ea7adb61e4eb15f2087evboxsync FILE "$%PATH_OUT%\bin\additions\RegCleanup.exe"
8b7ee9f7ebabcdbf40fececa0d6321d97d5143d8vboxsync!endif
8b7ee9f7ebabcdbf40fececa0d6321d97d5143d8vboxsync
7e837ad8d6aeb3f86520ea7adb61e4eb15f2087evboxsync Pop $0
7e837ad8d6aeb3f86520ea7adb61e4eb15f2087evboxsync
7e837ad8d6aeb3f86520ea7adb61e4eb15f2087evboxsyncFunctionEnd
31a693ce9a8a9ebbecdcea9f24ce7f912aef4cd1vboxsync!endif ; UNINSTALLER_ONLY
7e837ad8d6aeb3f86520ea7adb61e4eb15f2087evboxsync
cdf129515a2b03bc9d122091ce7656d6e6934cc7vboxsync!macro CheckArchitecture un
cdf129515a2b03bc9d122091ce7656d6e6934cc7vboxsyncFunction ${un}CheckArchitecture
cdf129515a2b03bc9d122091ce7656d6e6934cc7vboxsync
cdf129515a2b03bc9d122091ce7656d6e6934cc7vboxsync Push $0
cdf129515a2b03bc9d122091ce7656d6e6934cc7vboxsync
7e837ad8d6aeb3f86520ea7adb61e4eb15f2087evboxsync System::Call "kernel32::GetCurrentProcess() i .s"
cdf129515a2b03bc9d122091ce7656d6e6934cc7vboxsync System::Call "kernel32::IsWow64Process(i s, *i .r0)"
cdf129515a2b03bc9d122091ce7656d6e6934cc7vboxsync ; R0 now contains 1 if we're a 64-bit process, or 0 if not
7e837ad8d6aeb3f86520ea7adb61e4eb15f2087evboxsync
ae017640afff8b6cc50453182a4edf2eb0903a12vboxsync!if $%BUILD_TARGET_ARCH% == "amd64"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync IntCmp $0 0 wrong_platform
b986941f0aa5155c7fd37da0aa5876675a7680e4vboxsync!else ; 32-bit
b986941f0aa5155c7fd37da0aa5876675a7680e4vboxsync IntCmp $0 1 wrong_platform
b986941f0aa5155c7fd37da0aa5876675a7680e4vboxsync!endif
cdf129515a2b03bc9d122091ce7656d6e6934cc7vboxsync
cdf129515a2b03bc9d122091ce7656d6e6934cc7vboxsync Push 0
b986941f0aa5155c7fd37da0aa5876675a7680e4vboxsync Goto exit
b986941f0aa5155c7fd37da0aa5876675a7680e4vboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncwrong_platform:
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
ae16af2d7d3c99d359094a7f19f5937efc2e66bdvboxsync Push 1
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto exit
cdf129515a2b03bc9d122091ce7656d6e6934cc7vboxsync
cdf129515a2b03bc9d122091ce7656d6e6934cc7vboxsyncexit:
cdf129515a2b03bc9d122091ce7656d6e6934cc7vboxsync
cdf129515a2b03bc9d122091ce7656d6e6934cc7vboxsyncFunctionEnd
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!macroend
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!insertmacro CheckArchitecture ""
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!insertmacro CheckArchitecture "un."
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync;
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; Macro for retrieving the Windows version this installer is running on.
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync;
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; @return Stack: Windows version string. Empty on error /
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; if not able to identify.
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync;
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!macro GetWindowsVersionEx un
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncFunction ${un}GetWindowsVersionEx
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push $1
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; Check if we are running on Windows 2000 or above
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; For other windows versions (> XP) it may be necessary to change winver.nsh
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Call ${un}GetWindowsVersion
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $0 ; Windows Version
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync Push $0 ; The windows version string
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "NT" ; String to search for. W2K+ returns no string containing "NT"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Call ${un}StrStr
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $1
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $1 == "" ; If empty -> not NT 3.XX or 4.XX
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; $0 contains the original version string
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${Else}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; Ok we know it is NT. Must be a string like NT X.XX
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push $0 ; The windows version string
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "4." ; String to search for
42aef05f4b27fb393967e581be04be455064c80avboxsync Call ${un}StrStr
42aef05f4b27fb393967e581be04be455064c80avboxsync Pop $1
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $1 == "" ; If empty -> not NT 4
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync ;; @todo NT <= 3.x ?
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; $0 contains the original version string
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${Else}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync StrCpy $0 "NT4"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $1
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Exch $0
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncFunctionEnd
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!macroend
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!insertmacro GetWindowsVersionEx ""
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!insertmacro GetWindowsVersionEx "un."
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!macro GetAdditionsVersion un
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncFunction ${un}GetAdditionsVersion
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync Push $0
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync Push $1
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync ; Get additions version
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync ReadRegStr $0 HKLM "SOFTWARE\$%VBOX_VENDOR_SHORT%\VirtualBox Guest Additions" "Version"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; Get revision
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync ReadRegStr $g_strAddVerRev HKLM "SOFTWARE\$%VBOX_VENDOR_SHORT%\VirtualBox Guest Additions" "Revision"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; Extract major version
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "$0" ; String
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "." ; SubString
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push ">" ; SearchDirection
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "<" ; StrInclusionDirection
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "0" ; IncludeSubString
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsync Push "0" ; Loops
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "0" ; CaseSensitive
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Call ${un}StrStrAdv
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $g_strAddVerMaj
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; Extract minor version
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "$0" ; String
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "." ; SubString
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push ">" ; SearchDirection
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push ">" ; StrInclusionDirection
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "0" ; IncludeSubString
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "0" ; Loops
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "0" ; CaseSensitive
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Call ${un}StrStrAdv
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $1 ; Got first part (e.g. "1.5")
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "$1" ; String
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "." ; SubString
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push ">" ; SearchDirection
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "<" ; StrInclusionDirection
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "0" ; IncludeSubString
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "0" ; Loops
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "0" ; CaseSensitive
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Call ${un}StrStrAdv
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $g_strAddVerMin ; Extracted second part (e.g. "5" from "1.5")
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; Extract build number
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "$0" ; String
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "." ; SubString
e48239695d41f806ff02d8a60b97dc20d4822d7avboxsync Push "<" ; SearchDirection
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push ">" ; StrInclusionDirection
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "0" ; IncludeSubString
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "0" ; Loops
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "0" ; CaseSensitive
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Call ${un}StrStrAdv
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $g_strAddVerBuild
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncexit:
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $1
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncFunctionEnd
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsync!macroend
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!insertmacro GetAdditionsVersion ""
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!insertmacro GetAdditionsVersion "un."
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!macro StopVBoxService un
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncFunction ${un}StopVBoxService
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push $0 ; Temp results
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push $1
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push $2 ; Image name of VBoxService
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push $3 ; Safety counter
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync StrCpy $3 "0" ; Init counter
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${LogVerbose} "Stopping VBoxService ..."
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncsvc_stop:
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${LogVerbose} "Stopping VBoxService via SCM ..."
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $g_strWinVersion == "NT4"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync nsExec::Exec '"$SYSDIR\net.exe" stop VBoxService'
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${Else}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync nsExec::Exec '"$SYSDIR\SC.exe" stop VBoxService'
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Sleep "1000" ; Wait a bit
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
1207f59aa62006952dbb0bf7700decf34d8caeb2vboxsyncexe_stop:
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!ifdef _DEBUG
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${LogVerbose} "Stopping VBoxService (as exe) ..."
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!endif
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncexe_stop_loop:
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync IntCmp $3 10 exit ; Only try this loop 10 times max
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync IntOp $3 $3 + 1 ; Increment
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!ifdef _DEBUG
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${LogVerbose} "Stopping attempt #$3"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!endif
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $g_strWinVersion == "NT4"
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsync StrCpy $2 "VBoxServiceNT.exe"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${Else}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync StrCpy $2 "VBoxService.exe"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${nsProcess::FindProcess} $2 $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync StrCmp $0 0 0 exit
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${nsProcess::KillProcess} $2 $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Sleep "1000" ; Wait a bit
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto exe_stop_loop
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncexit:
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${LogVerbose} "Stopping VBoxService done"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $3
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $2
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $1
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncFunctionEnd
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!macroend
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!insertmacro StopVBoxService ""
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!insertmacro StopVBoxService "un."
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!macro StopVBoxTray un
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncFunction ${un}StopVBoxTray
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push $0 ; Temp results
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push $1 ; Safety counter
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync StrCpy $1 "0" ; Init counter
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${LogVerbose} "Stopping VBoxTray ..."
e48239695d41f806ff02d8a60b97dc20d4822d7avboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncexe_stop:
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync IntCmp $1 10 exit ; Only try this loop 10 times max
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync IntOp $1 $1 + 1 ; Increment
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync ${nsProcess::FindProcess} "VBoxTray.exe" $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync StrCmp $0 0 0 exit
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4f3d37f3c8ea851c3d57304fac430764b77a84dcvboxsync ${nsProcess::KillProcess} "VBoxTray.exe" $0
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync Sleep "1000" ; Wait a bit
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync Goto exe_stop
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsyncexit:
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync ${LogVerbose} "Stopping VBoxTray done"
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync Pop $1
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync Pop $0
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsyncFunctionEnd
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync!macroend
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync!insertmacro StopVBoxTray ""
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync!insertmacro StopVBoxTray "un."
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync!macro StopVBoxMMR un
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsyncFunction ${un}StopVBoxMMR
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync Push $0 ; Temp results
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync Push $1 ; Safety counter
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync StrCpy $1 "0" ; Init counter
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync DetailPrint "Stopping VBoxMMR ..."
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsyncexe_stop:
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync IntCmp $1 10 exit ; Only try this loop 10 times max
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync IntOp $1 $1 + 1 ; Increment
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync ${nsProcess::FindProcess} "VBoxMMR.exe" $0
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync StrCmp $0 0 0 exit
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync ${nsProcess::KillProcess} "VBoxMMR.exe" $0
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync Sleep "1000" ; Wait a bit
4f3d37f3c8ea851c3d57304fac430764b77a84dcvboxsync Goto exe_stop
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsyncexit:
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync DetailPrint "Stopping VBoxMMR done."
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync Pop $1
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync Pop $0
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsyncFunctionEnd
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync!macroend
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync!insertmacro StopVBoxMMR ""
8ccde4f32d77b1ad3f02111f28a48ee85abf6779vboxsync!insertmacro StopVBoxMMR "un."
8ccde4f32d77b1ad3f02111f28a48ee85abf6779vboxsync
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync!macro WriteRegBinR ROOT KEY NAME VALUE
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync WriteRegBin "${ROOT}" "${KEY}" "${NAME}" "${VALUE}"
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync!macroend
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync!macro AbortShutdown un
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsyncFunction ${un}AbortShutdown
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync ${If} ${FileExists} "$g_strSystemDir\shutdown.exe"
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync ; Try to abort the shutdown
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync ${CmdExecute} "$\"$g_strSystemDir\shutdown.exe$\" -a" "true"
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync ${Else}
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync ${LogVerbose} "Shutting down not supported: Binary $\"$g_strSystemDir\shutdown.exe$\" not found"
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync ${EndIf}
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsyncFunctionEnd
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync!macroend
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync!insertmacro AbortShutdown ""
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync!insertmacro AbortShutdown "un."
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync!macro CheckForWDDMCapability un
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsyncFunction ${un}CheckForWDDMCapability
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync!if $%VBOX_WITH_WDDM% == "1"
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync ; If we're on a 32-bit Windows Vista / 7 / 8 we can use the WDDM driver
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync ${If} $g_strWinVersion == "Vista"
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync ${OrIf} $g_strWinVersion == "7"
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync ${OrIf} $g_strWinVersion == "8"
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync ${OrIf} $g_strWinVersion == "8_1"
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync ${OrIf} $g_strWinVersion == "10"
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync StrCpy $g_bCapWDDM "true"
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync ${LogVerbose} "OS is WDDM driver capable"
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync ${EndIf}
8ccde4f32d77b1ad3f02111f28a48ee85abf6779vboxsync ; If we're on Windows 8 we *have* to use the WDDM driver, so select it
8ccde4f32d77b1ad3f02111f28a48ee85abf6779vboxsync ; by default
8ccde4f32d77b1ad3f02111f28a48ee85abf6779vboxsync ${If} $g_strWinVersion == "8"
8ccde4f32d77b1ad3f02111f28a48ee85abf6779vboxsync ${OrIf} $g_strWinVersion == "8_1"
8ccde4f32d77b1ad3f02111f28a48ee85abf6779vboxsync ${OrIf} $g_strWinVersion == "10"
8ccde4f32d77b1ad3f02111f28a48ee85abf6779vboxsync StrCpy $g_bWithWDDM "true"
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync ${LogVerbose} "OS needs WDDM driver by default"
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync ${EndIf}
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync!endif
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsyncFunctionEnd
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync!macroend
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync!insertmacro CheckForWDDMCapability ""
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync!insertmacro CheckForWDDMCapability "un."
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync!macro CheckForCapabilities un
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsyncFunction ${un}CheckForCapabilities
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync Push $0
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync ; Retrieve system mode and store result in
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync System::Call 'user32::GetSystemMetrics(i ${SM_CLEANBOOT}) i .r0'
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync StrCpy $g_iSystemMode $0
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync ; Does the guest have a DLL cache?
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync ${If} $g_strWinVersion == "Vista"
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync ${OrIf} $g_strWinVersion == "7"
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync ${OrIf} $g_strWinVersion == "8"
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync ${OrIf} $g_strWinVersion == "8_1"
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync ${OrIf} $g_strWinVersion == "10"
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync StrCpy $g_bCapDllCache "true"
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync ${LogVerbose} "OS has a DLL cache"
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync ${EndIf}
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync ; Check whether this OS is capable of handling WDDM drivers
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync Call ${un}CheckForWDDMCapability
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync Pop $0
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsyncFunctionEnd
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync!macroend
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync!insertmacro CheckForCapabilities ""
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync!insertmacro CheckForCapabilities "un."
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync; Switches (back) the path + registry view to
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync; 32-bit mode (SysWOW64) on 64-bit guests
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync!macro SetAppMode32 un
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsyncFunction ${un}SetAppMode32
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync ${EnableX64FSRedirection}
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync SetRegView 32
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync !endif
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsyncFunctionEnd
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync!macroend
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync!insertmacro SetAppMode32 ""
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync!insertmacro SetAppMode32 "un."
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync; Because this NSIS installer is always built in 32-bit mode, we have to
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync; do some tricks for the Windows paths + registry on 64-bit guests
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync!macro SetAppMode64 un
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsyncFunction ${un}SetAppMode64
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync ${DisableX64FSRedirection}
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync SetRegView 64
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync !endif
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsyncFunctionEnd
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync!macroend
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync!insertmacro SetAppMode64 ""
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync!insertmacro SetAppMode64 "un."
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync;
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync; Retrieves the vendor ("CompanyName" of FILEINFO structure)
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; of a given file.
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; @return Stack: Company name, or "" on error/if not found.
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; @param Stack: File name to retrieve vendor for.
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsync;
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!macro GetFileVendor un
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncFunction ${un}GetFileVendor
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; Preserve values
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Exch $0 ; Stack: $0 <filename> (Get file name into $0)
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push $1
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync IfFileExists "$0" found
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto not_found
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncfound:
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync VBoxGuestInstallHelper::FileGetVendor "$0"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; Stack: <vendor> $1 $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $0 ; Get vendor
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $1 ; Restore $1
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Exch $0 ; Restore $0, push vendor on top of stack
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto end
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncnot_found:
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $1
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "File not found"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto end
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncend:
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncFunctionEnd
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!macroend
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!insertmacro GetFileVendor ""
1207f59aa62006952dbb0bf7700decf34d8caeb2vboxsync!insertmacro GetFileVendor "un."
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync;
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; Retrieves the architecture of a given file.
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; @return Stack: Architecture ("x86", "amd64") or error message.
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; @param Stack: File name to retrieve architecture for.
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync;
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!macro GetFileArchitecture un
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncFunction ${un}GetFileArchitecture
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; Preserve values
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Exch $0 ; Stack: $0 <filename> (Get file name into $0)
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push $1
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync IfFileExists "$0" found
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto not_found
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncfound:
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync VBoxGuestInstallHelper::FileGetArchitecture "$0"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; Stack: <architecture> $1 $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $0 ; Get architecture string
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $1 ; Restore $1
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Exch $0 ; Restore $0, push vendor on top of stack
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto end
1207f59aa62006952dbb0bf7700decf34d8caeb2vboxsync
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsyncnot_found:
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $1
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "File not found"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto end
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncend:
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncFunctionEnd
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!macroend
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!insertmacro GetFileArchitecture ""
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync!insertmacro GetFileArchitecture "un."
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync;
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; Verifies a given file by checking its file vendor and target
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync; architecture.
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync; @return Stack: "0" if valid, "1" if not, "2" on error / not found.
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync; @param Stack: Architecture ("x86" or "amd64").
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync; @param Stack: Vendor.
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync; @param Stack: File name to verify.
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync;
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync!macro VerifyFile un
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsyncFunction ${un}VerifyFile
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync ; Preserve values
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync Exch $0 ; File; S: old$0 vendor arch
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync Exch ; S: vendor old$0 arch
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync Exch $1 ; Vendor; S: old$1 old$0 arch
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync Exch ; S: old$0 old$1 arch
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync Exch 2 ; S: arch old$1 old$0
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync Exch $2 ; Architecture; S: old$2 old$1 old$0
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync Push $3 ; S: old$3 old$2 old$1 old$0
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync IfFileExists "$0" check_vendor
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync Goto not_found
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsynccheck_vendor:
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync
56349fc0a23f96f82208016f8f59f8377bb284b1vboxsync Push $0
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync Call ${un}GetFileVendor
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $3
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
e48239695d41f806ff02d8a60b97dc20d4822d7avboxsync ${If} $3 == $1
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto check_arch
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync StrCpy $3 "1" ; Invalid
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto end
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsynccheck_arch:
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push $0
3933885bc0c2c93436d858a14564c6179ec72872vboxsync Call ${un}GetFileArchitecture
3933885bc0c2c93436d858a14564c6179ec72872vboxsync Pop $3
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
3933885bc0c2c93436d858a14564c6179ec72872vboxsync ${If} $3 == $2
3933885bc0c2c93436d858a14564c6179ec72872vboxsync StrCpy $3 "0" ; Valid
3933885bc0c2c93436d858a14564c6179ec72872vboxsync ${Else}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync StrCpy $3 "1" ; Invalid
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto end
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncnot_found:
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
3933885bc0c2c93436d858a14564c6179ec72872vboxsync StrCpy $3 "2" ; Not found
3933885bc0c2c93436d858a14564c6179ec72872vboxsync Goto end
3933885bc0c2c93436d858a14564c6179ec72872vboxsync
3933885bc0c2c93436d858a14564c6179ec72872vboxsyncend:
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; S: old$3 old$2 old$1 old$0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Exch $3 ; S: $3 old$2 old$1 old$0
3933885bc0c2c93436d858a14564c6179ec72872vboxsync Exch ; S: old$2 $3 old$1
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $2 ; S: $3 old$1 old$0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Exch ; S: old$1 $3 old$0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $1 ; S: $3 old$0
3933885bc0c2c93436d858a14564c6179ec72872vboxsync Exch ; S: old$0 $3
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $0 ; S: $3
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncFunctionEnd
3933885bc0c2c93436d858a14564c6179ec72872vboxsync!macroend
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!insertmacro VerifyFile ""
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!insertmacro VerifyFile "un."
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync;
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; Macro for accessing VerifyFile in a more convenient way by using
36a04912b64bea8318327fe0723535f1b3f041b0vboxsync; a parameter list.
36a04912b64bea8318327fe0723535f1b3f041b0vboxsync; @return Stack: "0" if valid, "1" if not, "2" on error / not found.
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; @param Un/Installer prefix; either "" or "un".
36a04912b64bea8318327fe0723535f1b3f041b0vboxsync; @param Name of file to verify.
36a04912b64bea8318327fe0723535f1b3f041b0vboxsync; @param Vendor to check for.
36a04912b64bea8318327fe0723535f1b3f041b0vboxsync; @param Architecture ("x86" or "amd64") to check for.
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync;
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!macro VerifyFileEx un File Vendor Architecture
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "${Architecture}"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "${Vendor}"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "${File}"
a72b5355eb89aafe6bfcc8912cf02645d7cccceavboxsync ${LogVerbose} "Verifying file $\"${File}$\" ..."
3933885bc0c2c93436d858a14564c6179ec72872vboxsync Call ${un}VerifyFile
3933885bc0c2c93436d858a14564c6179ec72872vboxsync Pop $0
3933885bc0c2c93436d858a14564c6179ec72872vboxsync ${If} $0 == "0"
3933885bc0c2c93436d858a14564c6179ec72872vboxsync ${LogVerbose} "Verification of file $\"${File}$\" successful (Vendor: ${Vendor}, Architecture: ${Architecture})"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${ElseIf} $0 == "1"
3933885bc0c2c93436d858a14564c6179ec72872vboxsync ${LogVerbose} "Verification of file $\"${File}$\" failed (not Vendor: ${Vendor}, and/or not Architecture: ${Architecture})"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${Else}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${LogVerbose} "Skipping to file $\"${File}$\"; not found"
3933885bc0c2c93436d858a14564c6179ec72872vboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; Push result popped off the stack to stack again
3933885bc0c2c93436d858a14564c6179ec72872vboxsync Push $0
3933885bc0c2c93436d858a14564c6179ec72872vboxsync!macroend
3933885bc0c2c93436d858a14564c6179ec72872vboxsync!define VerifyFileEx "!insertmacro VerifyFileEx"
3933885bc0c2c93436d858a14564c6179ec72872vboxsync
3933885bc0c2c93436d858a14564c6179ec72872vboxsync;
3933885bc0c2c93436d858a14564c6179ec72872vboxsync; Macro for copying a file only if the source file is verified
3933885bc0c2c93436d858a14564c6179ec72872vboxsync; to be from a certain vendor and architecture.
3933885bc0c2c93436d858a14564c6179ec72872vboxsync; @return Stack: "0" if copied, "1" if not, "2" on error / not found.
3933885bc0c2c93436d858a14564c6179ec72872vboxsync; @param Un/Installer prefix; either "" or "un".
3933885bc0c2c93436d858a14564c6179ec72872vboxsync; @param Name of file to verify and copy to destination.
3933885bc0c2c93436d858a14564c6179ec72872vboxsync; @param Destination name to copy verified file to.
3933885bc0c2c93436d858a14564c6179ec72872vboxsync; @param Vendor to check for.
3933885bc0c2c93436d858a14564c6179ec72872vboxsync; @param Architecture ("x86" or "amd64") to check for.
3933885bc0c2c93436d858a14564c6179ec72872vboxsync;
3933885bc0c2c93436d858a14564c6179ec72872vboxsync!macro CopyFileEx un FileSrc FileDest Vendor Architecture
3933885bc0c2c93436d858a14564c6179ec72872vboxsync Push $0
3933885bc0c2c93436d858a14564c6179ec72872vboxsync Push "${Architecture}"
3933885bc0c2c93436d858a14564c6179ec72872vboxsync Push "${Vendor}"
3933885bc0c2c93436d858a14564c6179ec72872vboxsync Push "${FileSrc}"
3933885bc0c2c93436d858a14564c6179ec72872vboxsync Call ${un}VerifyFile
3933885bc0c2c93436d858a14564c6179ec72872vboxsync Pop $0
3933885bc0c2c93436d858a14564c6179ec72872vboxsync ${If} $0 == "0"
060f7ec6ae5c99df18341ef2e1f3e91f4b0c89f1vboxsync ${LogVerbose} "Copying verified file $\"${FileSrc}$\" to $\"${FileDest}$\" ..."
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ClearErrors
060f7ec6ae5c99df18341ef2e1f3e91f4b0c89f1vboxsync SetOverwrite on
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync CopyFiles /SILENT "${FileSrc}" "${FileDest}"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} ${Errors}
cc74f15083bf80fbc96723a89faa06c15d0dead8vboxsync CreateDirectory "$TEMP\${PRODUCT_NAME}"
70ca8d009d026a301bf7fa08cd18c6494c45fdeevboxsync ${GetFileName} "${FileSrc}" $0 ; Get the base name
70ca8d009d026a301bf7fa08cd18c6494c45fdeevboxsync CopyFiles /SILENT "${FileSrc}" "$TEMP\${PRODUCT_NAME}\$0"
70ca8d009d026a301bf7fa08cd18c6494c45fdeevboxsync ${LogVerbose} "Immediate installation failed, postponing to next reboot (temporary location is: $\"$TEMP\${PRODUCT_NAME}\$0$\") ..."
70ca8d009d026a301bf7fa08cd18c6494c45fdeevboxsync ;${InstallFileEx} "${un}" "${FileSrc}" "${FileDest}" "$TEMP" ; Only works with compile time files!
70ca8d009d026a301bf7fa08cd18c6494c45fdeevboxsync System::Call "kernel32::MoveFileEx(t '$TEMP\${PRODUCT_NAME}\$0', t '${FileDest}', i 5)"
70ca8d009d026a301bf7fa08cd18c6494c45fdeevboxsync ${EndIf}
70ca8d009d026a301bf7fa08cd18c6494c45fdeevboxsync ${Else}
3933885bc0c2c93436d858a14564c6179ec72872vboxsync ${LogVerbose} "Skipping to copy file $\"${FileSrc}$\" to $\"${FileDest}$\" (not Vendor: ${Vendor}, Architecture: ${Architecture})"
3933885bc0c2c93436d858a14564c6179ec72872vboxsync ${EndIf}
3933885bc0c2c93436d858a14564c6179ec72872vboxsync ; Push result popped off the stack to stack again
3933885bc0c2c93436d858a14564c6179ec72872vboxsync Push $0
70ca8d009d026a301bf7fa08cd18c6494c45fdeevboxsync!macroend
3933885bc0c2c93436d858a14564c6179ec72872vboxsync!define CopyFileEx "!insertmacro CopyFileEx"
3933885bc0c2c93436d858a14564c6179ec72872vboxsync
3933885bc0c2c93436d858a14564c6179ec72872vboxsync;
3933885bc0c2c93436d858a14564c6179ec72872vboxsync; Macro for installing a library/DLL.
3933885bc0c2c93436d858a14564c6179ec72872vboxsync; @return Stack: "0" if copied, "1" if not, "2" on error / not found.
3933885bc0c2c93436d858a14564c6179ec72872vboxsync; @param Un/Installer prefix; either "" or "un".
3933885bc0c2c93436d858a14564c6179ec72872vboxsync; @param Name of lib/DLL to copy to destination.
3933885bc0c2c93436d858a14564c6179ec72872vboxsync; @param Destination name to copy the source file to.
70ca8d009d026a301bf7fa08cd18c6494c45fdeevboxsync; @param Temporary folder used for exchanging the (locked) lib/DLL after a reboot.
3933885bc0c2c93436d858a14564c6179ec72872vboxsync;
3933885bc0c2c93436d858a14564c6179ec72872vboxsync!macro InstallFileEx un FileSrc FileDest DirTemp
3933885bc0c2c93436d858a14564c6179ec72872vboxsync ${LogVerbose} "Installing library $\"${FileSrc}$\" to $\"${FileDest}$\" ..."
3933885bc0c2c93436d858a14564c6179ec72872vboxsync ; Try the gentle way and replace the file instantly
3933885bc0c2c93436d858a14564c6179ec72872vboxsync !insertmacro InstallLib DLL NOTSHARED NOREBOOT_NOTPROTECTED "${FileSrc}" "${FileDest}" "${DirTemp}"
3933885bc0c2c93436d858a14564c6179ec72872vboxsync ; If the above call didn't help, use a (later) reboot to replace the file
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED "${FileSrc}" "${FileDest}" "${DirTemp}"
3933885bc0c2c93436d858a14564c6179ec72872vboxsync!macroend
3933885bc0c2c93436d858a14564c6179ec72872vboxsync!define InstallFileEx "!insertmacro InstallFileEx"
3933885bc0c2c93436d858a14564c6179ec72872vboxsync
3933885bc0c2c93436d858a14564c6179ec72872vboxsync;
3933885bc0c2c93436d858a14564c6179ec72872vboxsync; Macro for installing a library/DLL.
3933885bc0c2c93436d858a14564c6179ec72872vboxsync; @return Stack: "0" if copied, "1" if not, "2" on error / not found.
3933885bc0c2c93436d858a14564c6179ec72872vboxsync; @param Un/Installer prefix; either "" or "un".
3933885bc0c2c93436d858a14564c6179ec72872vboxsync; @param Name of lib/DLL to verify and copy to destination.
3933885bc0c2c93436d858a14564c6179ec72872vboxsync; @param Destination name to copy verified file to.
3933885bc0c2c93436d858a14564c6179ec72872vboxsync; @param Temporary folder used for exchanging the (locked) lib/DLL after a reboot.
3933885bc0c2c93436d858a14564c6179ec72872vboxsync; @param Vendor to check for.
3933885bc0c2c93436d858a14564c6179ec72872vboxsync; @param Architecture ("x86" or "amd64") to check for.
3933885bc0c2c93436d858a14564c6179ec72872vboxsync;
70ca8d009d026a301bf7fa08cd18c6494c45fdeevboxsync!macro InstallFileVerify un FileSrc FileDest DirTemp Vendor Architecture
70ca8d009d026a301bf7fa08cd18c6494c45fdeevboxsync Push $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "${Architecture}"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "${Vendor}"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push "${FileSrc}"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${LogVerbose} "Verifying library $\"${FileSrc}$\" ..."
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Call ${un}VerifyFile
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $0 == "0"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${InstallFileEx} ${un} ${FileSrc} ${FileDest} ${DirTemp}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${Else}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${LogVerbose} "File $\"${FileSrc}$\" did not pass verification (Vendor: ${Vendor}, Architecture: ${Architecture})"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; Push result popped off the stack to stack again.
1207f59aa62006952dbb0bf7700decf34d8caeb2vboxsync Push $0
501181107e73684ab109521ba371063734cd1d76vboxsync!macroend
501181107e73684ab109521ba371063734cd1d76vboxsync!define InstallFileVerify "!insertmacro InstallFileVerify"
501181107e73684ab109521ba371063734cd1d76vboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; Prepares the access rights for replacing
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; a WRP (Windows Resource Protection) protected file
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!macro PrepareWRPFile un
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncFunction ${un}PrepareWRPFile
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push $1
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${IfNot} ${FileExists} "$0"
1207f59aa62006952dbb0bf7700decf34d8caeb2vboxsync ${LogVerbose} "WRP: File $\"$0$\" does not exist, skipping"
1207f59aa62006952dbb0bf7700decf34d8caeb2vboxsync Return
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} ${FileExists} "$g_strSystemDir\takeown.exe"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${CmdExecute} "$\"$g_strSystemDir\takeown.exe$\" /F $\"$0$\"" "true"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${Else}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${LogVerbose} "WRP: Warning: takeown.exe not found, skipping"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
1207f59aa62006952dbb0bf7700decf34d8caeb2vboxsync
1207f59aa62006952dbb0bf7700decf34d8caeb2vboxsync AccessControl::SetFileOwner "$0" "(S-1-5-32-545)"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $1
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${LogVerbose} "WRP: Setting file owner for $\"$0$\" returned: $1"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
501181107e73684ab109521ba371063734cd1d76vboxsync AccessControl::GrantOnFile "$0" "(S-1-5-32-545)" "FullAccess"
501181107e73684ab109521ba371063734cd1d76vboxsync Pop $1
501181107e73684ab109521ba371063734cd1d76vboxsync ${LogVerbose} "WRP: Setting access rights for $\"$0$\" returned: $1"
501181107e73684ab109521ba371063734cd1d76vboxsync
501181107e73684ab109521ba371063734cd1d76vboxsync!if $%VBOX_WITH_GUEST_INSTALL_HELPER% == "1"
501181107e73684ab109521ba371063734cd1d76vboxsync !ifdef WFP_FILE_EXCEPTION
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync VBoxGuestInstallHelper::DisableWFP "$0"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $1 ; Get return value (ignored for now)
1207f59aa62006952dbb0bf7700decf34d8caeb2vboxsync ${LogVerbose} "WRP: Setting WFP exception for $\"$0$\" returned: $1"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync !endif
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!endif
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
1207f59aa62006952dbb0bf7700decf34d8caeb2vboxsync Pop $1
1207f59aa62006952dbb0bf7700decf34d8caeb2vboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncFunctionEnd
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!macroend
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!insertmacro PrepareWRPFile ""
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!insertmacro PrepareWRPFile "un."
28ae9ced88db55943497a8bb98682bc2be513476vboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync;
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; Macro for preparing the access rights for replacing
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; a WRP (Windows Resource Protection) protected file.
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; @return None.
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; @param Path of file to prepare.
28ae9ced88db55943497a8bb98682bc2be513476vboxsync;
28ae9ced88db55943497a8bb98682bc2be513476vboxsync!macro PrepareWRPFileEx un FileSrc
28ae9ced88db55943497a8bb98682bc2be513476vboxsync Push $0
28ae9ced88db55943497a8bb98682bc2be513476vboxsync Push "${FileSrc}"
28ae9ced88db55943497a8bb98682bc2be513476vboxsync Call ${un}PrepareWRPFile
28ae9ced88db55943497a8bb98682bc2be513476vboxsync Pop $0
28ae9ced88db55943497a8bb98682bc2be513476vboxsync!macroend
28ae9ced88db55943497a8bb98682bc2be513476vboxsync!define PrepareWRPFileEx "!insertmacro PrepareWRPFileEx"
28ae9ced88db55943497a8bb98682bc2be513476vboxsync
28ae9ced88db55943497a8bb98682bc2be513476vboxsync;
28ae9ced88db55943497a8bb98682bc2be513476vboxsync; Validates backed up and replaced Direct3D files; either the d3d*.dll have
28ae9ced88db55943497a8bb98682bc2be513476vboxsync; to be from Microsoft or the (already) backed up msd3d*.dll files. If both
28ae9ced88db55943497a8bb98682bc2be513476vboxsync; don't match we have a corrupted / invalid installation.
28ae9ced88db55943497a8bb98682bc2be513476vboxsync; @return Stack: "0" if files are valid; otherwise "1".
28ae9ced88db55943497a8bb98682bc2be513476vboxsync;
28ae9ced88db55943497a8bb98682bc2be513476vboxsync!macro ValidateFilesDirect3D un
28ae9ced88db55943497a8bb98682bc2be513476vboxsyncFunction ${un}ValidateD3DFiles
28ae9ced88db55943497a8bb98682bc2be513476vboxsync
28ae9ced88db55943497a8bb98682bc2be513476vboxsync Push $0
28ae9ced88db55943497a8bb98682bc2be513476vboxsync
28ae9ced88db55943497a8bb98682bc2be513476vboxsync ; We need to switch to 64-bit app mode to handle the "real" 64-bit files in
28ae9ced88db55943497a8bb98682bc2be513476vboxsync ; "system32" on a 64-bit guest
28ae9ced88db55943497a8bb98682bc2be513476vboxsync Call ${un}SetAppMode64
28ae9ced88db55943497a8bb98682bc2be513476vboxsync
28ae9ced88db55943497a8bb98682bc2be513476vboxsync ; Note: Not finding a file (like *d3d8.dll) on Windows Vista/7 is fine;
28ae9ced88db55943497a8bb98682bc2be513476vboxsync ; it simply is not present there.
28ae9ced88db55943497a8bb98682bc2be513476vboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; Note 2: On 64-bit systems there are no 64-bit *d3d8 DLLs, only 32-bit ones
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; in SysWOW64 (or in system32 on 32-bit systems).
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
28ae9ced88db55943497a8bb98682bc2be513476vboxsync!if $%BUILD_TARGET_ARCH% == "x86"
28ae9ced88db55943497a8bb98682bc2be513476vboxsync ${VerifyFileEx} "${un}" "$SYSDIR\d3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
28ae9ced88db55943497a8bb98682bc2be513476vboxsync Pop $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $0 == "1"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto verify_msd3d
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!endif
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync ${VerifyFileEx} "${un}" "$SYSDIR\d3d9.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync Pop $0
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync ${If} $0 == "1"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto verify_msd3d
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync ${EndIf}
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $g_bCapDllCache == "true"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!if $%BUILD_TARGET_ARCH% == "x86"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${VerifyFileEx} "${un}" "$SYSDIR\dllcache\d3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $0 == "1"
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync Goto verify_msd3d
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!endif
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync ${VerifyFileEx} "${un}" "$SYSDIR\dllcache\d3d9.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync Pop $0
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync ${If} $0 == "1"
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync Goto verify_msd3d
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!if $%BUILD_TARGET_ARCH% == "amd64"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${VerifyFileEx} "${un}" "$g_strSysWow64\d3d8.dll" "Microsoft Corporation" "x86"
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync Pop $0
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync ${If} $0 == "1"
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync Goto verify_msd3d
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync ${EndIf}
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync ${VerifyFileEx} "${un}" "$g_strSysWow64\d3d9.dll" "Microsoft Corporation" "x86"
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync Pop $0
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync ${If} $0 == "1"
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync Goto verify_msd3d
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync ${EndIf}
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync ${If} $g_bCapDllCache == "true"
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync ${VerifyFileEx} "${un}" "$g_strSysWow64\dllcache\d3d8.dll" "Microsoft Corporation" "x86"
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync Pop $0
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync ${If} $0 == "1"
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync Goto verify_msd3d
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${VerifyFileEx} "${un}" "$g_strSysWow64\dllcache\d3d9.dll" "Microsoft Corporation" "x86"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $0 == "1"
1207f59aa62006952dbb0bf7700decf34d8caeb2vboxsync Goto verify_msd3d
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync ${EndIf}
5af5f66dd66e8ed177bcb8b429a1c2f3093ab406vboxsync ${EndIf}
1207f59aa62006952dbb0bf7700decf34d8caeb2vboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!endif
c9e3f6ad81ea9a279ffb537720699e552882c40avboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto valid
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncverify_msd3d:
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!if $%BUILD_TARGET_ARCH% == "x86"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${VerifyFileEx} "${un}" "$SYSDIR\msd3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $0 == "1"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto invalid
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!endif
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${VerifyFileEx} "${un}" "$SYSDIR\msd3d9.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $0 == "1"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto invalid
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $g_bCapDllCache == "true"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!if $%BUILD_TARGET_ARCH% == "x86"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${VerifyFileEx} "${un}" "$SYSDIR\dllcache\msd3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $0 == "1"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto invalid
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!endif
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${VerifyFileEx} "${un}" "$SYSDIR\dllcache\msd3d9.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $0 == "1"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto invalid
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!if $%BUILD_TARGET_ARCH% == "amd64"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${VerifyFileEx} "${un}" "$g_strSysWow64\msd3d8.dll" "Microsoft Corporation" "x86"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $0 == "1"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto invalid
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${VerifyFileEx} "${un}" "$g_strSysWow64\msd3d9.dll" "Microsoft Corporation" "x86"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $0 == "1"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto invalid
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $g_bCapDllCache == "true"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${VerifyFileEx} "${un}" "$g_strSysWow64\dllcache\msd3d8.dll" "Microsoft Corporation" "x86"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $0 == "1"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto invalid
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${VerifyFileEx} "${un}" "$g_strSysWow64\dllcache\msd3d9.dll" "Microsoft Corporation" "x86"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $0 == "1"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto invalid
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!endif
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto valid
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncvalid:
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync StrCpy $0 "0" ; Installation valid
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto end
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncinvalid:
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync StrCpy $0 "1" ; Installation invalid / corrupted
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Goto end
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncend:
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Exch $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncFunctionEnd
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!macroend
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!insertmacro ValidateFilesDirect3D ""
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!insertmacro ValidateFilesDirect3D "un."
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync;
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; Restores formerly backed up Direct3D original files, which were replaced by
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; a VBox XPDM driver installation before. This might be necessary for upgrading a
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; XPDM installation to a WDDM one.
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync; @return Stack: "0" if files were restored successfully; otherwise "1".
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync;
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!macro RestoreFilesDirect3D un
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncFunction ${un}RestoreFilesDirect3D
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Push $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; We need to switch to 64-bit app mode to handle the "real" 64-bit files in
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; "system32" on a 64-bit guest
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Call ${un}SetAppMode64
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; Note: Not finding a file (like *d3d8.dll) on Windows Vista/7 is fine;
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; it simply is not present there.
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; Note 2: On 64-bit systems there are no 64-bit *d3d8 DLLs, only 32-bit ones
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; in SysWOW64 (or in system32 on 32-bit systems).
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${LogVerbose} "Restoring original D3D files ..."
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!if $%BUILD_TARGET_ARCH% == "x86"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${PrepareWRPFileEx} "${un}" "$SYSDIR\d3d8.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${CopyFileEx} "${un}" "$SYSDIR\msd3d8.dll" "$SYSDIR\d3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!endif
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${PrepareWRPFileEx} "${un}" "$SYSDIR\d3d9.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${CopyFileEx} "${un}" "$SYSDIR\msd3d9.dll" "$SYSDIR\d3d9.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $g_bCapDllCache == "true"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!if $%BUILD_TARGET_ARCH% == "x86"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${PrepareWRPFileEx} "${un}" "$SYSDIR\dllcache\d3d8.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${CopyFileEx} "${un}" "$SYSDIR\dllcache\msd3d8.dll" "$SYSDIR\dllcache\d3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!endif
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${PrepareWRPFileEx} "${un}" "$SYSDIR\dllcache\d3d9.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${CopyFileEx} "${un}" "$SYSDIR\dllcache\msd3d9.dll" "$SYSDIR\dllcache\d3d9.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!if $%BUILD_TARGET_ARCH% == "amd64"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${PrepareWRPFileEx} "${un}" "$g_strSysWow64\d3d8.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${CopyFileEx} "${un}" "$g_strSysWow64\msd3d8.dll" "$g_strSysWow64\d3d8.dll" "Microsoft Corporation" "x86"
c9e3f6ad81ea9a279ffb537720699e552882c40avboxsync ${PrepareWRPFileEx} "${un}" "$g_strSysWow64\d3d9.dll"
21ed14a0d745501ffc9a68be81c0abadc777b628vboxsync ${CopyFileEx} "${un}" "$g_strSysWow64\msd3d9.dll" "$g_strSysWow64\d3d9.dll" "Microsoft Corporation" "x86"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $g_bCapDllCache == "true"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${PrepareWRPFileEx} "${un}" "$g_strSysWow64\dllcache\d3d8.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${CopyFileEx} "${un}" "$g_strSysWow64\dllcache\msd3d8.dll" "$g_strSysWow64\dllcache\d3d8.dll" "Microsoft Corporation" "x86"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${PrepareWRPFileEx} "${un}" "$g_strSysWow64\dllcache\d3d9.dll"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${CopyFileEx} "${un}" "$g_strSysWow64\dllcache\msd3d9.dll" "$g_strSysWow64\dllcache\d3d9.dll" "Microsoft Corporation" "x86"
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!endif
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ; Do a re-validation afterwards.
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Call ${un}ValidateD3DFiles
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync Pop $0
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${If} $0 == "1" ; D3D files are invalid
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${LogVerbose} $(VBOX_UNINST_UNABLE_TO_RESTORE_D3D)
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync MessageBox MB_ICONSTOP|MB_OK $(VBOX_UNINST_UNABLE_TO_RESTORE_D3D) /SD IDOK
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync ${EndIf}
629169500a4e1696f37dd3118a791d68278f71davboxsync
629169500a4e1696f37dd3118a791d68278f71davboxsync Exch $0
629169500a4e1696f37dd3118a791d68278f71davboxsync
629169500a4e1696f37dd3118a791d68278f71davboxsyncFunctionEnd
629169500a4e1696f37dd3118a791d68278f71davboxsync!macroend
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!insertmacro RestoreFilesDirect3D ""
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync!insertmacro RestoreFilesDirect3D "un."
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync