VirtualBox

source: vbox/trunk/src/VBox/Installer/win/VirtualBox.wxs@ 106986

Last change on this file since 106986 was 106986, checked in by vboxsync, 3 weeks ago

Installer/win: ARM64 adjustments. jiraref:VBP-1442

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 33.1 KB
Line 
1<!--
2 VirtualBox Windows Installation Script (WiX)
3-->
4<!--
5 Copyright (C) 2014-2024 Oracle and/or its affiliates.
6
7 This file is part of VirtualBox base platform packages, as
8 available from https://www.virtualbox.org.
9
10 This program is free software; you can redistribute it and/or
11 modify it under the terms of the GNU General Public License
12 as published by the Free Software Foundation, in version 3 of the
13 License.
14
15 This program is distributed in the hope that it will be useful, but
16 WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 General Public License for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, see <https://www.gnu.org/licenses>.
22
23 SPDX-License-Identifier: GPL-3.0-only
24-->
25
26<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
27
28 <?include Defines.wxi ?>
29
30<?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
31 <!-- The merge module file names -->
32 <?define Property_VBoxMergeApp = "$(env.VBOX_WIN_INST_MERGE_APP)" ?>
33 <?if $(env.VBOX_WITH_32_ON_64_MAIN_API) = "yes" ?>
34 <?define Property_VBoxMergeCOM32On64 = "$(env.VBOX_WIN_INST_MERGE_COM32ON64)" ?>
35 <?endif?>
36 <?if $(env.VBOX_WITH_USB) = "yes" ?>
37 <?define Property_VBoxMergeUSB = "$(env.VBOX_WIN_INST_MERGE_USB)" ?>
38 <?endif?>
39 <?if $(env.VBOX_WITH_NETFLT) = "yes" And $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
40 <?define Property_VBoxMergeNetworkFlt = "$(env.VBOX_WIN_INST_MERGE_NETFLT)" ?>
41 <?endif?>
42 <?if $(env.VBOX_WITH_NETADP) = "yes" ?>
43 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
44 <?define Property_VBoxMergeNetworkAdp = "$(env.VBOX_WIN_INST_MERGE_NETADP)" ?>
45 <?endif?>
46 <?define Property_VBoxMergeNetworkAdp6 = "$(env.VBOX_WIN_INST_MERGE_NETADP6)" ?>
47 <?endif?>
48 <?if $(env.VBOX_WITH_NETFLT) = "yes" ?>
49 <?define Property_VBoxMergeNetworkLwf = "$(env.VBOX_WIN_INST_MERGE_NETLWF)" ?>
50 <?endif?>
51 <?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
52 <?define Property_VBoxMergePython = "$(env.VBOX_WIN_INST_MERGE_PYTHON)" ?>
53 <?endif?>
54<?endif?>
55
56 <Package UpgradeCode="C4BAD770-BFE8-4D2C-A592-693028A7215B" Name="$(env.VBOX_PRODUCT) $(env.VBOX_VERSION_STRING)" Language="!(loc.LANG)" Version="$(var.Property_Version)" Manufacturer="$(env.VBOX_VENDOR)" InstallerVersion="200"><SummaryInformation Keywords="Installer" Description="$(env.VBOX_PRODUCT) $(var.Property_VersionExt) installation package" Manufacturer="$(env.VBOX_VENDOR)" />
57
58 <?include CommonProperties.wxi ?>
59
60 <!-- Global properties -->
61 <Property Id="ARPPRODUCTICON" Value="IconVirtualBox" />
62 <Property Id="ARPURLINFOABOUT" Value="http://www.virtualbox.org" />
63 <Property Id="ARPURLUPDATEINFO" Value="http://www.virtualbox.org" />
64
65 <Property Id="NETWORKTYPE" Value="NDIS6" Secure="yes" />
66
67<?if $(env.VBOX_WITH_MSM_INSTALL) = "no" ?>
68 <!-- Force NDIS5 on pre-Vista -->
69 <SetProperty Id="NETWORKTYPE" After="LaunchConditions" Value="NDIS5" Condition="(VersionNT &lt; 600)" />
70<?endif?>
71
72 <!-- Whether or not registering of known desktop shortcut for the Quick Launch Bar should be created -->
73 <Property Id="VBOX_REGISTERFILEEXTENSIONS" Value="1" Secure="yes" />
74
75 <SetProperty Id="VBOX_REGISTERFILEEXTENSIONS" After="AppSearch" Sequence="both" Value="{}" Condition="VBOX_REGISTERFILEEXTENSIONS=&quot;0&quot;" />
76
77 <!-- Force overwriting all files and re-create shortcuts to guarantee a working environment -->
78 <Property Id="REINSTALLMODE" Value="amus" />
79
80 <?include PublicProperties.wxi ?>
81
82 <!-- Make sure installation will not start on anything other but the NT family -->
83<?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
84 <Launch Condition="VersionNT64" Message="!(loc.Only64Bit)" />
85<?else?>
86 <Launch Condition="NOT VersionNT64" Message="!(loc.Only32Bit)" />
87
88 <Launch Condition="NOT VersionNT=500 AND NOT Version9X AND NOT VersionNT64" Message="!(loc.WrongOS)" />
89
90<?endif?>
91
92 <Launch Condition="Privileged" Message="!(loc.NeedAdmin)" />
93
94<?if $(env.VBOX_WITH_CRT_PACKING) = "no" ?>
95 <!-- Check if we have the required MS CRT(s) installed when we're not shipping those. -->
96 <Launch Condition="Installed OR (VBOX_MSCRT_INSTALLED)" Message="!(loc.NeedMSCRT)" />
97<?endif?>
98 <!-- Check if the current INSTALLDIR is valid or not, or if VBox already is installed.
99 Thight might be handed-in via command line (MSI properties) or through a customized merge module. See @bugref{10616} -->
100 <Launch Condition="Installed OR (VBox_Target_Dir_Is_Valid=&quot;1&quot;)" Message="!(loc.InvalidTargetDir)" />
101
102 <!-- Detect old innotek installation -->
103 <!-- Force a manual uninstall of an already installed innotek VirtualBox version first -->
104 <Property Id="VBOXINNOTEK">
105 <RegistrySearch Id="RegSearchInnotekVersion" Root="HKLM" Key="SOFTWARE\Innotek\VirtualBox" Name="Version" Type="raw" Bitness="$(var.Property_Bitness)" />
106 </Property>
107 <Launch Condition="NOT VBOXINNOTEK" Message="!(loc.InnotekFound)" />
108
109
110 <!-- *************************** Upgrade packages only ******************************* -->
111 <!-- Minimum and Maximum specify the range of versions we are supposed to update with this upgrade.
112 IncludeMaximum and IncludeMinimum specify whether the bound value is actually included in the range or not
113 (IncludeMaximum = yes meaning to find versions below or equal to the version specified in Maximum while
114 IncludeMaximum = no only finds those below the Maximum).
115 OnlyDetect tells the installer not to remove the previous product. This is useful as long as we
116 only change files in the package -->
117
118 <Upgrade Id="C4BAD770-BFE8-4D2C-A592-693028A7215B"> <!-- Upgrade of Sun xVM VirtualBox >= v1.6.0 -->
119
120 <!-- Upgrade is flagged if current-install is newer than or equal to package - TODO: should make a dialog appear asking user to confirm downgrade -->
121 <!-- Setting "OnlyDetect" to "no" makes the installer uninstall an already newer installed version -->
122 <UpgradeVersion Property="NEWERVERSIONDETECTED" Minimum="$(var.Property_Version)" IncludeMinimum="no" OnlyDetect="no" />
123
124 <!-- Flag is set if the install will trigger an upgrade of an existing install -->
125 <UpgradeVersion Property="PREVIOUSVERSIONSINSTALLED" Minimum="1.0.0.0" Maximum="$(var.Property_Version)" IncludeMaximum="yes" />
126
127 </Upgrade>
128
129 <!-- The product's icon table -->
130 <Icon Id="IconVirtualBox" SourceFile="$(env.VBOX_WINDOWS_ICON_FILE)" />
131
132 <!-- The media/binary IDs -->
133 <!--
134 The effects of CompressionLevel options:
135 default/mszip, high: 32.54s
136 -rw-rw-rw- 1 bird 0 53 591 221 2016-09-25 03:56 common.cab
137 -rw-rw-rw- 1 bird 0 41 560 082 2016-09-25 03:56 VirtualBox-5.1.51-r110887_en_US.msi
138 high, high: 46.76s
139 -rw-rw-rw- 1 bird 0 53 591 221 2016-09-25 03:49 common.cab
140 -rw-rw-rw- 1 bird 0 34 056 210 2016-09-25 03:49 VirtualBox-5.1.51-r110887_en_US.msi
141 medium, medium: 29.95s
142 -rw-rw-rw- 1 bird 0 56 293 089 2016-09-25 03:53 common.cab
143 -rw-rw-rw- 1 bird 0 35 498 002 2016-09-25 03:54 VirtualBox-5.1.51-r110887_en_US.msi
144 low, low: 25.41s
145 -rw-rw-rw- 1 bird 0 57 616 155 2016-09-25 03:52 common.cab
146 -rw-rw-rw- 1 bird 0 37 181 458 2016-09-25 03:52 VirtualBox-5.1.51-r110887_en_US.msi
147 mszip/default, mszip/default: 16.13s
148 -rw-rw-rw- 1 bird 0 58 751 954 2016-09-25 03:49 common.cab
149 -rw-rw-rw- 1 bird 0 41 560 082 2016-09-25 03:50 VirtualBox-5.1.51-r110887_en_US.msi
150 none, none: 2.37s
151 -rw-rw-rw- 1 bird 0 92 470 301 2016-09-25 03:47 common.cab
152 -rw-rw-rw- 1 bird 0 135 874 578 2016-09-25 03:47 VirtualBox-5.1.51-r110887_en_US.msi
153
154 We set the level in the VBOX_CAB_COMPRESSION_LEVEL and VBOX_CAB_COMPRESSION_LEVEL_COMMON
155 environment variables so we don't waste time compressing and decompressing the intermediate
156 language MSIs and the common.cab that we're not going to use (x86).
157 -->
158 <Media Id="1" Cabinet="product.cab" EmbedCab="yes" CompressionLevel="$(env.VBOX_CAB_COMPRESSION_LEVEL)" />
159<?if $(env.VBOX_WITH_MSM_INSTALL) = "no" ?>
160 <?if $(env.VBOX_WITH_COMBINED_PACKAGE) = "yes" ?>
161 <Media Id="2" Cabinet="common.cab" EmbedCab="no" CompressionLevel="$(env.VBOX_CAB_COMPRESSION_LEVEL_COMMON)" />
162 <?endif?>
163<?endif?>
164 <Binary Id="VBoxInstallHelper" SourceFile="$(env.PATH_OUT)\bin\VBoxInstallHelper.dll" />
165
166 <!-- Custom actions -->
167
168 <!-- Figure out where a previous installation was, if any -->
169<?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
170 <CustomAction Id="ca_OriginalTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[ProgramFiles64Folder]\$(env.VBOX_VENDOR_SHORT)\VirtualBox" />
171
172 <Property Id="EXISTINGINSTALLDIR" Secure="yes">
173 <RegistrySearch Id="RegistryGetInstallPath" Root="HKLM" Key="$(var.Property_RegKey)" Name="InstallDir" Type="raw" Bitness="$(var.Property_Bitness)" />
174 </Property>
175 <CustomAction Id="ca_DefaultTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[EXISTINGINSTALLDIR]" />
176<?else?>
177 <CustomAction Id="ca_OriginalTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[ProgramFilesFolder]\$(env.VBOX_VENDOR_SHORT)\VirtualBox" />
178
179 <Property Id="EXISTINGINSTALLDIR" Secure="yes">
180 <RegistrySearch Id="RegistryGetInstallPath" Root="HKLM" Key="$(var.Property_RegKey)" Name="InstallDir" Type="raw" Bitness="$(var.Property_Bitness)" />
181 </Property>
182 <CustomAction Id="ca_DefaultTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[EXISTINGINSTALLDIR]" />
183<?endif?>
184 <CustomAction Id="ca_UninstallTAPInstances" DllEntry="UninstallTAPInstances" Execute="deferred" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" />
185
186 <CustomAction Id="ca_UninstallVBoxDrv" DllEntry="UninstallVBoxDrv" Execute="deferred" Return="ignore" Impersonate="no" BinaryRef="VBoxInstallHelper" />
187
188 <Property Id="VBOXDEPENDENCY" Secure="yes">
189 <DirectorySearch Id="VBoxInstallDir" Path="[EXISTINGINSTALLDIR]">
190 <FileSearch Name="dependency.dep" />
191 </DirectorySearch>
192 </Property>
193
194<?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
195 <Property Id="EXISTING_PYTHON_API_FOLDER" Secure="yes">
196 <RegistrySearch Id="RegistryGetPythonApiInstallPath" Root="HKLM" Key="$(var.Property_RegKey)" Name="PythonApiInstallDir" Type="raw" Bitness="$(var.Property_Bitness)" />
197 </Property>
198<?endif?>
199
200 <!--
201 install upgrade uninstall
202 VBOXDEPENDENCY 0 1/0 1/0
203 UPGRADINGPRODUCTCODE 0 1 0
204 final 0 1 0
205 not final 1 0 1
206 -->
207
208 <Launch Condition="NOT (VBOXDEPENDENCY AND UPGRADINGPRODUCTCODE)"
209 Message="It was detected an application which has been using currently installed VirtualBox version.
210 You must remove this application before continuing installation.
211 See the file dependency.dep in the VirtualBox installation directory for details. " />
212
213 <!-- Detect old Sun installation -->
214 <!-- Force a manual uninstall of an already installed Sun VirtualBox version first -->
215 <!--<Property Id="VBOXSUN">
216 <RegistrySearch Id="RegSearchSunVersion" Root="HKLM" Key="SOFTWARE\Sun\VirtualBox" Name="Version" Type="raw" Bitness="$(var.Property_Bitness)"/>
217 </Property>
218 <Condition Message="!(loc.SunFound)">
219 NOT VBOXSUN
220 </Condition>-->
221
222 <!-- Note: Only if we include FE/Qt, we offer to start VirtualBox at the end of a successful installation. -->
223<?if $(env.VBOX_WITH_QTGUI) = "yes" ?>
224 <!-- Note: Make sure to set the CWD (via 'Directory' attribute) to not run off a possibly temporary directory or some such (see @bugref{10203}). -->
225 <CustomAction Id="ca_StartVBox" Directory="INSTALLDIR" ExeCommand="[INSTALLDIR]VirtualBox.exe" Return="asyncNoWait" Impersonate="yes" />
226<?endif?>
227
228 <CustomAction Id="ca_CheckSerial" DllEntry="CheckSerial" Impersonate="no" BinaryRef="VBoxInstallHelper" />
229
230 <CustomAction Id="ca_InstallBranding" DllEntry="InstallBranding" Execute="deferred" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" />
231 <CustomAction Id="ca_InstallBrandingArgs" Property="ca_InstallBranding" Value="[INSTALLDIR]" Execute="immediate" />
232
233 <CustomAction Id="ca_UninstallBranding" DllEntry="UninstallBranding" Execute="deferred" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" />
234 <CustomAction Id="ca_UninstallBrandingArgs" Property="ca_UninstallBranding" Value="[INSTALLDIR]" Execute="immediate" />
235
236 <?include VBoxMergeAppCA.wxi ?>
237<?if $(env.VBOX_WITH_MSM_INSTALL) = "no" ?>
238 <?if $(env.VBOX_WITH_32_ON_64_MAIN_API) = "yes" ?>
239 <?include VBoxMergeCOM32On64CA.wxi ?>
240 <?endif?>
241 <?if $(env.VBOX_WITH_NETFLT) = "yes" ?>
242 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
243 <?include VBoxMergeNetFltCA.wxi ?>
244 <?endif?>
245 <?include VBoxMergeNetLwfCA.wxi ?>
246 <?endif?>
247 <?if $(env.VBOX_WITH_NETADP) = "yes" ?>
248 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
249 <?include VBoxMergeNetAdpCA.wxi ?>
250 <?endif?>
251 <?include VBoxMergeNetAdp6CA.wxi ?>
252 <?endif?>
253 <?include VBoxMergeUSBCA.wxi ?>
254 <?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
255 <?include VBoxMergePythonCA.wxi ?>
256 <?endif?>
257<?endif?>
258
259 <!-- TARGETDIR -->
260
261 <!-- Note: Feature IDs *must not* be renamed to use any prefixes or such,
262 otherwise this will break manual selection using the ADDLOCAL= syntax
263 when using the command line / scripts (see VBox manual). -->
264 <Feature Id="VBoxApplication" Title="VirtualBox Application" Level="1" Description="!(loc.VB_App)" ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand" AllowAdvertise="no" AllowAbsent="no">
265
266<?if $(env.VBOX_WITH_QTGUI) = "yes" ?>
267 <!-- Components which are handled only by this installer itself -->
268 <ComponentRef Id="cp_StartMenuVBox" />
269 <ComponentRef Id="cp_DesktopShortcut" />
270 <ComponentRef Id="cp_QuickLaunchVBox" />
271<?endif?>
272 <!-- Components for removing empty folders after cleaning traces -->
273 <ComponentRef Id="cp_INSTALLDIR" />
274 <ComponentRef Id="cp_SDK" />
275
276 <!-- Components handled either by the installer itself or
277 the merge module -->
278<?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
279 <MergeRef Id="msm_VBoxApp" />
280 <?if $(env.VBOX_WITH_32_ON_64_MAIN_API) = "yes" ?>
281 <MergeRef Id="msm_VBoxCOM32On64" />
282 <?endif?>
283<?else?>
284 <!-- Make sure to reference the permissions component, which takes care of setting
285 the required ACLs for our files / folders. -->
286 <ComponentRef Id="cp_Permissions" />
287 <?if $(env.VBOX_WITH_QTGUI) = "yes" ?>
288 <ComponentRef Id="cp_RegisterExtensions" />
289 <?endif?>
290 <?if $(env.VBOX_WITH_DOCS_PACKING) = "yes" ?>
291 <ComponentRef Id="cp_Docs" />
292 <?endif?>
293 <?if $(env.VBOX_WITH_QTGUI) = "yes" ?>
294 <ComponentRef Id="cp_NLS" />
295 <?endif?>
296 <?if $(env.VBOX_WITH_32_ON_64_MAIN_API) = "yes" ?>
297 <ComponentRef Id="cp_MainCOM_x86" />
298 <?endif?>
299 <ComponentRef Id="cp_MainCOM" />
300 <?if $(env.VBOX_WITH_SDS) = "yes" ?>
301 <ComponentRef Id="cp_VBoxSDS" />
302 <?endif?>
303 <?if $(env.VBOX_WITH_MIDL_PROXY_STUB) = "yes" ?>
304 <ComponentRef Id="cp_ProxyStub" />
305 <?if $(env.VBOX_WITH_32_ON_64_MAIN_API) = "yes" ?>
306 <ComponentRef Id="cp_ProxyStubLegacy" />
307 <?endif?>
308 <?endif?>
309 <?if $(env.VBOX_WITH_DTRACE) = "yes" ?>
310 <ComponentRef Id="cp_dir_DTrace_lib_arch" />
311 <ComponentRef Id="cp_dir_DTrace_testcase_arch" />
312 <?endif?>
313 <?if $(env.VBOX_WITH_UNATTENDED_TEMPLATES) = "yes" ?>
314 <ComponentRef Id="cp_UnattendedTemplates" />
315 <?endif?>
316 <ComponentRef Id="cp_MainBinaries" />
317 <?if $(env.VBOX_WITH_QTGUI) = "yes" and $(env.VBOX_WITH_ORACLE_QT) = "yes" ?>
318 <ComponentRef Id="cp_QtPlatforms" />
319 <ComponentRef Id="cp_QtSqldrivers" />
320 <ComponentRef Id="cp_QtStyles" />
321 <?endif?>
322 <?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
323 <ComponentRef Id="cp_VBoxPyInst" />
324 <ComponentRef Id="cp_VBoxPySetup" />
325 <ComponentRef Id="cp_VBoxPyMod" />
326 <ComponentRef Id="cp_VBoxPyDel" />
327 <?endif?>
328 <?if $(env.VBOX_WITH_VBOXSDL) = "yes" ?>
329 <ComponentRef Id="cp_VBoxSDLBinaries" />
330 <?endif?>
331 <?if $(env.VBOX_WITH_WEBSERVICES) = "yes" ?>
332 <ComponentRef Id="cp_VBoxWebService" />
333 <?endif?>
334 <ComponentRef Id="cp_VBoxCAPI" />
335 <?if $(env.VBOX_SIGNING_MODE) != none ?>
336 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
337 <ComponentRef Id="cp_VBoxSupCat_PreW10" />
338 <?endif?>
339 <ComponentRef Id="cp_VBoxSupCat_W10" />
340 <?endif?>
341 <ComponentRef Id="cp_VBoxSup" />
342<?endif?>
343
344<?if $(env.VBOX_WITH_USB) = "yes" ?>
345 <Feature Id="VBoxUSB" Title="VirtualBox USB Support" Level="1" Description="!(loc.VB_USBDriver)" ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand" AllowAdvertise="no">
346 <?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
347 <MergeRef Id="msm_VBoxUSB" />
348 <?else?>
349 <?if $(env.VBOX_SIGNING_MODE) != none ?>
350 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
351 <ComponentRef Id="cp_USBFilterDriverCat_PreW10" />
352 <?endif?>
353 <ComponentRef Id="cp_USBFilterDriverCat_W10" />
354 <?endif?>
355 <ComponentRef Id="cp_USBFilterDriver" />
356 <?if $(env.VBOX_SIGNING_MODE) != none ?>
357 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
358 <ComponentRef Id="cp_USBDeviceDriverCat_PreW10" />
359 <?endif?>
360 <ComponentRef Id="cp_USBDeviceDriverCat_W10" />
361 <?endif?>
362 <ComponentRef Id="cp_USBDeviceDriver" />
363 <?endif?>
364 </Feature>
365<?endif?>
366
367<?if $(env.VBOX_WITH_NETFLT) = "yes" ?>
368 <Feature Id="VBoxNetwork" Title="VirtualBox Networking" Level="1" Description="!(loc.VB_Network)" ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand" AllowAdvertise="no">
369 <Feature Id="VBoxNetworkFlt" Title="VirtualBox Bridged Networking" Level="1" Description="!(loc.VB_NetFltDriver)" ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand" AllowAdvertise="no">
370 <?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
371 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
372 <MergeRef Id="msm_VBoxNetworkFlt" />
373 <?endif?>
374 <MergeRef Id="msm_VBoxNetworkLwf" />
375 <?else?>
376 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
377 <ComponentRef Id="cp_NetFltDriver" />
378 <?endif?>
379 <?if $(env.VBOX_SIGNING_MODE) != none ?>
380 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
381 <ComponentRef Id="cp_NetLwfDriverCat_PreW10" />
382 <?endif?>
383 <ComponentRef Id="cp_NetLwfDriverCat_W10" />
384 <?endif?>
385 <ComponentRef Id="cp_NetLwfDriver" />
386 <?endif?>
387 </Feature>
388 <Feature Id="VBoxNetworkAdp" Title="VirtualBox Host-Only Networking" Level="1" Description="!(loc.VB_NetAdpDriver)" ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand" AllowAdvertise="no">
389 <?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
390 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
391 <MergeRef Id="msm_VBoxNetworkAdp" />
392 <?endif?>
393 <MergeRef Id="msm_VBoxNetworkAdp6" />
394 <?else?>
395 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
396 <ComponentRef Id="cp_NetAdpDriver" />
397 <?endif?>
398 <?if $(env.VBOX_SIGNING_MODE) != none ?>
399 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
400 <ComponentRef Id="cp_NetAdp6DriverCat_PreW10" />
401 <?endif?>
402 <ComponentRef Id="cp_NetAdp6DriverCat_W10" />
403 <?endif?>
404 <ComponentRef Id="cp_NetAdp6Driver" />
405 <?endif?>
406 </Feature>
407
408 </Feature>
409<?endif?>
410
411<?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
412 <Feature Id="VBoxPython" Title="VirtualBox Python Support" Level="1" Description="!(loc.VB_Python)" ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand" AllowAdvertise="no">
413 <?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
414 <MergeRef Id="msm_VBoxPython" />
415 <?else?>
416 <ComponentRef Id="cp_VBoxPythonBinding" />
417 <?endif?>
418 </Feature>
419<?endif?>
420 </Feature>
421
422 <!-- Include user interface definition -->
423 <?include UserInterface.wxi ?>
424
425 <InstallExecuteSequence>
426
427 <!--
428 To debug the action sequences, do: "msiexec /i <VBox.msi> /lar <Logfile>"
429
430 InstallUISequence (client side) is:
431 AppSearch
432 LaunchConditions
433 ValidateProductID
434 CostInitialize
435 FileCost
436 CostFinalize
437 ExecuteAction -> will pass control over to "InstallExecuteSequence"
438
439 The first six actions above will be repeated but skipped on the server
440 side if already run on the client side.
441
442 InstallExecuteSequence (server side) is:
443 <First six action from InstallUISequence>
444 .
445 InstallInitialize
446 .
447 InstallFinalize
448
449 The actions between InstallInitialize and InstallFinalize will be gone through twice:
450 - The first time the installer creates an installation script containing all actions in the right
451 sequence which need to get executed in a batch later. At this point the launch conditions for
452 custom actions must be met already!
453 - The second time the generated installation script will be run as-is.
454
455 Also, the InstallUISequence and InstallExecuteSequence tables run in different sessions which
456 need public properties (that is, UPPERCASE properties).
457 -->
458
459 <!-- AppSearch must be done before "RemoveExistingProducts" and before "FindRelatedProducts" -->
460 <AppSearch Sequence="1"></AppSearch>
461 <LaunchConditions After="AppSearch" />
462
463 <!-- First install the new version and then remove the old version. This is more efficient -->
464 <RemoveExistingProducts After="InstallValidate" Condition="PREVIOUSVERSIONSINSTALLED OR NEWERVERSIONDETECTED" />
465
466 <Custom Action="ca_OriginalTargetDir" After="FileCost" Condition="(NOT INSTALLDIR)" />
467 <Custom Action="ca_DefaultTargetDir" Before="FileCost" Condition="NOT INSTALLDIR AND EXISTINGINSTALLDIR" />
468
469 <!-- Check + unininstall old TAP instances - we don't need them anymore -->
470 <Custom Action="ca_UninstallTAPInstances" Before="InstallFiles" Condition="1" />
471
472 <!-- Check + uninstall old VBoxDrv service - it was renamed to VBoxSup. -->
473 <Custom Action="ca_UninstallVBoxDrv" Before="InstallFiles" Condition="1" />
474
475 <Custom Action="ca_InstallBrandingArgs" Before="ca_InstallBranding" Condition="NOT REMOVE" />
476 <Custom Action="ca_InstallBranding" Before="InstallFinalize" Condition="NOT REMOVE" />
477
478 <!-- Uninstall branding on complete uninstall, not on update -->
479 <Custom Action="ca_UninstallBrandingArgs" Before="ca_UninstallBranding" Condition="(NOT UPGRADINGPRODUCTCODE) AND (REMOVE=&quot;ALL&quot;)" />
480 <Custom Action="ca_UninstallBranding" Before="InstallFinalize" Condition="(NOT UPGRADINGPRODUCTCODE) AND (REMOVE=&quot;ALL&quot;)" />
481
482<?if $(env.VBOX_WITH_MSM_INSTALL) = "no" ?>
483 <?include VBoxMergeAppSeq.wxi ?>
484 <?if $(env.VBOX_WITH_32_ON_64_MAIN_API) = "yes" ?>
485 <?include VBoxMergeCOM32On64Seq.wxi ?>
486 <?endif?>
487 <?if $(env.VBOX_WITH_NETFLT) = "yes" ?>
488 <?if $(env.KBUILD_TARGET_ARCH) = amd64 ?> <!-- @todo bird: Remove this and use Adp6, we don't support XP any more. -->
489 <?include VBoxMergeNetFltSeq.wxi ?>
490 <?endif?>
491 <?include VBoxMergeNetLwfSeq.wxi ?>
492 <?endif?>
493 <?if $(env.VBOX_WITH_NETADP) = "yes" ?>
494 <?if $(env.KBUILD_TARGET_ARCH) = amd64 ?> <!-- @todo bird: Remove this and use Adp6, we don't support XP any more. -->
495 <?include VBoxMergeNetAdpSeq.wxi ?>
496 <?endif?>
497 <?include VBoxMergeNetAdp6Seq.wxi ?>
498 <?endif?>
499 <?include VBoxMergeUSBSeq.wxi ?>
500 <?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
501 <?include VBoxMergePythonSeq.wxi ?>
502 <?endif?>
503<?endif?>
504
505 </InstallExecuteSequence>
506
507<?if $(env.VBOX_WITH_QTGUI) = "yes" ?>
508 <!-- Set up special directory IDs for referencing to the start menu
509 or the Quick Launch bar.
510 See: http://msdn.microsoft.com/en-us/library/aa368276.aspx
511 http://wix.mindcapers.com/wiki/Shortcuts_in_WiX -->
512 <StandardDirectory Id="ProgramMenuFolder">
513 <Directory Id="dir_StartMenuVBox" Name="$(env.VBOX_PRODUCT)" />
514 </StandardDirectory>
515
516 <StandardDirectory Id="DesktopFolder" />
517
518 <StandardDirectory Id="AppDataFolder">
519 <Directory Id="dir_AppDataMicrosoft" Name="Microsoft">
520 <Directory Id="dir_AppDataMSIE" Name="Internet Explorer">
521 <Directory Id="dir_QuicklaunchFolder" Name="Quick Launch" />
522 </Directory>
523 </Directory>
524 </StandardDirectory>
525<?endif?>
526
527 <Directory Id="$(var.Property_ProgramFiles)" Name="PFiles">
528 <Directory Id="VENDOR" Name="$(env.VBOX_VENDOR_SHORT)">
529 <Directory Id="INSTALLDIR" Name="VirtualBox">
530 <!-- Components for removing empty folder after cleaning traces -->
531 <Component Id="cp_INSTALLDIR" Guid="374723AF-5990-4552-A1B0-82C72EFA360F">
532 <RemoveFolder Id="INSTALLDIR" On="uninstall" />
533 </Component>
534<?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
535 <Merge Id="msm_VBoxApp" Language="0" SourceFile="$(var.Property_VBoxMergeApp)" DiskId="1">
536 <ConfigurationData Name="argRegisterExtensions" Value="[VBOX_REGISTERFILEEXTENSIONS]" />
537 </Merge>
538 <?if $(env.VBOX_WITH_32_ON_64_MAIN_API) = "yes" ?>
539 <Merge Id="msm_VBoxCOM32On64" Language="0" SourceFile="$(var.Property_VBoxMergeCOM32On64)" DiskId="1" />
540 <?endif?>
541<?else?>
542 <Directory Id="msm_VBoxApplicationFolder" FileSource=".">
543 <?include VBoxMergeApp.wxi ?>
544 <?if $(env.VBOX_WITH_32_ON_64_MAIN_API) = "yes" ?>
545 <?include VBoxMergeCOM32On64.wxi ?>
546 <?endif?>
547 </Directory>
548<?endif?>
549 <Directory Id="dir_Drivers" Name="drivers">
550<?if $(env.VBOX_WITH_USB) = "yes" ?>
551 <Directory Id="dir_USB" Name="USB">
552 <?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
553 <Merge Id="msm_VBoxUSB" Language="0" SourceFile="$(var.Property_VBoxMergeUSB)" DiskId="1" />
554 <?else?>
555 <Directory Id="msm_VBoxUSBFolder" FileSource=".">
556 <?include VBoxMergeUSB.wxi ?>
557 </Directory>
558 <?endif?>
559 </Directory>
560<?endif?>
561 <Directory Id="dir_Network" Name="network">
562<?if $(env.VBOX_WITH_NETFLT) = "yes" And $(env.KBUILD_TARGET_ARCH) = "amd64" ?> <!-- @todo bird: Remove this and use Adp6, we don't support XP any more. -->
563 <Directory Id="dir_NetFlt" Name="netflt">
564 <?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
565 <Merge Id="msm_VBoxNetworkFlt" Language="0" SourceFile="$(var.Property_VBoxMergeNetworkFlt)" DiskId="1">
566 <ConfigurationData Name="passedNetworkType" Value="[NETWORKTYPE]" />
567 </Merge>
568 <?else?>
569 <Directory Id="msm_VBoxNetworkFltFolder" FileSource=".">
570 <?include VBoxMergeNetFlt.wxi ?>
571 </Directory>
572 <?endif?>
573 </Directory>
574<?endif?>
575<?if $(env.VBOX_WITH_NETADP) = "yes" and $(env.KBUILD_TARGET_ARCH) = "amd64" ?> <!-- @todo bird: Remove this and use Adp6, we don't support XP any more. -->
576 <Directory Id="dir_NetAdp" Name="netadp">
577 <?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
578 <Merge Id="msm_VBoxNetworkAdp" Language="!(loc.LANG)" SourceFile="$(var.Property_VBoxMergeNetworkAdp)" DiskId="1">
579 <ConfigurationData Name="passedNetworkType" Value="[NETWORKTYPE]" />
580 </Merge>
581 <?else?>
582 <Directory Id="msm_VBoxNetworkAdpFolder" FileSource=".">
583 <?include VBoxMergeNetAdp.wxi ?>
584 </Directory>
585 <?endif?>
586 </Directory>
587<?endif?>
588
589<?if $(env.VBOX_WITH_NETFLT) = "yes" ?>
590 <Directory Id="dir_NetLwf" Name="netlwf">
591 <?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
592 <Merge Id="msm_VBoxNetworkLwf" Language="!(loc.LANG)" SourceFile="$(var.Property_VBoxMergeNetworkLwf)" DiskId="1">
593 <ConfigurationData Name="passedNetworkType" Value="[NETWORKTYPE]" />
594 </Merge>
595 <?else?>
596 <Directory Id="msm_VBoxNetworkLwfFolder" FileSource=".">
597 <?include VBoxMergeNetLwf.wxi ?>
598 </Directory>
599 <?endif?>
600 </Directory>
601<?endif?>
602
603<?if $(env.VBOX_WITH_NETADP) = "yes" ?>
604 <Directory Id="dir_NetAdp6" Name="netadp6">
605 <?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
606 <Merge Id="msm_VBoxNetworkAdp6" Language="!(loc.LANG)" SourceFile="$(var.Property_VBoxMergeNetworkAdp6)" DiskId="1">
607 <ConfigurationData Name="passedNetworkType" Value="[NETWORKTYPE]" />
608 </Merge>
609 <?else?>
610 <Directory Id="msm_VBoxNetworkAdp6Folder" FileSource=".">
611 <?include VBoxMergeNetAdp6.wxi ?>
612 </Directory>
613 <?endif?>
614 </Directory>
615<?endif?>
616 </Directory>
617 </Directory>
618 <Directory Id="dir_SDK" Name="sdk">
619<?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
620 <Directory Id="dir_SDKInstaller" Name="installer"> <!-- Note: For < VBox 7.1 this folder was called 'install'. -->
621 <Directory Id="dir_SDKInstallerPython" Name="python">
622 <?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
623 <Merge Id="msm_VBoxPython" Language="!(loc.LANG)" SourceFile="$(var.Property_VBoxMergePython)" DiskId="1" />
624 <?else?>
625 <Directory Id="msm_VBoxPythonFolder" FileSource=".">
626 <?include VBoxMergePython.wxi ?>
627 </Directory>
628 <?endif?>
629 </Directory>
630 </Directory>
631<?endif?>
632 <!-- Component for removing empty folder after cleaning traces -->
633 <Component Id="cp_SDK" Guid="ACA59290-B2D6-4E96-B164-C45F70A90219">
634 <RemoveFolder Id="dir_SDK" On="uninstall" />
635 </Component>
636 </Directory>
637
638<?if $(env.VBOX_WITH_QTGUI) = "yes" ?>
639 <!-- Start menu entries. -->
640 <Component Id="cp_StartMenuVBox" Guid="C2DC321A-CE63-40EE-8A98-724DF8BD12FB" Condition="VBOX_INSTALLSTARTMENUENTRIES" Bitness="$(var.Property_Bitness)">
641
642 <Shortcut Id="sc_StartMenuVBox" Directory="dir_StartMenuVBox" Name="$(env.VBOX_PRODUCT)" Description="$(env.VBOX_PRODUCT)" Target="[INSTALLDIR]VirtualBox.exe" WorkingDirectory="INSTALLDIR" />
643 <RegistryValue Root="HKCU" Key="$(var.Property_RegKeyInstall)" Type="string" Value="installed" KeyPath="yes" />
644 <?include $(env.PATH_TARGET)\Shortcuts_StartMenu.wxi ?>
645 </Component>
646
647 <!-- Desktop shortcut. -->
648 <Component Id="cp_DesktopShortcut" Guid="668F8A1A-F5CE-48B3-BB1A-3042EE27B279" Condition="VBOX_INSTALLDESKTOPSHORTCUT" Bitness="$(var.Property_Bitness)">
649
650 <Shortcut Id="sc_DesktopVBox" Directory="DesktopFolder" Name="$(env.VBOX_PRODUCT)" Description="$(env.VBOX_PRODUCT)" Target="[INSTALLDIR]VirtualBox.exe" WorkingDirectory="INSTALLDIR" />
651 <RegistryValue Root="HKCU" Key="$(var.Property_RegKeyInstall)" Type="string" Value="installed" KeyPath="yes" />
652 </Component>
653
654 <!-- QuickLaunch shortcut. -->
655 <Component Id="cp_QuickLaunchVBox" Guid="CC19E026-938A-41CB-8E77-3F33296244B6" Condition="VBOX_INSTALLQUICKLAUNCHSHORTCUT" Bitness="$(var.Property_Bitness)">
656 <CreateFolder />
657
658 <Shortcut Id="sc_QuickLaunchVBox" Directory="dir_QuicklaunchFolder" Name="$(env.VBOX_PRODUCT)" Description="$(env.VBOX_PRODUCT)" Target="[INSTALLDIR]VirtualBox.exe" WorkingDirectory="INSTALLDIR" />
659 <RegistryValue Root="HKCU" Key="$(var.Property_RegKeyInstall)" Type="string" Value="installed" KeyPath="yes" />
660 </Component>
661<?endif?>
662 </Directory>
663 </Directory>
664 </Directory>
665 </Package>
666</Wix>
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette