VirtualBox.wxs revision 930b964496e0f9341162fc31990a7a3a507f453e
456de5f26ad346749963525a4f91883e6a51c5f3gryzor VirtualBox Windows Installation Script (WiX)
456de5f26ad346749963525a4f91883e6a51c5f3gryzor Copyright (C) 2006-2012 Oracle Corporation
456de5f26ad346749963525a4f91883e6a51c5f3gryzor This file is part of VirtualBox Open Source Edition (OSE), as
456de5f26ad346749963525a4f91883e6a51c5f3gryzor available from http://www.virtualbox.org. This file is free software;
456de5f26ad346749963525a4f91883e6a51c5f3gryzor you can redistribute it and/or modify it under the terms of the GNU
456de5f26ad346749963525a4f91883e6a51c5f3gryzor General Public License (GPL) as published by the Free Software
456de5f26ad346749963525a4f91883e6a51c5f3gryzor Foundation, in version 2 as it comes in the "COPYING" file of the
456de5f26ad346749963525a4f91883e6a51c5f3gryzor VirtualBox OSE distribution. VirtualBox OSE is distributed in the
456de5f26ad346749963525a4f91883e6a51c5f3gryzor hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<?define Property_RegKey = "Software\$(env.VBOX_VENDOR_SHORT)\VirtualBox" ?>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<?define Property_RegKeyInstall = "Software\$(env.VBOX_VENDOR_SHORT)\VirtualBox\Install" ?>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<?define Property_Version = "$(env.VBOX_VERSION_STRING_RAW)" ?>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<?define Property_VersionExt = "$(env.VBOX_VERSION_STRING)" ?>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <?define Property_ProgramFiles = "ProgramFiles64Folder" ?>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <?define Property_ProgramFiles = "ProgramFilesFolder" ?>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <!-- Note: Settings this to 'no' breaks win2k installs (!) -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<!-- If we build a combined installer (32- and 64-bit in one installer), we
456de5f26ad346749963525a4f91883e6a51c5f3gryzor use two installer "disks": One for all platform-specific stuff and one which
456de5f26ad346749963525a4f91883e6a51c5f3gryzor contains all common (platform independent) stuff (like manuals, bitmaps etc). -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor xmlns:difxapp="http://schemas.microsoft.com/wix/DifxAppExtension">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <!-- Note: GUIDs in WiX *must* be uppercase! -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <!-- Always include an upgrade ID or otherwise upgrade installation will not be possible. When doing
456de5f26ad346749963525a4f91883e6a51c5f3gryzor a major upgrade (more than just fixing a few files) change the product GUID. We always do a major
456de5f26ad346749963525a4f91883e6a51c5f3gryzor upgrade even for minor VBox updates. For that only change the product ID and the product version.
456de5f26ad346749963525a4f91883e6a51c5f3gryzor The upgrade code *never* must be changed! -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <!-- Update / Upgrade policies:
456de5f26ad346749963525a4f91883e6a51c5f3gryzor Update Type Package Code Product Version Product Code Upgrade Code
456de5f26ad346749963525a4f91883e6a51c5f3gryzor Small update change don't change don't change don't change
456de5f26ad346749963525a4f91883e6a51c5f3gryzor Minor update change change don't change don't change
456de5f26ad346749963525a4f91883e6a51c5f3gryzor Major upgrade change change change don't change -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <!-- Old product ID: <Product Id="B59FE77B-738F-4f1c-AB48-3104895AF676"
456de5f26ad346749963525a4f91883e6a51c5f3gryzor Old upgrade code of innotek: UpgradeCode="F5FFAEBF-97AE-4038-8F91-4DE719456127" -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor UpgradeCode="C4BAD770-BFE8-4D2C-A592-693028A7215B"
456de5f26ad346749963525a4f91883e6a51c5f3gryzor Name="$(env.VBOX_PRODUCT) $(env.VBOX_VERSION_STRING)"
456de5f26ad346749963525a4f91883e6a51c5f3gryzor Language="!(loc.LANG)"
456de5f26ad346749963525a4f91883e6a51c5f3gryzor Codepage="1252"
456de5f26ad346749963525a4f91883e6a51c5f3gryzor Manufacturer="$(env.VBOX_VENDOR)">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor Description="$(env.VBOX_PRODUCT) $(var.Property_VersionExt) installation package"
456de5f26ad346749963525a4f91883e6a51c5f3gryzor Comments="$(env.VBOX_PRODUCT) installation package"
456de5f26ad346749963525a4f91883e6a51c5f3gryzor Manufacturer="$(env.VBOX_VENDOR)"
456de5f26ad346749963525a4f91883e6a51c5f3gryzor InstallerVersion="200"
456de5f26ad346749963525a4f91883e6a51c5f3gryzor Compressed="yes"
456de5f26ad346749963525a4f91883e6a51c5f3gryzor InstallPrivileges="elevated"
456de5f26ad346749963525a4f91883e6a51c5f3gryzor Platform="$(var.Property_Platform)"/>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <!-- *************************** Upgrade packages only ******************************* -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <!-- Minimum and Maximum specify the range of versions we are supposed to update with this upgrade.
456de5f26ad346749963525a4f91883e6a51c5f3gryzor IncludeMaximum and IncludeMinimum specify whether the bound value is actually included in the range or not
456de5f26ad346749963525a4f91883e6a51c5f3gryzor (IncludeMaximum = yes meaning to find versions below or equal to the version specified in Maximum while
456de5f26ad346749963525a4f91883e6a51c5f3gryzor IncludeMaximum = no only finds those below the Maximum).
456de5f26ad346749963525a4f91883e6a51c5f3gryzor OnlyDetect tells the installer not to remove the previous product. This is useful as long as we
456de5f26ad346749963525a4f91883e6a51c5f3gryzor only change files in the package. -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <Upgrade Id="C4BAD770-BFE8-4D2C-A592-693028A7215B"> <!-- Upgrade of Sun xVM VirtualBox >= v1.6.0 -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <!-- Upgrade is flagged if current-install is newer than or equal to package - TODO: should make a dialog appear asking user to confirm downgrade. -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <!--- Setting "OnlyDetect" to "no" makes the installer uninstall an already newer installed version. -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <UpgradeVersion Property="NEWERVERSIONDETECTED" Minimum="$(var.Property_Version)" OnlyDetect="no" />
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <!-- Flag is set if the install will trigger an upgrade of an existing install -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <UpgradeVersion Property="PREVIOUSVERSIONSINSTALLED" Minimum="1.0.0.0" Maximum="$(var.Property_Version)" IncludeMaximum="yes" />
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <!-- Set a flag if we upgrade from versions <= 4.1.4 (later: 4.2.0) that might have removed
<UpgradeVersion Property="BUG_HOSTONLYIFSREMOVED" Minimum="1.0.0.0" Maximum="4.1.14.*" 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" />
<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" />
<!-- 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)">
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">
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\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\VBoxREM2.rel" />
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\VBoxGuestPropSvc.dll" />
Source="$(env.PATH_OUT)\bin\VBoxGuestControlSvc.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" />
<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 AND (NOT PREVIOUSVERSIONSINSTALLED OR BUG_HOSTONLYIFSREMOVED)]]></Custom>
<Custom Action="ca_CreateHostOnlyInterface" Before="InstallFinalize" ><![CDATA[&VBoxNetworkAdp=3 AND (NOT PREVIOUSVERSIONSINSTALLED OR BUG_HOSTONLYIFSREMOVED)]]></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>