VBoxGuestAdditionsCommon.nsh revision b711a01730152421a900e5f4e237cfb848c9c4fd
b711a01730152421a900e5f4e237cfb848c9c4fdvboxsync; $Id$
b711a01730152421a900e5f4e237cfb848c9c4fdvboxsync; @file
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync; VBoxGuestAdditionsCommon.nsh - Common / shared utility functions.
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;
2f14f4556ae74ad40719bc9690534693abb71868vboxsync
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync;
b711a01730152421a900e5f4e237cfb848c9c4fdvboxsync; Copyright (C) 2006-2012 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"
78a072e1b56619e3230735ae073668311232ec94vboxsync !if $%BUILD_TARGET_ARCH% == "x86"
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsync ; libWine is used for 32bit d3d only
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsync ; @todo: remove it for 32bit as well
78a072e1b56619e3230735ae073668311232ec94vboxsync FILE "$%PATH_OUT%\bin\additions\libWine.dll"
78a072e1b56619e3230735ae073668311232ec94vboxsync !endif
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%\libWine.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"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync ; WDDM Video driver
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"
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
78a072e1b56619e3230735ae073668311232ec94vboxsync!macro EnableLog un
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunction ${un}EnableLog
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!ifdef _DEBUG
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto log
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCmp $g_bLogEnable "true" log
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto exit
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsynclog:
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync LogSet on
78a072e1b56619e3230735ae073668311232ec94vboxsync LogText "Start logging."
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncexit:
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunctionEnd
78a072e1b56619e3230735ae073668311232ec94vboxsync!macroend
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro EnableLog ""
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro EnableLog "un."
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!macro WriteLogUI un
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunction ${un}WriteLogUI
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync IfSilent exit
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!ifdef _DEBUG
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto log
78a072e1b56619e3230735ae073668311232ec94vboxsync!endif
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCmp $g_bLogEnable "true" log
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto exit
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsynclog:
78a072e1b56619e3230735ae073668311232ec94vboxsync
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync ; Dump log to see what happened
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCpy $0 "$INSTDIR\${un}install_ui.log"
78a072e1b56619e3230735ae073668311232ec94vboxsync Push $0
78a072e1b56619e3230735ae073668311232ec94vboxsync Call ${un}DumpLog
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncexit:
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunctionEnd
78a072e1b56619e3230735ae073668311232ec94vboxsync!macroend
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro WriteLogUI ""
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro WriteLogUI "un."
78a072e1b56619e3230735ae073668311232ec94vboxsync
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync!macro WriteLogVBoxTray un
cc260ed3418d1fd2771d0395f818f76808b60238vboxsyncFunction ${un}WriteLogVBoxTray
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ; Pop function parameters off the stack
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ; in reverse order
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync Exch $1 ; Message type (0=Info, 1=Warning, 2=Error)
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync Exch
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync Exch $0 ; Body string
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ; @todo Add more paramters here!
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync!if $%VBOX_WITH_GUEST_INSTALL_HELPER% == "1"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ${If} $g_bPostInstallStatus == "true"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ; Parameters:
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ; - String: Description / Body
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ; - String: Title / Name of application
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ; - Integer: Type of message: 0 (Info), 1 (Warning), 2 (Error)
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ; - Integer: Time (in msec) to show the notification
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync VBoxGuestInstallHelper::VBoxTrayShowBallonMsg "$0" "VirtualBox Guest Additions Setup" $1 5000
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync Pop $0 ; Get return value (ignored for now)
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ${EndIf}
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync!endif
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync Pop $0
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync Pop $1
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
cc260ed3418d1fd2771d0395f818f76808b60238vboxsyncFunctionEnd
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync!macroend
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync!insertmacro WriteLogVBoxTray ""
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync!insertmacro WriteLogVBoxTray "un."
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
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
78a072e1b56619e3230735ae073668311232ec94vboxsync!macro GetWindowsVer un
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunction ${un}GetWindowsVer
78a072e1b56619e3230735ae073668311232ec94vboxsync
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync ; Check if we are running on w2k or above
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync ; For other windows versions (>XP) it may be necessary to change winver.nsh
78a072e1b56619e3230735ae073668311232ec94vboxsync Call ${un}GetWindowsVersion
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $R3 ; Windows Version
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Push $R3 ; The windows version string
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "NT" ; String to search for. Win 2k family returns no string containing 'NT'
78a072e1b56619e3230735ae073668311232ec94vboxsync Call ${un}StrStr
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $R0
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync StrCmp $R0 '' nt5plus ; Not NT 3.XX or 4.XX
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Ok we know it is NT. Must be a string like NT X.XX
78a072e1b56619e3230735ae073668311232ec94vboxsync Push $R3 ; The windows version string
78a072e1b56619e3230735ae073668311232ec94vboxsync Push "4." ; String to search for
78a072e1b56619e3230735ae073668311232ec94vboxsync Call ${un}StrStr
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $R0
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync StrCmp $R0 "" nt5plus nt4 ; If empty -> not NT 4
78a072e1b56619e3230735ae073668311232ec94vboxsync
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsyncnt5plus: ; Windows 2000+ (XP, Vista, ...)
78a072e1b56619e3230735ae073668311232ec94vboxsync
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync StrCpy $g_strWinVersion $R3
78a072e1b56619e3230735ae073668311232ec94vboxsync goto exit
78a072e1b56619e3230735ae073668311232ec94vboxsync
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsyncnt4: ; NT 4.0
78a072e1b56619e3230735ae073668311232ec94vboxsync
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync StrCpy $g_strWinVersion "NT4"
78a072e1b56619e3230735ae073668311232ec94vboxsync goto exit
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncexit:
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunctionEnd
78a072e1b56619e3230735ae073668311232ec94vboxsync!macroend
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro GetWindowsVer ""
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro GetWindowsVer "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
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Stopping VBoxService ..."
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncsvc_stop:
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync LogText "Stopping VBoxService (as service) ..."
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync ${If} $g_strWinVersion == "NT4"
78a072e1b56619e3230735ae073668311232ec94vboxsync nsExec::Exec '"$SYSDIR\net.exe" stop VBoxService'
78a072e1b56619e3230735ae073668311232ec94vboxsync ${Else}
78a072e1b56619e3230735ae073668311232ec94vboxsync nsExec::Exec '"$SYSDIR\SC.exe" stop VBoxService'
78a072e1b56619e3230735ae073668311232ec94vboxsync ${EndIf}
78a072e1b56619e3230735ae073668311232ec94vboxsync Sleep "1000" ; Wait a bit
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncexe_stop:
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!ifdef _DEBUG
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "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
78a072e1b56619e3230735ae073668311232ec94vboxsync LogText "Try: $3"
78a072e1b56619e3230735ae073668311232ec94vboxsync
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
78a072e1b56619e3230735ae073668311232ec94vboxsync Sleep "1000" ; Wait a bit
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto exe_stop_loop
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncexit:
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "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
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "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
78a072e1b56619e3230735ae073668311232ec94vboxsync DetailPrint "Stopping VBoxTray done."
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $1
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $0
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunctionEnd
78a072e1b56619e3230735ae073668311232ec94vboxsync!macroend
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro StopVBoxTray ""
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro StopVBoxTray "un."
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!macro WriteRegBinR ROOT KEY NAME VALUE
78a072e1b56619e3230735ae073668311232ec94vboxsync WriteRegBin "${ROOT}" "${KEY}" "${NAME}" "${VALUE}"
78a072e1b56619e3230735ae073668311232ec94vboxsync!macroend
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!macro AbortShutdown un
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunction ${un}AbortShutdown
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Push $0
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ; Try to abort the shutdown
78a072e1b56619e3230735ae073668311232ec94vboxsync nsExec::ExecToLog '"$g_strSystemDir\shutdown.exe" -a' $0
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $0
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
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync ${If} $g_strWinVersion == "Vista"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync ${OrIf} $g_strWinVersion == "7"
36dd9dabf3f64468206cb74145b51245cf7fde54vboxsync ${OrIf} $g_strWinVersion == "8"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync StrCpy $g_bCapWDDM "true"
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync ${EndIf}
e3197fda68ad1e45cc3004f5b58a326a5270aa8fvboxsync ; If we're on Windows 8 we *have* to use the WDDM driver, so select it
e3197fda68ad1e45cc3004f5b58a326a5270aa8fvboxsync ; by default
e3197fda68ad1e45cc3004f5b58a326a5270aa8fvboxsync ${If} $g_strWinVersion == "8"
e3197fda68ad1e45cc3004f5b58a326a5270aa8fvboxsync StrCpy $g_bWithWDDM "true"
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
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
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Push "${Architecture}"
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Push "${Vendor}"
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Push "${File}"
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync Call ${un}VerifyFile
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync!macroend
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync!define VerifyFileEx "!insertmacro VerifyFileEx"
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync
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
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ; ""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.
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${VerifyFileEx} "${un}" "$SYSDIR\d3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Pop $0
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${If} $0 == "1"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto verify_msd3d
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${EndIf}
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
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${VerifyFileEx} "${un}" "$SYSDIR\dllcache\d3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Pop $0
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${If} $0 == "1"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto verify_msd3d
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${VerifyFileEx} "${un}" "$SYSDIR\dllcache\d3d9.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Pop $0
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${If} $0 == "1"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto verify_msd3d
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync!if $%BUILD_TARGET_ARCH% == "amd64"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
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
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${VerifyFileEx} "${un}" "$g_strSysWow64\dllcache\d3d8.dll" "Microsoft Corporation" "x86"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Pop $0
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${If} $0 == "1"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto verify_msd3d
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${VerifyFileEx} "${un}" "$g_strSysWow64\dllcache\d3d9.dll" "Microsoft Corporation" "x86"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Pop $0
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${If} $0 == "1"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto verify_msd3d
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync!endif
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto valid
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsyncverify_msd3d:
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${VerifyFileEx} "${un}" "$SYSDIR\msd3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Pop $0
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${If} $0 == "1"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto invalid
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${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
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${VerifyFileEx} "${un}" "$SYSDIR\dllcache\msd3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Pop $0
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${If} $0 == "1"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto invalid
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${VerifyFileEx} "${un}" "$SYSDIR\dllcache\msd3d9.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Pop $0
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${If} $0 == "1"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto invalid
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync!if $%BUILD_TARGET_ARCH% == "amd64"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
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
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${VerifyFileEx} "${un}" "$g_strSysWow64\dllcache\msd3d8.dll" "Microsoft Corporation" "x86"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Pop $0
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${If} $0 == "1"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto invalid
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${VerifyFileEx} "${un}" "$g_strSysWow64\dllcache\msd3d9.dll" "Microsoft Corporation" "x86"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Pop $0
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${If} $0 == "1"
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync Goto invalid
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ${EndIf}
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
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."