b711a01730152421a900e5f4e237cfb848c9c4fdvboxsync; $Id$
b711a01730152421a900e5f4e237cfb848c9c4fdvboxsync; @file
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync; VBoxGuestAdditionsCommon.nsh - Common / shared utility functions.
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;
2f14f4556ae74ad40719bc9690534693abb71868vboxsync
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync; Copyright (C) 2006-2014 Oracle Corporation
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync; This file is part of VirtualBox Open Source Edition (OSE), as
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync; available from http://www.virtualbox.org. This file is free software;
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync; you can redistribute it and/or modify it under the terms of the GNU
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync; General Public License (GPL) as published by the Free Software
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync; Foundation, in version 2 as it comes in the "COPYING" file of the
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;
78a072e1b56619e3230735ae073668311232ec94vboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsyncFunction Common_CopyFiles
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync SetOutPath "$INSTDIR"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync SetOverwrite on
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync!ifdef VBOX_WITH_LICENSE_INSTALL_RTF
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ; Copy license file (if any) into the installation directory
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync FILE "/oname=${LICENSE_FILE_RTF}" "$%VBOX_BRAND_LICENSE_RTF%"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync!endif
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync FILE "$%VBOX_PATH_DIFX%\DIFxAPI.dll"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync FILE "$%PATH_OUT%\bin\additions\VBoxDrvInst.exe"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideo.inf"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync!ifdef VBOX_SIGN_ADDITIONS
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideo.cat"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync!endif
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync FILE "iexplore.ico"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsyncFunctionEnd
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!ifndef UNINSTALLER_ONLY
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunction ExtractFiles
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ; @todo: Use a define for all the file specs to group the files per module
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ; and keep the redundancy low
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Push $0
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCpy "$0" "$INSTDIR\$%BUILD_TARGET_ARCH%"
78a072e1b56619e3230735ae073668311232ec94vboxsync
94c538a65fbdfa1ea06f4fe0a65599c1ab0fed58vboxsync ; Root files
94c538a65fbdfa1ea06f4fe0a65599c1ab0fed58vboxsync SetOutPath "$0"
d0318084c32279bf313f47358242cd61ada858d6vboxsync!if $%VBOX_WITH_LICENSE_INSTALL_RTF% == "1"
94c538a65fbdfa1ea06f4fe0a65599c1ab0fed58vboxsync FILE "/oname=${LICENSE_FILE_RTF}" "$%VBOX_BRAND_LICENSE_RTF%"
d5d45608052fd506e4114bf112df6efae7fcd8a7vboxsync!endif
d5d45608052fd506e4114bf112df6efae7fcd8a7vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Video driver
78a072e1b56619e3230735ae073668311232ec94vboxsync SetOutPath "$0\VBoxVideo"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideo.sys"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideo.inf"
78a072e1b56619e3230735ae073668311232ec94vboxsync!ifdef VBOX_SIGN_ADDITIONS
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideo.cat"
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxDisp.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!if $%VBOX_WITH_CROGL% == "1"
78a072e1b56619e3230735ae073668311232ec94vboxsync ; crOpenGL
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLarrayspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLcrutil.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLerrorspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpackspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpassthroughspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLfeedbackspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGL.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsync SetOutPath "$0\VBoxVideo\OpenGL"
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsync FILE "$%PATH_OUT%\bin\additions\d3d8.dll"
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsync FILE "$%PATH_OUT%\bin\additions\d3d9.dll"
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxD3D8.dll"
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxD3D9.dll"
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsync FILE "$%PATH_OUT%\bin\additions\wined3d.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Only 64-bit installer: Also copy 32-bit DLLs on 64-bit target
78a072e1b56619e3230735ae073668311232ec94vboxsync SetOutPath "$0\VBoxVideo\OpenGL\SysWow64"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\d3d8.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\d3d9.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxOGLarrayspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxOGLcrutil.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxOGLerrorspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxOGLpackspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxOGLpassthroughspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxOGLfeedbackspu.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxOGL.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxD3D8.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxD3D9.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\wined3d.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync !endif
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif
78a072e1b56619e3230735ae073668311232ec94vboxsync
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync!if $%VBOX_WITH_WDDM% == "1"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync ; WDDM Video driver for Vista and 7
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync SetOutPath "$0\VBoxVideoWddm"
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync !ifdef VBOX_SIGN_ADDITIONS
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideoWddm.cat"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync !endif
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideoWddm.sys"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideoWddm.inf"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxDispD3D.dll"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync !if $%VBOX_WITH_CROGL% == "1"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLarrayspu.dll"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLcrutil.dll"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLerrorspu.dll"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpackspu.dll"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpassthroughspu.dll"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLfeedbackspu.dll"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGL.dll"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxD3D9wddm.dll"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\wined3dwddm.dll"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync !endif ; $%VBOX_WITH_CROGL% == "1"
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxDispD3D-x86.dll"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync !if $%VBOX_WITH_CROGL% == "1"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLarrayspu-x86.dll"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLcrutil-x86.dll"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLerrorspu-x86.dll"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpackspu-x86.dll"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpassthroughspu-x86.dll"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLfeedbackspu-x86.dll"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGL-x86.dll"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxD3D9wddm-x86.dll"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync FILE "$%PATH_OUT%\bin\additions\wined3dwddm-x86.dll"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync !endif ; $%VBOX_WITH_CROGL% == "1"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync !endif ; $%BUILD_TARGET_ARCH% == "amd64"
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync
223a6730e81629b0bf552ccc31f119a998cc8e27vboxsync !if $%VBOX_WITH_WDDM_W8% == "1"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync ; WDDM Video driver for Win8
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync SetOutPath "$0\VBoxVideoW8"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync !ifdef VBOX_SIGN_ADDITIONS
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideoW8.cat"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync !endif
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideoW8.sys"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxVideoW8.inf"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxDispD3D.dll"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync !if $%VBOX_WITH_CROGL% == "1"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLarrayspu.dll"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLcrutil.dll"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLerrorspu.dll"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpackspu.dll"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpassthroughspu.dll"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLfeedbackspu.dll"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGL.dll"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxD3D9wddm.dll"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\wined3dwddm.dll"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync !endif ; $%VBOX_WITH_CROGL% == "1"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxDispD3D-x86.dll"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync !if $%VBOX_WITH_CROGL% == "1"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLarrayspu-x86.dll"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLcrutil-x86.dll"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLerrorspu-x86.dll"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpackspu-x86.dll"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLpassthroughspu-x86.dll"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGLfeedbackspu-x86.dll"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxOGL-x86.dll"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxD3D9wddm-x86.dll"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync FILE "$%PATH_OUT%\bin\additions\wined3dwddm-x86.dll"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync !endif ; $%VBOX_WITH_CROGL% == "1"
6804e4c1c12ab612ad6257a4922309c476c204e5vboxsync !endif ; $%BUILD_TARGET_ARCH% == "amd64"
223a6730e81629b0bf552ccc31f119a998cc8e27vboxsync !endif ; $%VBOX_WITH_WDDM_W8% == "1"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync!endif ; $%VBOX_WITH_WDDM% == "1"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Mouse driver
78a072e1b56619e3230735ae073668311232ec94vboxsync SetOutPath "$0\VBoxMouse"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxMouse.sys"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxMouse.inf"
78a072e1b56619e3230735ae073668311232ec94vboxsync!ifdef VBOX_SIGN_ADDITIONS
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxMouse.cat"
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!if $%BUILD_TARGET_ARCH% == "x86"
78a072e1b56619e3230735ae073668311232ec94vboxsync SetOutPath "$0\VBoxMouse\NT4"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxMouseNT.sys"
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Guest driver
78a072e1b56619e3230735ae073668311232ec94vboxsync SetOutPath "$0\VBoxGuest"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxGuest.sys"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxGuest.inf"
78a072e1b56619e3230735ae073668311232ec94vboxsync!ifdef VBOX_SIGN_ADDITIONS
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxGuest.cat"
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxTray.exe"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxHook.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxControl.exe"
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!if $%BUILD_TARGET_ARCH% == "x86"
78a072e1b56619e3230735ae073668311232ec94vboxsync SetOutPath "$0\VBoxGuest\NT4"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxGuestNT.sys"
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ; VBoxService
78a072e1b56619e3230735ae073668311232ec94vboxsync SetOutPath "$0\Bin"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxService.exe"
78a072e1b56619e3230735ae073668311232ec94vboxsync!if $%BUILD_TARGET_ARCH% == "x86"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxServiceNT.exe"
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Shared Folders
78a072e1b56619e3230735ae073668311232ec94vboxsync SetOutPath "$0\VBoxSF"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxSF.sys"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxMRXNP.dll"
1637773d6c473e4ab75812805ef00226f3a397c0vboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
1637773d6c473e4ab75812805ef00226f3a397c0vboxsync ; Only 64-bit installer: Also copy 32-bit DLLs on 64-bit target
1637773d6c473e4ab75812805ef00226f3a397c0vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxMRXNP-x86.dll"
1637773d6c473e4ab75812805ef00226f3a397c0vboxsync !endif
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Auto-Logon
78a072e1b56619e3230735ae073668311232ec94vboxsync SetOutPath "$0\AutoLogon"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxGINA.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxCredProv.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Misc tools
78a072e1b56619e3230735ae073668311232ec94vboxsync SetOutPath "$0\Tools"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxDrvInst.exe"
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync FILE "$%VBOX_PATH_DIFX%\DIFxAPI.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!if $%BUILD_TARGET_ARCH% == "x86"
78a072e1b56619e3230735ae073668311232ec94vboxsync SetOutPath "$0\Tools\NT4"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\VBoxGuestDrvInst.exe"
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\RegCleanup.exe"
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $0
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunctionEnd
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif ; UNINSTALLER_ONLY
78a072e1b56619e3230735ae073668311232ec94vboxsync
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync!macro CheckArchitecture un
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsyncFunction ${un}CheckArchitecture
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync Push $0
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync System::Call "kernel32::GetCurrentProcess() i .s"
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync System::Call "kernel32::IsWow64Process(i s, *i .r0)"
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync ; R0 now contains 1 if we're a 64-bit process, or 0 if not
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync!if $%BUILD_TARGET_ARCH% == "amd64"
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync IntCmp $0 0 wrong_platform
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync!else ; 32-bit
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync IntCmp $0 1 wrong_platform
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync!endif
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync Push 0
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync Goto exit
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsyncwrong_platform:
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync Push 1
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync Goto exit
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsyncexit:
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsyncFunctionEnd
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync!macroend
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync!insertmacro CheckArchitecture ""
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync!insertmacro CheckArchitecture "un."
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync;
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync; Macro for retrieving the Windows version this installer is running on.
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync;
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync; @return Stack: Windows version string. Empty on error /
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync; if not able to identify.
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync;
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync!macro GetWindowsVersionEx un
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsyncFunction ${un}GetWindowsVersionEx
78a072e1b56619e3230735ae073668311232ec94vboxsync
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync Push $0
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync Push $1
78a072e1b56619e3230735ae073668311232ec94vboxsync
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync ; Check if we are running on Windows 2000 or above
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync ; For other windows versions (> XP) it may be necessary to change winver.nsh
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync Call ${un}GetWindowsVersion
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync Pop $0 ; Windows Version
78a072e1b56619e3230735ae073668311232ec94vboxsync
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync Push $0 ; The windows version string
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync Push "NT" ; String to search for. W2K+ returns no string containing "NT"
78a072e1b56619e3230735ae073668311232ec94vboxsync Call ${un}StrStr
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync Pop $1
78a072e1b56619e3230735ae073668311232ec94vboxsync
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync ${If} $1 == "" ; If empty -> not NT 3.XX or 4.XX
fbc860f415bc1aa9082e93bf5ff1c6b8b9ddf20dvboxsync ; $0 contains the original version string
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync ${Else}
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync ; Ok we know it is NT. Must be a string like NT X.XX
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync Push $0 ; The windows version string
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync Push "4." ; String to search for
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync Call ${un}StrStr
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync Pop $1
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync ${If} $1 == "" ; If empty -> not NT 4
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync ;; @todo NT <= 3.x ?
fbc860f415bc1aa9082e93bf5ff1c6b8b9ddf20dvboxsync ; $0 contains the original version string
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync ${Else}
fbc860f415bc1aa9082e93bf5ff1c6b8b9ddf20dvboxsync StrCpy $0 "NT4"
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync ${EndIf}
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync ${EndIf}
78a072e1b56619e3230735ae073668311232ec94vboxsync
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync Pop $1
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync Exch $0
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunctionEnd
78a072e1b56619e3230735ae073668311232ec94vboxsync!macroend
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync!insertmacro GetWindowsVersionEx ""
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync!insertmacro GetWindowsVersionEx "un."
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!macro GetAdditionsVersion un
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunction ${un}GetAdditionsVersion
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Push $0
78a072e1b56619e3230735ae073668311232ec94vboxsync Push $1
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Get additions version
78a072e1b56619e3230735ae073668311232ec94vboxsync ReadRegStr $0 HKLM "SOFTWARE\$%VBOX_VENDOR_SHORT%\VirtualBox Guest Additions" "Version"
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Get revision
78a072e1b56619e3230735ae073668311232ec94vboxsync ReadRegStr $g_strAddVerRev HKLM "SOFTWARE\$%VBOX_VENDOR_SHORT%\VirtualBox Guest Additions" "Revision"
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Extract major version
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "$0" ; String
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "." ; SubString
78a072e1b56619e3230735ae073668311232ec94vboxsync Push ">" ; SearchDirection
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "<" ; StrInclusionDirection
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "0" ; IncludeSubString
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "0" ; Loops
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "0" ; CaseSensitive
78a072e1b56619e3230735ae073668311232ec94vboxsync Call ${un}StrStrAdv
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $g_strAddVerMaj
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Extract minor version
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "$0" ; String
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "." ; SubString
78a072e1b56619e3230735ae073668311232ec94vboxsync Push ">" ; SearchDirection
78a072e1b56619e3230735ae073668311232ec94vboxsync Push ">" ; StrInclusionDirection
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "0" ; IncludeSubString
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "0" ; Loops
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "0" ; CaseSensitive
78a072e1b56619e3230735ae073668311232ec94vboxsync Call ${un}StrStrAdv
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $1 ; Got first part (e.g. "1.5")
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "$1" ; String
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "." ; SubString
78a072e1b56619e3230735ae073668311232ec94vboxsync Push ">" ; SearchDirection
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "<" ; StrInclusionDirection
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "0" ; IncludeSubString
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "0" ; Loops
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "0" ; CaseSensitive
78a072e1b56619e3230735ae073668311232ec94vboxsync Call ${un}StrStrAdv
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $g_strAddVerMin ; Extracted second part (e.g. "5" from "1.5")
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Extract build number
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "$0" ; String
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "." ; SubString
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "<" ; SearchDirection
78a072e1b56619e3230735ae073668311232ec94vboxsync Push ">" ; StrInclusionDirection
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "0" ; IncludeSubString
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "0" ; Loops
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "0" ; CaseSensitive
78a072e1b56619e3230735ae073668311232ec94vboxsync Call ${un}StrStrAdv
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $g_strAddVerBuild
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncexit:
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $1
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $0
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunctionEnd
78a072e1b56619e3230735ae073668311232ec94vboxsync!macroend
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro GetAdditionsVersion ""
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro GetAdditionsVersion "un."
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!macro StopVBoxService un
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunction ${un}StopVBoxService
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Push $0 ; Temp results
78a072e1b56619e3230735ae073668311232ec94vboxsync Push $1
78a072e1b56619e3230735ae073668311232ec94vboxsync Push $2 ; Image name of VBoxService
78a072e1b56619e3230735ae073668311232ec94vboxsync Push $3 ; Safety counter
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCpy $3 "0" ; Init counter
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync ${LogVerbose} "Stopping VBoxService ..."
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncsvc_stop:
78a072e1b56619e3230735ae073668311232ec94vboxsync
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync ${LogVerbose} "Stopping VBoxService via SCM ..."
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync ${If} $g_strWinVersion == "NT4"
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync nsExec::Exec '"$SYSDIR\net.exe" stop VBoxService'
78a072e1b56619e3230735ae073668311232ec94vboxsync ${Else}
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync nsExec::Exec '"$SYSDIR\SC.exe" stop VBoxService'
78a072e1b56619e3230735ae073668311232ec94vboxsync ${EndIf}
78a072e1b56619e3230735ae073668311232ec94vboxsync Sleep "1000" ; Wait a bit
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncexe_stop:
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!ifdef _DEBUG
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync ${LogVerbose} "Stopping VBoxService (as exe) ..."
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncexe_stop_loop:
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync IntCmp $3 10 exit ; Only try this loop 10 times max
78a072e1b56619e3230735ae073668311232ec94vboxsync IntOp $3 $3 + 1 ; Increment
78a072e1b56619e3230735ae073668311232ec94vboxsync
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync!ifdef _DEBUG
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync ${LogVerbose} "Stopping attempt #$3"
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync!endif
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync ${If} $g_strWinVersion == "NT4"
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCpy $2 "VBoxServiceNT.exe"
78a072e1b56619e3230735ae073668311232ec94vboxsync ${Else}
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCpy $2 "VBoxService.exe"
78a072e1b56619e3230735ae073668311232ec94vboxsync ${EndIf}
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ${nsProcess::FindProcess} $2 $0
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCmp $0 0 0 exit
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ${nsProcess::KillProcess} $2 $0
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync Sleep "1000" ; Wait a bit
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto exe_stop_loop
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncexit:
78a072e1b56619e3230735ae073668311232ec94vboxsync
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync ${LogVerbose} "Stopping VBoxService done"
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $3
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $2
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $1
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $0
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunctionEnd
78a072e1b56619e3230735ae073668311232ec94vboxsync!macroend
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro StopVBoxService ""
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro StopVBoxService "un."
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!macro StopVBoxTray un
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunction ${un}StopVBoxTray
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Push $0 ; Temp results
78a072e1b56619e3230735ae073668311232ec94vboxsync Push $1 ; Safety counter
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCpy $1 "0" ; Init counter
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync ${LogVerbose} "Stopping VBoxTray ..."
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncexe_stop:
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync IntCmp $1 10 exit ; Only try this loop 10 times max
78a072e1b56619e3230735ae073668311232ec94vboxsync IntOp $1 $1 + 1 ; Increment
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ${nsProcess::FindProcess} "VBoxTray.exe" $0
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCmp $0 0 0 exit
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ${nsProcess::KillProcess} "VBoxTray.exe" $0
78a072e1b56619e3230735ae073668311232ec94vboxsync Sleep "1000" ; Wait a bit
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto exe_stop
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncexit:
78a072e1b56619e3230735ae073668311232ec94vboxsync
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync ${LogVerbose} "Stopping VBoxTray done"
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $1
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $0
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunctionEnd
78a072e1b56619e3230735ae073668311232ec94vboxsync!macroend
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro StopVBoxTray ""
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro StopVBoxTray "un."
78a072e1b56619e3230735ae073668311232ec94vboxsync
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync!macro StopVBoxMMR un
2a7322928382e52db8e320d19df4f03dee16b3edvboxsyncFunction ${un}StopVBoxMMR
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync Push $0 ; Temp results
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync Push $1 ; Safety counter
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync StrCpy $1 "0" ; Init counter
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync DetailPrint "Stopping VBoxMMR ..."
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync
2a7322928382e52db8e320d19df4f03dee16b3edvboxsyncexe_stop:
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync IntCmp $1 10 exit ; Only try this loop 10 times max
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync IntOp $1 $1 + 1 ; Increment
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync ${nsProcess::FindProcess} "VBoxMMR.exe" $0
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync StrCmp $0 0 0 exit
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync ${nsProcess::KillProcess} "VBoxMMR.exe" $0
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync Sleep "1000" ; Wait a bit
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync Goto exe_stop
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync
2a7322928382e52db8e320d19df4f03dee16b3edvboxsyncexit:
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync DetailPrint "Stopping VBoxMMR done."
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync Pop $1
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync Pop $0
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync
2a7322928382e52db8e320d19df4f03dee16b3edvboxsyncFunctionEnd
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync!macroend
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync!insertmacro StopVBoxMMR ""
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync!insertmacro StopVBoxMMR "un."
2a7322928382e52db8e320d19df4f03dee16b3edvboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!macro WriteRegBinR ROOT KEY NAME VALUE
78a072e1b56619e3230735ae073668311232ec94vboxsync WriteRegBin "${ROOT}" "${KEY}" "${NAME}" "${VALUE}"
78a072e1b56619e3230735ae073668311232ec94vboxsync!macroend
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!macro AbortShutdown un
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunction ${un}AbortShutdown
78a072e1b56619e3230735ae073668311232ec94vboxsync
59bb2da0ef97dc8c9d0821ac921728f515623ac5vboxsync ${If} ${FileExists} "$g_strSystemDir\shutdown.exe"
59bb2da0ef97dc8c9d0821ac921728f515623ac5vboxsync ; Try to abort the shutdown
59bb2da0ef97dc8c9d0821ac921728f515623ac5vboxsync ${CmdExecute} "$\"$g_strSystemDir\shutdown.exe$\" -a" "true"
59bb2da0ef97dc8c9d0821ac921728f515623ac5vboxsync ${Else}
59bb2da0ef97dc8c9d0821ac921728f515623ac5vboxsync ${LogVerbose} "Shutting down not supported: Binary $\"$g_strSystemDir\shutdown.exe$\" not found"
59bb2da0ef97dc8c9d0821ac921728f515623ac5vboxsync ${EndIf}
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunctionEnd
78a072e1b56619e3230735ae073668311232ec94vboxsync!macroend
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro AbortShutdown ""
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro AbortShutdown "un."
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync!macro CheckForWDDMCapability un
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsyncFunction ${un}CheckForWDDMCapability
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync
b9efdf4f2f5a547f76dc2e254656d83cab80ce73vboxsync!if $%VBOX_WITH_WDDM% == "1"
e3197fda68ad1e45cc3004f5b58a326a5270aa8fvboxsync ; If we're on a 32-bit Windows Vista / 7 / 8 we can use the WDDM driver
5f41c5732fa948e5fa142eb3997465c540574f84vboxsync ${If} $g_strWinVersion == "Vista"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync ${OrIf} $g_strWinVersion == "7"
36dd9dabf3f64468206cb74145b51245cf7fde54vboxsync ${OrIf} $g_strWinVersion == "8"
5f41c5732fa948e5fa142eb3997465c540574f84vboxsync ${OrIf} $g_strWinVersion == "8_1"
6fd13c2e3e855d7f5a7147cb0414af050e1503e6vboxsync ${OrIf} $g_strWinVersion == "10"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync StrCpy $g_bCapWDDM "true"
fca81330c993457cc8047a46eec3d09b8e38da90vboxsync ${LogVerbose} "OS is WDDM driver capable"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync ${EndIf}
e3197fda68ad1e45cc3004f5b58a326a5270aa8fvboxsync ; If we're on Windows 8 we *have* to use the WDDM driver, so select it
e3197fda68ad1e45cc3004f5b58a326a5270aa8fvboxsync ; by default
5f41c5732fa948e5fa142eb3997465c540574f84vboxsync ${If} $g_strWinVersion == "8"
5f41c5732fa948e5fa142eb3997465c540574f84vboxsync ${OrIf} $g_strWinVersion == "8_1"
6fd13c2e3e855d7f5a7147cb0414af050e1503e6vboxsync ${OrIf} $g_strWinVersion == "10"
e3197fda68ad1e45cc3004f5b58a326a5270aa8fvboxsync StrCpy $g_bWithWDDM "true"
fca81330c993457cc8047a46eec3d09b8e38da90vboxsync ${LogVerbose} "OS needs WDDM driver by default"
e3197fda68ad1e45cc3004f5b58a326a5270aa8fvboxsync ${EndIf}
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync!endif
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsyncFunctionEnd
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync!macroend
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync!insertmacro CheckForWDDMCapability ""
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync!insertmacro CheckForWDDMCapability "un."
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync!macro CheckForCapabilities un
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsyncFunction ${un}CheckForCapabilities
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync Push $0
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync ; Retrieve system mode and store result in
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync System::Call 'user32::GetSystemMetrics(i ${SM_CLEANBOOT}) i .r0'
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync StrCpy $g_iSystemMode $0
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ; Does the guest have a DLL cache?
5f41c5732fa948e5fa142eb3997465c540574f84vboxsync ${If} $g_strWinVersion == "Vista"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${OrIf} $g_strWinVersion == "7"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${OrIf} $g_strWinVersion == "8"
5f41c5732fa948e5fa142eb3997465c540574f84vboxsync ${OrIf} $g_strWinVersion == "8_1"
6fd13c2e3e855d7f5a7147cb0414af050e1503e6vboxsync ${OrIf} $g_strWinVersion == "10"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync StrCpy $g_bCapDllCache "true"
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync ${LogVerbose} "OS has a DLL cache"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${EndIf}
60a6d709c252770b3830c85deac9c493625e3f52vboxsync
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync ; Check whether this OS is capable of handling WDDM drivers
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync Call ${un}CheckForWDDMCapability
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync Pop $0
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsyncFunctionEnd
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync!macroend
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync!insertmacro CheckForCapabilities ""
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync!insertmacro CheckForCapabilities "un."
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync; Switches (back) the path + registry view to
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync; 32-bit mode (SysWOW64) on 64-bit guests
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync!macro SetAppMode32 un
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsyncFunction ${un}SetAppMode32
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync ${EnableX64FSRedirection}
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync SetRegView 32
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync !endif
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsyncFunctionEnd
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync!macroend
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync!insertmacro SetAppMode32 ""
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync!insertmacro SetAppMode32 "un."
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync; Because this NSIS installer is always built in 32-bit mode, we have to
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync; do some tricks for the Windows paths + registry on 64-bit guests
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync!macro SetAppMode64 un
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsyncFunction ${un}SetAppMode64
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync !if $%BUILD_TARGET_ARCH% == "amd64"
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync ${DisableX64FSRedirection}
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync SetRegView 64
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync !endif
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsyncFunctionEnd
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync!macroend
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync!insertmacro SetAppMode64 ""
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync!insertmacro SetAppMode64 "un."
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync;
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync; Retrieves the vendor ("CompanyName" of FILEINFO structure)
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync; of a given file.
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync; @return Stack: Company name, or "" on error/if not found.
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync; @param Stack: File name to retrieve vendor for.
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync;
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync!macro GetFileVendor un
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsyncFunction ${un}GetFileVendor
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync ; Preserve values
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Exch $0 ; Stack: $0 <filename> (Get file name into $0)
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Push $1
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync IfFileExists "$0" found
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Goto not_found
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsyncfound:
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync VBoxGuestInstallHelper::FileGetVendor "$0"
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync ; Stack: <vendor> $1 $0
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Pop $0 ; Get vendor
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Pop $1 ; Restore $1
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Exch $0 ; Restore $0, push vendor on top of stack
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Goto end
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsyncnot_found:
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Pop $1
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Pop $0
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Push "File not found"
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Goto end
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsyncend:
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsyncFunctionEnd
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync!macroend
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync!insertmacro GetFileVendor ""
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync!insertmacro GetFileVendor "un."
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync;
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync; Retrieves the architecture of a given file.
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync; @return Stack: Architecture ("x86", "amd64") or error message.
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync; @param Stack: File name to retrieve architecture for.
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync;
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync!macro GetFileArchitecture un
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsyncFunction ${un}GetFileArchitecture
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync ; Preserve values
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Exch $0 ; Stack: $0 <filename> (Get file name into $0)
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Push $1
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync IfFileExists "$0" found
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Goto not_found
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsyncfound:
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync VBoxGuestInstallHelper::FileGetArchitecture "$0"
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync ; Stack: <architecture> $1 $0
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Pop $0 ; Get architecture string
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Pop $1 ; Restore $1
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Exch $0 ; Restore $0, push vendor on top of stack
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Goto end
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsyncnot_found:
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Pop $1
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Pop $0
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Push "File not found"
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Goto end
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsyncend:
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsyncFunctionEnd
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync!macroend
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync!insertmacro GetFileArchitecture ""
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync!insertmacro GetFileArchitecture "un."
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync;
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync; Verifies a given file by checking its file vendor and target
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync; architecture.
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync; @return Stack: "0" if valid, "1" if not, "2" on error / not found.
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync; @param Stack: Architecture ("x86" or "amd64").
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync; @param Stack: Vendor.
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync; @param Stack: File name to verify.
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync;
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync!macro VerifyFile un
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsyncFunction ${un}VerifyFile
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync ; Preserve values
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Exch $0 ; File; S: old$0 vendor arch
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Exch ; S: vendor old$0 arch
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Exch $1 ; Vendor; S: old$1 old$0 arch
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Exch ; S: old$0 old$1 arch
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Exch 2 ; S: arch old$1 old$0
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Exch $2 ; Architecture; S: old$2 old$1 old$0
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Push $3 ; S: old$3 old$2 old$1 old$0
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync IfFileExists "$0" check_vendor
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Goto not_found
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsynccheck_vendor:
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Push $0
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Call ${un}GetFileVendor
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Pop $3
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync ${If} $3 == $1
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Goto check_arch
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync ${EndIf}
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync StrCpy $3 "1" ; Invalid
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Goto end
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsynccheck_arch:
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Push $0
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Call ${un}GetFileArchitecture
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Pop $3
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync ${If} $3 == $2
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync StrCpy $3 "0" ; Valid
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync ${Else}
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync StrCpy $3 "1" ; Invalid
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync ${EndIf}
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Goto end
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsyncnot_found:
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync StrCpy $3 "2" ; Not found
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Goto end
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsyncend:
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync ; S: old$3 old$2 old$1 old$0
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Exch $3 ; S: $3 old$2 old$1 old$0
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Exch ; S: old$2 $3 old$1
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Pop $2 ; S: $3 old$1 old$0
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Exch ; S: old$1 $3 old$0
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Pop $1 ; S: $3 old$0
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Exch ; S: old$0 $3
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Pop $0 ; S: $3
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsyncFunctionEnd
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync!macroend
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync!insertmacro VerifyFile ""
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync!insertmacro VerifyFile "un."
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync;
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync; Macro for accessing VerifyFile in a more convenient way by using
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync; a parameter list.
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync; @return Stack: "0" if valid, "1" if not, "2" on error / not found.
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync; @param Un/Installer prefix; either "" or "un".
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync; @param Name of file to verify.
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync; @param Vendor to check for.
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync; @param Architecture ("x86" or "amd64") to check for.
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync;
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync!macro VerifyFileEx un File Vendor Architecture
144b558460813c947bcc0845c183df352b251f35vboxsync Push $0
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Push "${Architecture}"
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Push "${Vendor}"
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Push "${File}"
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync ${LogVerbose} "Verifying file $\"${File}$\" ..."
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Call ${un}VerifyFile
144b558460813c947bcc0845c183df352b251f35vboxsync Pop $0
144b558460813c947bcc0845c183df352b251f35vboxsync ${If} $0 == "0"
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync ${LogVerbose} "Verification of file $\"${File}$\" successful (Vendor: ${Vendor}, Architecture: ${Architecture})"
144b558460813c947bcc0845c183df352b251f35vboxsync ${ElseIf} $0 == "1"
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync ${LogVerbose} "Verification of file $\"${File}$\" failed (not Vendor: ${Vendor}, and/or not Architecture: ${Architecture})"
144b558460813c947bcc0845c183df352b251f35vboxsync ${Else}
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync ${LogVerbose} "Skipping to file $\"${File}$\"; not found"
144b558460813c947bcc0845c183df352b251f35vboxsync ${EndIf}
144b558460813c947bcc0845c183df352b251f35vboxsync ; Push result popped off the stack to stack again
144b558460813c947bcc0845c183df352b251f35vboxsync Push $0
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync!macroend
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync!define VerifyFileEx "!insertmacro VerifyFileEx"
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
60a6d709c252770b3830c85deac9c493625e3f52vboxsync;
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync; Macro for copying a file only if the source file is verified
60a6d709c252770b3830c85deac9c493625e3f52vboxsync; to be from a certain vendor and architecture.
60a6d709c252770b3830c85deac9c493625e3f52vboxsync; @return Stack: "0" if copied, "1" if not, "2" on error / not found.
60a6d709c252770b3830c85deac9c493625e3f52vboxsync; @param Un/Installer prefix; either "" or "un".
60a6d709c252770b3830c85deac9c493625e3f52vboxsync; @param Name of file to verify and copy to destination.
60a6d709c252770b3830c85deac9c493625e3f52vboxsync; @param Destination name to copy verified file to.
60a6d709c252770b3830c85deac9c493625e3f52vboxsync; @param Vendor to check for.
60a6d709c252770b3830c85deac9c493625e3f52vboxsync; @param Architecture ("x86" or "amd64") to check for.
60a6d709c252770b3830c85deac9c493625e3f52vboxsync;
60a6d709c252770b3830c85deac9c493625e3f52vboxsync!macro CopyFileEx un FileSrc FileDest Vendor Architecture
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Push $0
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Push "${Architecture}"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Push "${Vendor}"
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync Push "${FileSrc}"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Call ${un}VerifyFile
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Pop $0
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${If} $0 == "0"
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync ${LogVerbose} "Copying verified file $\"${FileSrc}$\" to $\"${FileDest}$\" ..."
b0c6e09aa2ff47e99a27fbab4f0c1ce373d24a50vboxsync ClearErrors
b0c6e09aa2ff47e99a27fbab4f0c1ce373d24a50vboxsync SetOverwrite on
60a6d709c252770b3830c85deac9c493625e3f52vboxsync CopyFiles /SILENT "${FileSrc}" "${FileDest}"
b0c6e09aa2ff47e99a27fbab4f0c1ce373d24a50vboxsync ${If} ${Errors}
b0c6e09aa2ff47e99a27fbab4f0c1ce373d24a50vboxsync CreateDirectory "$TEMP\${PRODUCT_NAME}"
b0c6e09aa2ff47e99a27fbab4f0c1ce373d24a50vboxsync ${GetFileName} "${FileSrc}" $0 ; Get the base name
b0c6e09aa2ff47e99a27fbab4f0c1ce373d24a50vboxsync CopyFiles /SILENT "${FileSrc}" "$TEMP\${PRODUCT_NAME}\$0"
b0c6e09aa2ff47e99a27fbab4f0c1ce373d24a50vboxsync ${LogVerbose} "Immediate installation failed, postponing to next reboot (temporary location is: $\"$TEMP\${PRODUCT_NAME}\$0$\") ..."
b0c6e09aa2ff47e99a27fbab4f0c1ce373d24a50vboxsync ;${InstallFileEx} "${un}" "${FileSrc}" "${FileDest}" "$TEMP" ; Only works with compile time files!
b0c6e09aa2ff47e99a27fbab4f0c1ce373d24a50vboxsync System::Call "kernel32::MoveFileEx(t '$TEMP\${PRODUCT_NAME}\$0', t '${FileDest}', i 5)"
b0c6e09aa2ff47e99a27fbab4f0c1ce373d24a50vboxsync ${EndIf}
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${Else}
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync ${LogVerbose} "Skipping to copy file $\"${FileSrc}$\" to $\"${FileDest}$\" (not Vendor: ${Vendor}, Architecture: ${Architecture})"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${EndIf}
144b558460813c947bcc0845c183df352b251f35vboxsync ; Push result popped off the stack to stack again
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Push $0
60a6d709c252770b3830c85deac9c493625e3f52vboxsync!macroend
60a6d709c252770b3830c85deac9c493625e3f52vboxsync!define CopyFileEx "!insertmacro CopyFileEx"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync
60a6d709c252770b3830c85deac9c493625e3f52vboxsync;
60a6d709c252770b3830c85deac9c493625e3f52vboxsync; Macro for installing a library/DLL.
60a6d709c252770b3830c85deac9c493625e3f52vboxsync; @return Stack: "0" if copied, "1" if not, "2" on error / not found.
60a6d709c252770b3830c85deac9c493625e3f52vboxsync; @param Un/Installer prefix; either "" or "un".
d660f9dc160b6be714951e83538414efa8463568vboxsync; @param Name of lib/DLL to copy to destination.
d660f9dc160b6be714951e83538414efa8463568vboxsync; @param Destination name to copy the source file to.
60a6d709c252770b3830c85deac9c493625e3f52vboxsync; @param Temporary folder used for exchanging the (locked) lib/DLL after a reboot.
60a6d709c252770b3830c85deac9c493625e3f52vboxsync;
60a6d709c252770b3830c85deac9c493625e3f52vboxsync!macro InstallFileEx un FileSrc FileDest DirTemp
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync ${LogVerbose} "Installing library $\"${FileSrc}$\" to $\"${FileDest}$\" ..."
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ; Try the gentle way and replace the file instantly
60a6d709c252770b3830c85deac9c493625e3f52vboxsync !insertmacro InstallLib DLL NOTSHARED NOREBOOT_NOTPROTECTED "${FileSrc}" "${FileDest}" "${DirTemp}"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ; If the above call didn't help, use a (later) reboot to replace the file
60a6d709c252770b3830c85deac9c493625e3f52vboxsync !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED "${FileSrc}" "${FileDest}" "${DirTemp}"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync!macroend
60a6d709c252770b3830c85deac9c493625e3f52vboxsync!define InstallFileEx "!insertmacro InstallFileEx"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync
60a6d709c252770b3830c85deac9c493625e3f52vboxsync;
60a6d709c252770b3830c85deac9c493625e3f52vboxsync; Macro for installing a library/DLL.
60a6d709c252770b3830c85deac9c493625e3f52vboxsync; @return Stack: "0" if copied, "1" if not, "2" on error / not found.
60a6d709c252770b3830c85deac9c493625e3f52vboxsync; @param Un/Installer prefix; either "" or "un".
60a6d709c252770b3830c85deac9c493625e3f52vboxsync; @param Name of lib/DLL to verify and copy to destination.
60a6d709c252770b3830c85deac9c493625e3f52vboxsync; @param Destination name to copy verified file to.
60a6d709c252770b3830c85deac9c493625e3f52vboxsync; @param Temporary folder used for exchanging the (locked) lib/DLL after a reboot.
60a6d709c252770b3830c85deac9c493625e3f52vboxsync; @param Vendor to check for.
60a6d709c252770b3830c85deac9c493625e3f52vboxsync; @param Architecture ("x86" or "amd64") to check for.
60a6d709c252770b3830c85deac9c493625e3f52vboxsync;
60a6d709c252770b3830c85deac9c493625e3f52vboxsync!macro InstallFileVerify un FileSrc FileDest DirTemp Vendor Architecture
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Push $0
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Push "${Architecture}"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Push "${Vendor}"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Push "${FileSrc}"
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync ${LogVerbose} "Verifying library $\"${FileSrc}$\" ..."
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Call ${un}VerifyFile
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Pop $0
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${If} $0 == "0"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${InstallFileEx} ${un} ${FileSrc} ${FileDest} ${DirTemp}
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${Else}
b0cec57d51e48736a3303366c728c3f025e8e81bvboxsync ${LogVerbose} "File $\"${FileSrc}$\" did not pass verification (Vendor: ${Vendor}, Architecture: ${Architecture})"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${EndIf}
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ; Push result popped off the stack to stack again.
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Push $0
60a6d709c252770b3830c85deac9c493625e3f52vboxsync!macroend
60a6d709c252770b3830c85deac9c493625e3f52vboxsync!define InstallFileVerify "!insertmacro InstallFileVerify"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync; Prepares the access rights for replacing
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync; a WRP (Windows Resource Protection) protected file
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync!macro PrepareWRPFile un
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsyncFunction ${un}PrepareWRPFile
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync Pop $0
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync Push $1
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync ${IfNot} ${FileExists} "$0"
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync ${LogVerbose} "WRP: File $\"$0$\" does not exist, skipping"
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync Return
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync ${EndIf}
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync ${If} ${FileExists} "$g_strSystemDir\takeown.exe"
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync ${CmdExecute} "$\"$g_strSystemDir\takeown.exe$\" /F $\"$0$\"" "true"
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync ${Else}
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync ${LogVerbose} "WRP: Warning: takeown.exe not found, skipping"
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync ${EndIf}
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync AccessControl::SetFileOwner "$0" "(S-1-5-32-545)"
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync Pop $1
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync ${LogVerbose} "WRP: Setting file owner for $\"$0$\" returned: $1"
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync AccessControl::GrantOnFile "$0" "(S-1-5-32-545)" "FullAccess"
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync Pop $1
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync ${LogVerbose} "WRP: Setting access rights for $\"$0$\" returned: $1"
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync!if $%VBOX_WITH_GUEST_INSTALL_HELPER% == "1"
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync !ifdef WFP_FILE_EXCEPTION
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync VBoxGuestInstallHelper::DisableWFP "$0"
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync Pop $1 ; Get return value (ignored for now)
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync ${LogVerbose} "WRP: Setting WFP exception for $\"$0$\" returned: $1"
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync !endif
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync!endif
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync Pop $1
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsyncFunctionEnd
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync!macroend
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync!insertmacro PrepareWRPFile ""
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync!insertmacro PrepareWRPFile "un."
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync;
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync; Macro for preparing the access rights for replacing
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync; a WRP (Windows Resource Protection) protected file.
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync; @return None.
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync; @param Path of file to prepare.
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync;
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync!macro PrepareWRPFileEx un FileSrc
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync Push $0
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync Push "${FileSrc}"
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync Call ${un}PrepareWRPFile
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync Pop $0
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync!macroend
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync!define PrepareWRPFileEx "!insertmacro PrepareWRPFileEx"
52fd5c70b8d678685601ccef9bb1ead7ea249309vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync;
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync; Validates backed up and replaced Direct3D files; either the d3d*.dll have
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync; to be from Microsoft or the (already) backed up msd3d*.dll files. If both
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync; don't match we have a corrupted / invalid installation.
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync; @return Stack: "0" if files are valid; otherwise "1".
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync;
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync!macro ValidateFilesDirect3D un
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsyncFunction ${un}ValidateD3DFiles
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Push $0
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ; We need to switch to 64-bit app mode to handle the "real" 64-bit files in
1925b7b78458e6090e77d09c1daba7072e466906vboxsync ; "system32" on a 64-bit guest
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Call ${un}SetAppMode64
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ; Note: Not finding a file (like *d3d8.dll) on Windows Vista/7 is fine;
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ; it simply is not present there.
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync ; Note 2: On 64-bit systems there are no 64-bit *d3d8 DLLs, only 32-bit ones
59489fdd1d01841db09e7a0188ad86e1a8f91843vboxsync ; in SysWOW64 (or in system32 on 32-bit systems).
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
59489fdd1d01841db09e7a0188ad86e1a8f91843vboxsync!if $%BUILD_TARGET_ARCH% == "x86"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${VerifyFileEx} "${un}" "$SYSDIR\d3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Pop $0
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${If} $0 == "1"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto verify_msd3d
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${EndIf}
59489fdd1d01841db09e7a0188ad86e1a8f91843vboxsync!endif
3af289fb9126c91f28ede0dcb3429da0de12b94evboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${VerifyFileEx} "${un}" "$SYSDIR\d3d9.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Pop $0
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${If} $0 == "1"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto verify_msd3d
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${If} $g_bCapDllCache == "true"
59489fdd1d01841db09e7a0188ad86e1a8f91843vboxsync!if $%BUILD_TARGET_ARCH% == "x86"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${VerifyFileEx} "${un}" "$SYSDIR\dllcache\d3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Pop $0
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${If} $0 == "1"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Goto verify_msd3d
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${EndIf}
59489fdd1d01841db09e7a0188ad86e1a8f91843vboxsync!endif
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${VerifyFileEx} "${un}" "$SYSDIR\dllcache\d3d9.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Pop $0
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${If} $0 == "1"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Goto verify_msd3d
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync!if $%BUILD_TARGET_ARCH% == "amd64"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${VerifyFileEx} "${un}" "$g_strSysWow64\d3d8.dll" "Microsoft Corporation" "x86"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Pop $0
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${If} $0 == "1"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto verify_msd3d
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${VerifyFileEx} "${un}" "$g_strSysWow64\d3d9.dll" "Microsoft Corporation" "x86"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Pop $0
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${If} $0 == "1"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto verify_msd3d
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${If} $g_bCapDllCache == "true"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${VerifyFileEx} "${un}" "$g_strSysWow64\dllcache\d3d8.dll" "Microsoft Corporation" "x86"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Pop $0
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${If} $0 == "1"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Goto verify_msd3d
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${EndIf}
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${VerifyFileEx} "${un}" "$g_strSysWow64\dllcache\d3d9.dll" "Microsoft Corporation" "x86"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Pop $0
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${If} $0 == "1"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Goto verify_msd3d
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync!endif
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto valid
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsyncverify_msd3d:
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
59489fdd1d01841db09e7a0188ad86e1a8f91843vboxsync!if $%BUILD_TARGET_ARCH% == "x86"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${VerifyFileEx} "${un}" "$SYSDIR\msd3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Pop $0
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${If} $0 == "1"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto invalid
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${EndIf}
59489fdd1d01841db09e7a0188ad86e1a8f91843vboxsync!endif
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${VerifyFileEx} "${un}" "$SYSDIR\msd3d9.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Pop $0
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${If} $0 == "1"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto invalid
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${If} $g_bCapDllCache == "true"
59489fdd1d01841db09e7a0188ad86e1a8f91843vboxsync!if $%BUILD_TARGET_ARCH% == "x86"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${VerifyFileEx} "${un}" "$SYSDIR\dllcache\msd3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Pop $0
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${If} $0 == "1"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Goto invalid
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${EndIf}
59489fdd1d01841db09e7a0188ad86e1a8f91843vboxsync!endif
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${VerifyFileEx} "${un}" "$SYSDIR\dllcache\msd3d9.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Pop $0
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${If} $0 == "1"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Goto invalid
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync!if $%BUILD_TARGET_ARCH% == "amd64"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${VerifyFileEx} "${un}" "$g_strSysWow64\msd3d8.dll" "Microsoft Corporation" "x86"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Pop $0
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${If} $0 == "1"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto invalid
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${VerifyFileEx} "${un}" "$g_strSysWow64\msd3d9.dll" "Microsoft Corporation" "x86"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Pop $0
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${If} $0 == "1"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto invalid
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${If} $g_bCapDllCache == "true"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${VerifyFileEx} "${un}" "$g_strSysWow64\dllcache\msd3d8.dll" "Microsoft Corporation" "x86"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Pop $0
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${If} $0 == "1"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Goto invalid
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${EndIf}
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${VerifyFileEx} "${un}" "$g_strSysWow64\dllcache\msd3d9.dll" "Microsoft Corporation" "x86"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Pop $0
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${If} $0 == "1"
60a6d709c252770b3830c85deac9c493625e3f52vboxsync Goto invalid
60a6d709c252770b3830c85deac9c493625e3f52vboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync!endif
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto valid
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsyncvalid:
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync StrCpy $0 "0" ; Installation valid
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto end
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsyncinvalid:
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync StrCpy $0 "1" ; Installation invalid / corrupted
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto end
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsyncend:
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Exch $0
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsyncFunctionEnd
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync!macroend
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync!insertmacro ValidateFilesDirect3D ""
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync!insertmacro ValidateFilesDirect3D "un."
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync;
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync; Restores formerly backed up Direct3D original files, which were replaced by
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync; a VBox XPDM driver installation before. This might be necessary for upgrading a
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync; XPDM installation to a WDDM one.
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync; @return Stack: "0" if files were restored successfully; otherwise "1".
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync;
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync!macro RestoreFilesDirect3D un
1612ddf488e6d1a459dc02cd7078215985f87081vboxsyncFunction ${un}RestoreFilesDirect3D
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync Push $0
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync ; We need to switch to 64-bit app mode to handle the "real" 64-bit files in
1925b7b78458e6090e77d09c1daba7072e466906vboxsync ; "system32" on a 64-bit guest
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync Call ${un}SetAppMode64
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync ; Note: Not finding a file (like *d3d8.dll) on Windows Vista/7 is fine;
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync ; it simply is not present there.
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync ; Note 2: On 64-bit systems there are no 64-bit *d3d8 DLLs, only 32-bit ones
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync ; in SysWOW64 (or in system32 on 32-bit systems).
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync
d660f9dc160b6be714951e83538414efa8463568vboxsync ${LogVerbose} "Restoring original D3D files ..."
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync!if $%BUILD_TARGET_ARCH% == "x86"
b6b95429f1ca0979fc22922200b242697b800cf8vboxsync ${PrepareWRPFileEx} "${un}" "$SYSDIR\d3d8.dll"
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync ${CopyFileEx} "${un}" "$SYSDIR\msd3d8.dll" "$SYSDIR\d3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync!endif
b6b95429f1ca0979fc22922200b242697b800cf8vboxsync ${PrepareWRPFileEx} "${un}" "$SYSDIR\d3d9.dll"
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync ${CopyFileEx} "${un}" "$SYSDIR\msd3d9.dll" "$SYSDIR\d3d9.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync ${If} $g_bCapDllCache == "true"
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync!if $%BUILD_TARGET_ARCH% == "x86"
b6b95429f1ca0979fc22922200b242697b800cf8vboxsync ${PrepareWRPFileEx} "${un}" "$SYSDIR\dllcache\d3d8.dll"
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync ${CopyFileEx} "${un}" "$SYSDIR\dllcache\msd3d8.dll" "$SYSDIR\dllcache\d3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync!endif
b6b95429f1ca0979fc22922200b242697b800cf8vboxsync ${PrepareWRPFileEx} "${un}" "$SYSDIR\dllcache\d3d9.dll"
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync ${CopyFileEx} "${un}" "$SYSDIR\dllcache\msd3d9.dll" "$SYSDIR\dllcache\d3d9.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync ${EndIf}
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync!if $%BUILD_TARGET_ARCH% == "amd64"
b6b95429f1ca0979fc22922200b242697b800cf8vboxsync ${PrepareWRPFileEx} "${un}" "$g_strSysWow64\d3d8.dll"
1925b7b78458e6090e77d09c1daba7072e466906vboxsync ${CopyFileEx} "${un}" "$g_strSysWow64\msd3d8.dll" "$g_strSysWow64\d3d8.dll" "Microsoft Corporation" "x86"
b6b95429f1ca0979fc22922200b242697b800cf8vboxsync ${PrepareWRPFileEx} "${un}" "$g_strSysWow64\d3d9.dll"
1925b7b78458e6090e77d09c1daba7072e466906vboxsync ${CopyFileEx} "${un}" "$g_strSysWow64\msd3d9.dll" "$g_strSysWow64\d3d9.dll" "Microsoft Corporation" "x86"
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync ${If} $g_bCapDllCache == "true"
b6b95429f1ca0979fc22922200b242697b800cf8vboxsync ${PrepareWRPFileEx} "${un}" "$g_strSysWow64\dllcache\d3d8.dll"
1925b7b78458e6090e77d09c1daba7072e466906vboxsync ${CopyFileEx} "${un}" "$g_strSysWow64\dllcache\msd3d8.dll" "$g_strSysWow64\dllcache\d3d8.dll" "Microsoft Corporation" "x86"
b6b95429f1ca0979fc22922200b242697b800cf8vboxsync ${PrepareWRPFileEx} "${un}" "$g_strSysWow64\dllcache\d3d9.dll"
1925b7b78458e6090e77d09c1daba7072e466906vboxsync ${CopyFileEx} "${un}" "$g_strSysWow64\dllcache\msd3d9.dll" "$g_strSysWow64\dllcache\d3d9.dll" "Microsoft Corporation" "x86"
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync ${EndIf}
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync!endif
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync ; Do a re-validation afterwards.
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync Call ${un}ValidateD3DFiles
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync Pop $0
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync ${If} $0 == "1" ; D3D files are invalid
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync ${LogVerbose} $(VBOX_UNINST_UNABLE_TO_RESTORE_D3D)
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync MessageBox MB_ICONSTOP|MB_OK $(VBOX_UNINST_UNABLE_TO_RESTORE_D3D) /SD IDOK
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync ${EndIf}
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync Exch $0
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync
1612ddf488e6d1a459dc02cd7078215985f87081vboxsyncFunctionEnd
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync!macroend
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync!insertmacro RestoreFilesDirect3D ""
1612ddf488e6d1a459dc02cd7078215985f87081vboxsync!insertmacro RestoreFilesDirect3D "un."