VirtualBox.wxs revision 8505a4e249939a9461edcc1730c1e62f777966b3
dc0d8d65d35787d30a275895ccad8d8e1b58a5ednd VirtualBox Windows Installation Script (WiX)
dc0d8d65d35787d30a275895ccad8d8e1b58a5ednd Copyright (C) 2006-2013 Oracle Corporation
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor This file is part of VirtualBox Open Source Edition (OSE), as
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor available from http://www.virtualbox.org. This file is free software;
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor you can redistribute it and/or modify it under the terms of the GNU
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor General Public License (GPL) as published by the Free Software
6ae232055d4d8a97267517c5e50074c2c819941and Foundation, in version 2 as it comes in the "COPYING" file of the
dc0d8d65d35787d30a275895ccad8d8e1b58a5ednd VirtualBox OSE distribution. VirtualBox OSE is distributed in the
6ae232055d4d8a97267517c5e50074c2c819941and hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<?define Property_RegKey = "Software\$(env.VBOX_VENDOR_SHORT)\VirtualBox" ?>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<?define Property_RegKeyInstall = "Software\$(env.VBOX_VENDOR_SHORT)\VirtualBox\Install" ?>
<!-- Always include an upgrade ID or otherwise upgrade installation will not be possible. When doing
Name="$(env.VBOX_PRODUCT) $(env.VBOX_VERSION_STRING)"
Version="$(var.Property_Version)"
Manufacturer="$(env.VBOX_VENDOR)">
Description="$(env.VBOX_PRODUCT) $(var.Property_VersionExt) installation package"
Comments="$(env.VBOX_PRODUCT) installation package"
Manufacturer="$(env.VBOX_VENDOR)"
Platform="$(var.Property_Platform)"/>
IncludeMaximum and IncludeMinimum specify whether the bound value is actually included in the range or not
(IncludeMaximum = yes meaning to find versions below or equal to the version specified in Maximum while
<Upgrade Id="C4BAD770-BFE8-4D2C-A592-693028A7215B"> <!-- Upgrade of Sun xVM VirtualBox >= v1.6.0 -->
<!-- Upgrade is flagged if current-install is newer than or equal to package - TODO: should make a dialog appear asking user to confirm downgrade. -->
<!--- Setting "OnlyDetect" to "no" makes the installer uninstall an already newer installed version. -->
<UpgradeVersion Property="NEWERVERSIONDETECTED" Minimum="$(var.Property_Version)" OnlyDetect="no" />
<UpgradeVersion Property="PREVIOUSVERSIONSINSTALLED" Minimum="1.0.0.0" Maximum="$(var.Property_Version)" IncludeMaximum="yes" />
<CustomAction Id="ca_OriginalTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[ProgramFiles64Folder]\$(env.VBOX_VENDOR_SHORT)\VirtualBox" />
<RegistrySearch Id="RegistryGetInstallPath" Root="HKLM" Key="$(var.Property_RegKey)" Name="InstallDir" Type="raw" Win64="$(var.Property_Win64)"/>
<CustomAction Id="ca_DefaultTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[EXISTINGINSTALLDIR]" />
<CustomAction Id="ca_OriginalTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[ProgramFilesFolder]\$(env.VBOX_VENDOR_SHORT)\VirtualBox" />
<RegistrySearch Id="RegistryGetInstallPath" Root="HKLM" Key="$(var.Property_RegKey)" Name="InstallDir" Type="raw" Win64="$(var.Property_Win64)"/>
<CustomAction Id="ca_DefaultTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[EXISTINGINSTALLDIR]" />
<CustomAction Id="ca_CheckSerial" BinaryKey="VBoxInstallHelper" DllEntry="CheckSerial" Impersonate="no"/>
<CustomAction Id="ca_InstallPythonAPI" BinaryKey="VBoxInstallHelper" DllEntry="InstallPythonAPI" Execute="deferred" Return="check" Impersonate="no"/>
<CustomAction Id="ca_InstallPythonAPIArgs" Property="ca_InstallPythonAPI" Value="[INSTALLDIR]" Execute="immediate"/>
<CustomAction Id="ca_InstallBranding" BinaryKey="VBoxInstallHelper" DllEntry="InstallBranding" Execute="deferred" Return="check" Impersonate="no"/>
<CustomAction Id="ca_InstallBrandingArgs" Property="ca_InstallBranding" Value="[INSTALLDIR]" Execute="immediate"/>
<CustomAction Id="ca_UninstallBranding" BinaryKey="VBoxInstallHelper" DllEntry="UninstallBranding" Execute="deferred" Return="check" Impersonate="no"/>
<CustomAction Id="ca_UninstallBrandingArgs" Property="ca_UninstallBranding" Value="[INSTALLDIR]" Execute="immediate"/>
<CustomAction Id="ca_CreateHostOnlyInterface" BinaryKey="VBoxInstallHelper" DllEntry="CreateHostOnlyInterface" Execute="deferred" Return="check" Impersonate="no"/>
<CustomAction Id="ca_CreateHostOnlyInterfaceArgs" Property="ca_CreateHostOnlyInterface" Value="[INSTALLDIR]" Execute="immediate"/>
<CustomAction Id="ca_RemoveHostOnlyInterfaces" BinaryKey="VBoxInstallHelper" DllEntry="RemoveHostOnlyInterfaces" Execute="deferred" Return="check" Impersonate="no"/>
<CustomAction Id="ca_StopHostOnlyInterfaces" BinaryKey="VBoxInstallHelper" DllEntry="StopHostOnlyInterfaces" Execute="deferred" Return="check" Impersonate="no"/>
<CustomAction Id="ca_UpdateHostOnlyInterfaces" BinaryKey="VBoxInstallHelper" DllEntry="UpdateHostOnlyInterfaces" Execute="deferred" Return="check" Impersonate="no"/>
<CustomAction Id="ca_UpdateHostOnlyInterfacesArgs" Property="ca_UpdateHostOnlyInterfaces" Value="[INSTALLDIR]" Execute="immediate"/>
<CustomAction Id="ca_InstallNetFlt" BinaryKey="VBoxInstallHelper" DllEntry="InstallNetFlt" Execute="deferred" Return="check" Impersonate="no"/>
<CustomAction Id="ca_InstallNetFltArgs" Property="ca_InstallNetFlt" Value="[INSTALLDIR]" Execute="immediate"/>
<CustomAction Id="ca_RollbackInstallNetFlt" BinaryKey="VBoxInstallHelper" DllEntry="UninstallNetFlt" Execute="rollback" Impersonate="no"/>
<CustomAction Id="ca_RollbackInstallNetFltArgs" Property="ca_RollbackInstallNetFlt" Value="[INSTALLDIR]" Execute="immediate"/>
<CustomAction Id="ca_UninstallNetFlt" BinaryKey="VBoxInstallHelper" DllEntry="UninstallNetFlt" Execute="deferred" Return="check" Impersonate="no"/>
<CustomAction Id="ca_UninstallNetFltArgs" Property="ca_UninstallNetFlt" Value="[INSTALLDIR]" Execute="immediate"/>
<CustomAction Id="ca_RollbackUninstallNetFlt" BinaryKey="VBoxInstallHelper" DllEntry="InstallNetFlt" Execute="rollback" Impersonate="no"/>
<CustomAction Id="ca_RollbackUninstallNetFltArgs" Property="ca_RollbackUninstallNetFlt" Value="[INSTALLDIR]" Execute="immediate"/>
<CustomAction Id="ca_StartVBox" FileKey="file_VirtualBox.exe" ExeCommand="" Return="asyncNoWait" Impersonate="yes" />
<RegistrySearch Id="RegSearchSunVersion" Root="HKLM" Key="SOFTWARE\Sun\VirtualBox" Name="Version" Type="raw" Win64="$(var.Property_Win64)"/>
<RegistrySearch Id="RegSearchInnotekVersion" Root="HKLM" Key="SOFTWARE\Innotek\VirtualBox" Name="Version" Type="raw" Win64="$(var.Property_Win64)"/>
<Component Id="cp_VBoxDrv" Guid="D3E2F2BB-569F-46A2-836C-BDF30FF1EDF8" Win64="$(var.Property_Win64)">
Source="$(env.PATH_OUT)\bin\VBoxDrv.sys"/>
Source="$(env.PATH_OUT)\bin\VBoxDrv.inf" />
Source="$(env.PATH_OUT)\bin\VBoxDrv.cat" />
<Component Id="cp_USBFilterDriver" Guid="B7D782D2-96DF-4775-A0E1-A76CF7B04B65" Win64="$(var.Property_Win64)">
Source="$(env.PATH_OUT)\bin\VBoxUSBMon.sys" />
Source="$(env.PATH_OUT)\bin\VBoxUSBMon.inf" />
Source="$(env.PATH_OUT)\bin\VBoxUSBMon.cat" />
<Component Id="cp_USBDeviceDriver" Guid="010FE46A-E358-43E2-8BDC-38BC8BEC82E0" Win64="$(var.Property_Win64)">
Source="$(env.PATH_OUT)\bin\VBoxUSB.sys" />
Source="$(env.PATH_OUT)\bin\VBoxUSB.inf" />
Source="$(env.PATH_OUT)\bin\VBoxUSB.cat" />
<Component Id="cp_NetFltDriver" Guid="F0A02F6B-A349-42f8-A2EB-569DCAAAF846" Win64="$(var.Property_Win64)">
Source="$(env.PATH_OUT)\bin\VBoxNetFltM.inf" />
Source="$(env.PATH_OUT)\bin\VBoxNetFlt.inf" />
Source="$(env.PATH_OUT)\bin\VBoxNetFlt.cat" />
<Component Id="cp_NetAdpDriver" Guid="7adf3e12-af3c-4d36-8bec-36d5064cf84f" Win64="$(var.Property_Win64)">
Source="$(env.PATH_OUT)\bin\VBoxNetAdp.inf" />
Source="$(env.PATH_OUT)\bin\VBoxNetAdp.cat" />
Source="$(env.PATH_OUT)\bin\x86\VBoxRT-x86.dll">
Source="$(env.PATH_OUT)\bin\x86\msvcr100.dll" />
Source="$(env.PATH_OUT)\bin\x86\msvcp100.dll" />
Source="$(env.PATH_OUT)\bin\x86\msvcr110.dll" />
Source="$(env.PATH_OUT)\bin\x86\msvcp110.dll" />
<Component Id="cp_MainCOM" Guid="CD4A3C6C-C2D5-428D-90A1-B6DA3D0777D6" Win64="$(var.Property_Win64)">
Source="$(env.PATH_OUT)\bin\VBoxSVC.exe">
in VBoxSVC.exe - it's just a matter of choice which one to use -->
<Component Id="cp_StartMenuShortcut" Guid="1C137D24-E599-47BD-98D0-2F62F202A8EA" Win64="$(var.Property_Win64)">
<RegistryValue Root="HKCU" Key="$(var.Property_RegKeyInstall)" Type="string"
Name="VirtualBox" WorkingDirectory="INSTALLDIR" Advertise="no" Target="VirtualBox.exe" />
<Component Id="cp_RegisterExtensions" Guid="FEB8943E-5D60-4E2D-846F-458207019D40" Win64="$(var.Property_Win64)">
Important: The IDs in "IconIndex" *must* be matching "Resources\resource.h". -->
<ProgId Id="progId_VirtualBox.Shell.vbox" Description="VirtualBox Machine Definition" Icon="file_VBoxRes.dll" IconIndex="-201">
<ProgId Id="progId_VirtualBox.Shell.vbox-extpack" Description="VirtualBox Extension Pack" Icon="file_VBoxRes.dll" IconIndex="-202">
<ProgId Id="progId_VirtualBox.Shell.ovf" Description="Open Virtualization Format" Icon="file_VBoxRes.dll" IconIndex="-301">
<ProgId Id="progId_VirtualBox.Shell.ova" Description="Open Virtualization Format Archive" Icon="file_VBoxRes.dll" IconIndex="-302">
<ProgId Id="progId_VirtualBox.Shell.vdi" Description="Virtual Disk Image" Icon="file_VBoxRes.dll" IconIndex="-303">
<ProgId Id="progId_VirtualBox.Shell.vmdk" Description="Virtual Machine Disk Format" Icon="file_VBoxRes.dll" IconIndex="-304">
<ProgId Id="progId_VirtualBox.Shell.vhd" Description="Virtual Hard Disk" Icon="file_VBoxRes.dll" IconIndex="-305">
<ProgId Id="progId_VirtualBox.Shell.hdd" Description="Virtual Hard Disk" Icon="file_VBoxRes.dll" IconIndex="-306">
<!-- All Binaries, DLLs (except COM) and drivers are in one component because they belong together. Additional
binaries e.g. test tools, utilities etc. should be in another component so they"re clearly separated. -->
<Component Id="cp_MainBinaries" Guid="5C8FE57A-F744-4DE0-AA3F-A563F486AD98" Win64="$(var.Property_Win64)">
Source="$(env.PATH_OUT)\bin\VBoxManage.exe" />
Source="$(env.PATH_OUT)\bin\VBoxHeadless.exe">
<!-- Create a simple shortcut for VBoxVRDP, which is not present anymore, pointing to VBoxHeadless.exe -->
<!-- <Shortcut Id="ShortcutVBoxVRDP" Directory="INSTALLDIR" Name="VBoxVRDP" Show="normal" WorkingDirectory="INSTALLDIR"/> -->
Source="$(env.PATH_OUT)\bin\VBoxBalloonCtrl.exe"/>
Source="$(env.PATH_OUT)\bin\VBoxNetDHCP.exe"/>
Source="$(env.PATH_OUT)\bin\VBoxNetNAT.exe"/>
Source="$(env.PATH_OUT)\bin\VBoxExtPackHelperApp.exe"/>
Source="$(env.PATH_OUT)\bin\VBoxDD.dll" />
Source="$(env.PATH_OUT)\bin\VBoxDD2.dll" />
Source="$(env.PATH_OUT)\bin\VBoxDDU.dll" />
Source="$(env.PATH_OUT)\bin\VBoxRT.dll" />
Source="$(env.PATH_OUT)\bin\VBoxREM.dll" />
Source="$(env.PATH_OUT)\bin\VBoxREM32.dll" />
Source="$(env.PATH_OUT)\bin\VBoxREM64.dll" />
Source="$(env.PATH_OUT)\bin\VBoxVMM.dll" />
Source="$(env.PATH_OUT)\bin\VBoxVRDP.dll" />
Source="$(env.PATH_OUT)\bin\VBoxSharedFolders.dll" />
Source="$(env.PATH_OUT)\bin\VBoxSharedClipboard.dll" />
Source="$(env.PATH_OUT)\bin\VBoxDragAndDropSvc.dll" />
Source="$(env.PATH_OUT)\bin\VBoxGuestPropSvc.dll" />
Source="$(env.PATH_OUT)\bin\VBoxGuestControlSvc.dll" />
Source="$(env.PATH_OUT)\bin\VBoxHostChannel.dll" />
Source="$(env.PATH_OUT)\bin\VBoxAuth.dll" />
Source="$(env.PATH_OUT)\bin\VBoxAuthSimple.dll" />
Source="$(env.PATH_OUT)\bin\VBoxRes.dll" />
Source="$(env.PATH_OUT)\bin\VMMGC.gc" />
Source="$(env.PATH_OUT)\bin\VBoxDDGC.gc" />
Source="$(env.PATH_OUT)\bin\VBoxDD2GC.gc" />
Source="$(env.PATH_OUT)\bin\VMMR0.r0" />
Source="$(env.PATH_OUT)\bin\VBoxDDR0.r0" />
Source="$(env.PATH_OUT)\bin\VBoxDD2R0.r0" />
Source="$(env.PATH_OUT)\bin\VBoxTestOGL.exe" />
Source="$(env.PATH_OUT)\bin\VirtualBox.exe">
Source="$(env.PATH_OUT)\bin\QtCoreVBox4.dll" />
Source="$(env.PATH_OUT)\bin\QtGuiVBox4.dll" />
Source="$(env.PATH_OUT)\bin\QtNetworkVBox4.dll" />
Source="$(env.PATH_OUT)\bin\VBoxDbg.dll" />
Source="$(env.PATH_OUT)\bin\QtOpenGLVBox4.dll" />
Source="$(env.PATH_OUT)\bin\msvcr100.dll" />
Source="$(env.PATH_OUT)\bin\msvcp100.dll" />
Source="$(env.PATH_OUT)\bin\msvcr110.dll" />
Source="$(env.PATH_OUT)\bin\msvcp110.dll" />
Source="$(env.PATH_OUT)\bin\VBoxEFI32.fd" />
Source="$(env.PATH_OUT)\bin\VBoxEFI64.fd" />
<File Id="file_VBoxGuestAdditions.iso" Name="VBoxGuestAdditions.iso" DiskId="$(var.Property_DiskIdCommon)"
Source="$(env.PATH_MULTIARCH_GUEST_ADDITIONS_ISO)\VBoxGuestAdditions.iso" />
Source="$(env.PATH_OUT)\bin\additions\VBoxGuestAdditions.iso" />
<Component Id="cp_QtAccessible" Guid="12040EF9-D4A8-4FB2-A69C-CA2F5C354A45" Win64="$(var.Property_Win64)">
Source="$(env.PATH_OUT)\bin\accessible\qtaccessiblewidgets4.dll" />
<Component Id="cp_VBoxPyInst" Guid="C9A40306-5102-11DE-A7BA-C3C555D89593" Win64="$(var.Property_Win64)">
Source="$(env.PATH_OUT)\bin\sdk\installer\vboxapisetup.py" />
<Component Id="cp_VBoxPyMod" Guid="DF19CB76-5102-11DE-943B-13C755D89593" Win64="$(var.Property_Win64)">
Source="$(env.PATH_OUT)\bin\sdk\installer\vboxapi\__init__.py" />
<File Id="file_VirtualBox_constants.py" Name="VirtualBox_constants.py" DiskId="$(var.Property_DiskIdCommon)"
Source="$(env.PATH_OUT)\bin\sdk\installer\vboxapi\VirtualBox_constants.py" />
<Component Id="cp_VBoxCROpenGL" Guid="874A1297-835A-491D-8A9D-7E723BC29EE7" Win64="$(var.Property_Win64)">
Source="$(env.PATH_OUT)\bin\VBoxOGLhostcrutil.dll" />
Source="$(env.PATH_OUT)\bin\VBoxOGLhosterrorspu.dll" />
Source="$(env.PATH_OUT)\bin\VBoxOGLrenderspu.dll" />
Source="$(env.PATH_OUT)\bin\VBoxSharedCrOpenGL.dll" />
<Component Id="cp_VBoxSDLBinaries" Guid="F09D5FD9-E176-42B0-90A9-481BB18B0CB4" Win64="$(var.Property_Win64)">
Source="$(env.PATH_OUT)\bin\VBoxSDL.exe" />
Source="$(env.PATH_OUT)\bin\SDL.dll" />
Source="$(env.PATH_OUT)\bin\SDL_ttf.dll" />
Source="$(env.PATH_OUT)\bin\vboxwebsrv.exe" />
Source="$(env.PATH_OUT)\bin\VBoxCAPI.dll" />
<Component Id="cp_StartMenuVBox" Guid="C2DC321A-CE63-40EE-8A98-724DF8BD12FB" Win64="$(var.Property_Win64)">
<Shortcut Id="sc_StartMenuVBox" Directory="dir_StartMenuVBox" Name="$(env.VBOX_PRODUCT)" Description="$(env.VBOX_PRODUCT)"
<Component Id="cp_DesktopShortcut" Guid="668F8A1A-F5CE-48B3-BB1A-3042EE27B279" Win64="$(var.Property_Win64)">
<Shortcut Id="sc_DesktopVBox" Directory="DesktopFolder" Name="$(env.VBOX_PRODUCT)" Description="$(env.VBOX_PRODUCT)"
<Component Id="cp_QuickLaunchVBox" Guid="CC19E026-938A-41CB-8E77-3F33296244B6" Win64="$(var.Property_Win64)">
<Shortcut Id="sc_QuickLaunchVBox" Directory="dir_QuicklaunchFolder" Name="$(env.VBOX_PRODUCT)" Description="$(env.VBOX_PRODUCT)"
Description="!(loc.VB_App)"
Description="!(loc.VB_USBDriver)"
Description="!(loc.VB_Network)"
Description="!(loc.VB_NetFltDriver)"
Description="!(loc.VB_NetAdpDriver)"
Description="!(loc.VB_Python)"
To debug the action sequences, do: "msiexec /i <VBox.msi> /lar <Logfile>"
<Custom Action="ca_OriginalTargetDir" After="FileCost"><![CDATA[(NOT INSTALLDIR) AND (NOT EXISTINGINSTALLDIR)]]></Custom>
<Custom Action="ca_DefaultTargetDir" Before="FileCost" ><![CDATA[NOT Installed AND (NOT INSTALLDIR) AND EXISTINGINSTALLDIR]]></Custom>
<Custom Action="ca_CreateHostOnlyInterfaceArgs" Before="ca_CreateHostOnlyInterface" ><![CDATA[&VBoxNetworkAdp=3]]></Custom>
<Custom Action="ca_CreateHostOnlyInterface" Before="InstallFinalize" ><![CDATA[&VBoxNetworkAdp=3]]></Custom>
<Custom Action="ca_RemoveHostOnlyInterfaces" After="ca_UninstallNetFlt" ><![CDATA[(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")]]></Custom>
<Custom Action="ca_StopHostOnlyInterfaces" Before="ca_UpdateHostOnlyInterfaces" ><![CDATA[UPGRADINGPRODUCTCODE]]></Custom>
<Custom Action="ca_UpdateHostOnlyInterfacesArgs" Before="ca_UpdateHostOnlyInterfaces" ><![CDATA[Installed AND UPGRADINGPRODUCTCODE]]></Custom>
<Custom Action="ca_UpdateHostOnlyInterfaces" Before="InstallFiles" ><![CDATA[Installed AND UPGRADINGPRODUCTCODE]]></Custom>
<Custom Action="ca_RollbackInstallNetFltArgs" Before="ca_RollbackInstallNetFlt" ><![CDATA[&VBoxNetworkFlt=3]]></Custom>
<Custom Action="ca_RollbackInstallNetFlt" Before="ca_InstallNetFlt" ><![CDATA[&VBoxNetworkFlt=3]]></Custom>
<Custom Action="ca_InstallNetFltArgs" Before="ca_InstallNetFlt" ><![CDATA[&VBoxNetworkFlt=3]]></Custom>
<Custom Action="ca_InstallNetFlt" Before="ca_CreateHostOnlyInterface" ><![CDATA[&VBoxNetworkFlt=3]]></Custom>
<Custom Action="ca_RollbackUninstallNetFltArgs" Before="ca_RollbackUninstallNetFlt" ><![CDATA[&VBoxNetworkFlt=2]]></Custom>
<Custom Action="ca_RollbackUninstallNetFlt" Before="ca_UninstallNetFlt" ><![CDATA[&VBoxNetworkFlt=2]]></Custom>
<Custom Action="ca_UninstallNetFltArgs" Before="ca_UninstallNetFlt" ><![CDATA[&VBoxNetworkFlt=2]]></Custom>
<Custom Action="ca_UninstallNetFlt" After="InstallInitialize" ><![CDATA[&VBoxNetworkFlt=2]]></Custom>
<Custom Action="ca_InstallPythonAPIArgs" Before="ca_InstallPythonAPI" ><![CDATA[&VBoxPython=3]]></Custom>
<Custom Action="ca_InstallBrandingArgs" Before="ca_InstallBranding" ><![CDATA[NOT REMOVE]]></Custom>
<Custom Action="ca_UninstallBrandingArgs" Before="ca_UninstallBranding" ><![CDATA[(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")]]></Custom>