VirtualBox

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

Last change on this file was 107015, checked in by vboxsync, 2 weeks ago

Installer/win: Specify the architecture/platform when invoking 'wix build'. The minimum MSI installer version for windows/arm64 is 5.0 (500). Some other arm64 adjustments. jiraref:VBP-1442

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 32.7 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)"
57 Language="!(loc.LANG)" Version="$(var.Property_Version)" Manufacturer="$(env.VBOX_VENDOR)"
58 InstallerVersion="$(var.VBoxProperty_MsiInstallerVersion)">
59
60 <SummaryInformation Keywords="Installer"
61 Description="$(env.VBOX_PRODUCT) $(var.Property_VersionExt) installation package" Manufacturer="$(env.VBOX_VENDOR)" />
62
63 <?include CommonProperties.wxi ?>
64
65 <!-- @todo indentation is wrong here and it goes on to about line 525. -->
66 <!-- Global properties -->
67 <Property Id="ARPPRODUCTICON" Value="IconVirtualBox" />
68 <Property Id="ARPURLINFOABOUT" Value="http://www.virtualbox.org" />
69 <Property Id="ARPURLUPDATEINFO" Value="http://www.virtualbox.org" />
70
71 <Property Id="NETWORKTYPE" Value="NDIS6" Secure="yes" />
72
73<?if $(env.VBOX_WITH_MSM_INSTALL) = "no" ?>
74 <!-- Force NDIS5 on pre-Vista -->
75 <SetProperty Id="NETWORKTYPE" After="LaunchConditions" Value="NDIS5" Condition="(VersionNT &lt; 600)" />
76<?endif?>
77
78 <!-- Whether or not registering of known desktop shortcut for the Quick Launch Bar should be created -->
79 <Property Id="VBOX_REGISTERFILEEXTENSIONS" Value="1" Secure="yes" />
80
81 <SetProperty Id="VBOX_REGISTERFILEEXTENSIONS" After="AppSearch" Sequence="both" Value="{}" Condition="VBOX_REGISTERFILEEXTENSIONS=&quot;0&quot;" />
82
83 <!-- Force overwriting all files and re-create shortcuts to guarantee a working environment -->
84 <Property Id="REINSTALLMODE" Value="amus" />
85
86 <?include PublicProperties.wxi ?>
87
88 <!-- Make doubly sure we're on 64-bit windows NT.
89 Note! This is normally checked by -->
90 <Launch Condition="VersionNT64" Message="!(loc.Only64Bit)" />
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 use the -defaultcompressionlevel command line option to control this.
155 -->
156 <Media Id="1" Cabinet="product.cab" EmbedCab="yes" />
157<?if $(env.VBOX_WITH_MSM_INSTALL) = "no" ?>
158 <?if $(env.VBOX_WITH_COMBINED_PACKAGE) = "yes" ?>
159 <Media Id="2" Cabinet="common.cab" EmbedCab="no" />
160 <?endif?>
161<?endif?>
162 <Binary Id="VBoxInstallHelper" SourceFile="$(env.PATH_OUT)\bin\VBoxInstallHelper.dll" />
163
164 <!-- Custom actions -->
165
166 <!-- Figure out where a previous installation was, if any -->
167<?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
168 <CustomAction Id="ca_OriginalTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[ProgramFiles64Folder]\$(env.VBOX_VENDOR_SHORT)\VirtualBox" />
169
170 <Property Id="EXISTINGINSTALLDIR" Secure="yes">
171 <RegistrySearch Id="RegistryGetInstallPath" Root="HKLM" Key="$(var.Property_RegKey)" Name="InstallDir" Type="raw" Bitness="$(var.Property_Bitness)" />
172 </Property>
173 <CustomAction Id="ca_DefaultTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[EXISTINGINSTALLDIR]" />
174<?else?>
175 <CustomAction Id="ca_OriginalTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[ProgramFilesFolder]\$(env.VBOX_VENDOR_SHORT)\VirtualBox" />
176
177 <Property Id="EXISTINGINSTALLDIR" Secure="yes">
178 <RegistrySearch Id="RegistryGetInstallPath" Root="HKLM" Key="$(var.Property_RegKey)" Name="InstallDir" Type="raw" Bitness="$(var.Property_Bitness)" />
179 </Property>
180 <CustomAction Id="ca_DefaultTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[EXISTINGINSTALLDIR]" />
181<?endif?>
182 <CustomAction Id="ca_UninstallTAPInstances" DllEntry="UninstallTAPInstances" Execute="deferred" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" />
183
184 <CustomAction Id="ca_UninstallVBoxDrv" DllEntry="UninstallVBoxDrv" Execute="deferred" Return="ignore" Impersonate="no" BinaryRef="VBoxInstallHelper" />
185
186 <Property Id="VBOXDEPENDENCY" Secure="yes">
187 <DirectorySearch Id="VBoxInstallDir" Path="[EXISTINGINSTALLDIR]">
188 <FileSearch Name="dependency.dep" />
189 </DirectorySearch>
190 </Property>
191
192<?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
193 <Property Id="EXISTING_PYTHON_API_FOLDER" Secure="yes">
194 <RegistrySearch Id="RegistryGetPythonApiInstallPath" Root="HKLM" Key="$(var.Property_RegKey)" Name="PythonApiInstallDir" Type="raw" Bitness="$(var.Property_Bitness)" />
195 </Property>
196<?endif?>
197
198 <!--
199 install upgrade uninstall
200 VBOXDEPENDENCY 0 1/0 1/0
201 UPGRADINGPRODUCTCODE 0 1 0
202 final 0 1 0
203 not final 1 0 1
204 -->
205
206 <Launch Condition="NOT (VBOXDEPENDENCY AND UPGRADINGPRODUCTCODE)"
207 Message="It was detected an application which has been using currently installed VirtualBox version.
208 You must remove this application before continuing installation.
209 See the file dependency.dep in the VirtualBox installation directory for details. " />
210
211 <!-- Detect old Sun installation -->
212 <!-- Force a manual uninstall of an already installed Sun VirtualBox version first -->
213 <!--<Property Id="VBOXSUN">
214 <RegistrySearch Id="RegSearchSunVersion" Root="HKLM" Key="SOFTWARE\Sun\VirtualBox" Name="Version" Type="raw" Bitness="$(var.Property_Bitness)"/>
215 </Property>
216 <Condition Message="!(loc.SunFound)">
217 NOT VBOXSUN
218 </Condition>-->
219
220 <!-- Note: Only if we include FE/Qt, we offer to start VirtualBox at the end of a successful installation. -->
221<?if $(env.VBOX_WITH_QTGUI) = "yes" ?>
222 <!-- Note: Make sure to set the CWD (via 'Directory' attribute) to not run off a possibly temporary directory or some such (see @bugref{10203}). -->
223 <CustomAction Id="ca_StartVBox" Directory="INSTALLDIR" ExeCommand="[INSTALLDIR]VirtualBox.exe" Return="asyncNoWait" Impersonate="yes" />
224<?endif?>
225
226 <CustomAction Id="ca_CheckSerial" DllEntry="CheckSerial" Impersonate="no" BinaryRef="VBoxInstallHelper" />
227
228 <CustomAction Id="ca_InstallBranding" DllEntry="InstallBranding" Execute="deferred" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" />
229 <CustomAction Id="ca_InstallBrandingArgs" Property="ca_InstallBranding" Value="[INSTALLDIR]" Execute="immediate" />
230
231 <CustomAction Id="ca_UninstallBranding" DllEntry="UninstallBranding" Execute="deferred" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" />
232 <CustomAction Id="ca_UninstallBrandingArgs" Property="ca_UninstallBranding" Value="[INSTALLDIR]" Execute="immediate" />
233
234 <?include VBoxMergeAppCA.wxi ?>
235<?if $(env.VBOX_WITH_MSM_INSTALL) = "no" ?>
236 <?if $(env.VBOX_WITH_32_ON_64_MAIN_API) = "yes" ?>
237 <?include VBoxMergeCOM32On64CA.wxi ?>
238 <?endif?>
239 <?if $(env.VBOX_WITH_NETFLT) = "yes" ?>
240 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
241 <?include VBoxMergeNetFltCA.wxi ?>
242 <?endif?>
243 <?include VBoxMergeNetLwfCA.wxi ?>
244 <?endif?>
245 <?if $(env.VBOX_WITH_NETADP) = "yes" ?>
246 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
247 <?include VBoxMergeNetAdpCA.wxi ?>
248 <?endif?>
249 <?include VBoxMergeNetAdp6CA.wxi ?>
250 <?endif?>
251 <?include VBoxMergeUSBCA.wxi ?>
252 <?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
253 <?include VBoxMergePythonCA.wxi ?>
254 <?endif?>
255<?endif?>
256
257 <!-- TARGETDIR -->
258
259 <!-- Note: Feature IDs *must not* be renamed to use any prefixes or such,
260 otherwise this will break manual selection using the ADDLOCAL= syntax
261 when using the command line / scripts (see VBox manual). -->
262 <Feature Id="VBoxApplication" Title="VirtualBox Application" Level="1" Description="!(loc.VB_App)" ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand" AllowAdvertise="no" AllowAbsent="no">
263
264<?if $(env.VBOX_WITH_QTGUI) = "yes" ?>
265 <!-- Components which are handled only by this installer itself -->
266 <ComponentRef Id="cp_StartMenuVBox" />
267 <ComponentRef Id="cp_DesktopShortcut" />
268 <ComponentRef Id="cp_QuickLaunchVBox" />
269<?endif?>
270 <!-- Components for removing empty folders after cleaning traces -->
271 <ComponentRef Id="cp_INSTALLDIR" />
272 <ComponentRef Id="cp_SDK" />
273
274 <!-- Components handled either by the installer itself or
275 the merge module -->
276<?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
277 <MergeRef Id="msm_VBoxApp" />
278 <?if $(env.VBOX_WITH_32_ON_64_MAIN_API) = "yes" ?>
279 <MergeRef Id="msm_VBoxCOM32On64" />
280 <?endif?>
281<?else?>
282 <!-- Make sure to reference the permissions component, which takes care of setting
283 the required ACLs for our files / folders. -->
284 <ComponentRef Id="cp_Permissions" />
285 <?if $(env.VBOX_WITH_QTGUI) = "yes" ?>
286 <ComponentRef Id="cp_RegisterExtensions" />
287 <?endif?>
288 <?if $(env.VBOX_WITH_DOCS_PACKING) = "yes" ?>
289 <ComponentRef Id="cp_Docs" />
290 <?endif?>
291 <?if $(env.VBOX_WITH_QTGUI) = "yes" ?>
292 <ComponentRef Id="cp_NLS" />
293 <?endif?>
294 <?if $(env.VBOX_WITH_32_ON_64_MAIN_API) = "yes" ?>
295 <ComponentRef Id="cp_MainCOM_x86" />
296 <?endif?>
297 <ComponentRef Id="cp_MainCOM" />
298 <?if $(env.VBOX_WITH_SDS) = "yes" ?>
299 <ComponentRef Id="cp_VBoxSDS" />
300 <?endif?>
301 <?if $(env.VBOX_WITH_MIDL_PROXY_STUB) = "yes" ?>
302 <ComponentRef Id="cp_ProxyStub" />
303 <?if $(env.VBOX_WITH_32_ON_64_MAIN_API) = "yes" ?>
304 <ComponentRef Id="cp_ProxyStubLegacy" />
305 <?endif?>
306 <?endif?>
307 <?if $(env.VBOX_WITH_DTRACE) = "yes" ?>
308 <ComponentRef Id="cp_dir_DTrace_lib_arch" />
309 <ComponentRef Id="cp_dir_DTrace_testcase_arch" />
310 <?endif?>
311 <?if $(env.VBOX_WITH_UNATTENDED_TEMPLATES) = "yes" ?>
312 <ComponentRef Id="cp_UnattendedTemplates" />
313 <?endif?>
314 <ComponentRef Id="cp_MainBinaries" />
315 <?if $(env.VBOX_WITH_QTGUI) = "yes" and $(env.VBOX_WITH_ORACLE_QT) = "yes" ?>
316 <ComponentRef Id="cp_QtPlatforms" />
317 <ComponentRef Id="cp_QtSqldrivers" />
318 <ComponentRef Id="cp_QtStyles" />
319 <?endif?>
320 <?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
321 <ComponentRef Id="cp_VBoxPyInst" />
322 <ComponentRef Id="cp_VBoxPySetup" />
323 <ComponentRef Id="cp_VBoxPyMod" />
324 <ComponentRef Id="cp_VBoxPyDel" />
325 <?endif?>
326 <?if $(env.VBOX_WITH_VBOXSDL) = "yes" ?>
327 <ComponentRef Id="cp_VBoxSDLBinaries" />
328 <?endif?>
329 <?if $(env.VBOX_WITH_WEBSERVICES) = "yes" ?>
330 <ComponentRef Id="cp_VBoxWebService" />
331 <?endif?>
332 <ComponentRef Id="cp_VBoxCAPI" />
333 <?if $(env.VBOX_SIGNING_MODE) != none ?>
334 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
335 <ComponentRef Id="cp_VBoxSupCat_PreW10" />
336 <?endif?>
337 <ComponentRef Id="cp_VBoxSupCat_W10" />
338 <?endif?>
339 <ComponentRef Id="cp_VBoxSup" />
340<?endif?>
341
342<?if $(env.VBOX_WITH_USB) = "yes" ?>
343 <Feature Id="VBoxUSB" Title="VirtualBox USB Support" Level="1" Description="!(loc.VB_USBDriver)" ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand" AllowAdvertise="no">
344 <?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
345 <MergeRef Id="msm_VBoxUSB" />
346 <?else?>
347 <?if $(env.VBOX_SIGNING_MODE) != none ?>
348 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
349 <ComponentRef Id="cp_USBFilterDriverCat_PreW10" />
350 <?endif?>
351 <ComponentRef Id="cp_USBFilterDriverCat_W10" />
352 <?endif?>
353 <ComponentRef Id="cp_USBFilterDriver" />
354 <?if $(env.VBOX_SIGNING_MODE) != none ?>
355 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
356 <ComponentRef Id="cp_USBDeviceDriverCat_PreW10" />
357 <?endif?>
358 <ComponentRef Id="cp_USBDeviceDriverCat_W10" />
359 <?endif?>
360 <ComponentRef Id="cp_USBDeviceDriver" />
361 <?endif?>
362 </Feature>
363<?endif?>
364
365<?if $(env.VBOX_WITH_NETFLT) = "yes" ?>
366 <Feature Id="VBoxNetwork" Title="VirtualBox Networking" Level="1" Description="!(loc.VB_Network)" ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand" AllowAdvertise="no">
367 <Feature Id="VBoxNetworkFlt" Title="VirtualBox Bridged Networking" Level="1" Description="!(loc.VB_NetFltDriver)" ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand" AllowAdvertise="no">
368 <?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
369 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
370 <MergeRef Id="msm_VBoxNetworkFlt" />
371 <?endif?>
372 <MergeRef Id="msm_VBoxNetworkLwf" />
373 <?else?>
374 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
375 <ComponentRef Id="cp_NetFltDriver" />
376 <?endif?>
377 <?if $(env.VBOX_SIGNING_MODE) != none ?>
378 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
379 <ComponentRef Id="cp_NetLwfDriverCat_PreW10" />
380 <?endif?>
381 <ComponentRef Id="cp_NetLwfDriverCat_W10" />
382 <?endif?>
383 <ComponentRef Id="cp_NetLwfDriver" />
384 <?endif?>
385 </Feature>
386 <Feature Id="VBoxNetworkAdp" Title="VirtualBox Host-Only Networking" Level="1" Description="!(loc.VB_NetAdpDriver)" ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand" AllowAdvertise="no">
387 <?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
388 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
389 <MergeRef Id="msm_VBoxNetworkAdp" />
390 <?endif?>
391 <MergeRef Id="msm_VBoxNetworkAdp6" />
392 <?else?>
393 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
394 <ComponentRef Id="cp_NetAdpDriver" />
395 <?endif?>
396 <?if $(env.VBOX_SIGNING_MODE) != none ?>
397 <?if $(env.KBUILD_TARGET_ARCH) = "amd64" ?>
398 <ComponentRef Id="cp_NetAdp6DriverCat_PreW10" />
399 <?endif?>
400 <ComponentRef Id="cp_NetAdp6DriverCat_W10" />
401 <?endif?>
402 <ComponentRef Id="cp_NetAdp6Driver" />
403 <?endif?>
404 </Feature>
405
406 </Feature>
407<?endif?>
408
409<?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
410 <Feature Id="VBoxPython" Title="VirtualBox Python Support" Level="1" Description="!(loc.VB_Python)" ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand" AllowAdvertise="no">
411 <?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
412 <MergeRef Id="msm_VBoxPython" />
413 <?else?>
414 <ComponentRef Id="cp_VBoxPythonBinding" />
415 <?endif?>
416 </Feature>
417<?endif?>
418 </Feature>
419
420 <!-- Include user interface definition -->
421 <?include UserInterface.wxi ?>
422
423 <InstallExecuteSequence>
424
425 <!--
426 To debug the action sequences, do: "msiexec /i <VBox.msi> /lar <Logfile>"
427
428 InstallUISequence (client side) is:
429 AppSearch
430 LaunchConditions
431 ValidateProductID
432 CostInitialize
433 FileCost
434 CostFinalize
435 ExecuteAction -> will pass control over to "InstallExecuteSequence"
436
437 The first six actions above will be repeated but skipped on the server
438 side if already run on the client side.
439
440 InstallExecuteSequence (server side) is:
441 <First six action from InstallUISequence>
442 .
443 InstallInitialize
444 .
445 InstallFinalize
446
447 The actions between InstallInitialize and InstallFinalize will be gone through twice:
448 - The first time the installer creates an installation script containing all actions in the right
449 sequence which need to get executed in a batch later. At this point the launch conditions for
450 custom actions must be met already!
451 - The second time the generated installation script will be run as-is.
452
453 Also, the InstallUISequence and InstallExecuteSequence tables run in different sessions which
454 need public properties (that is, UPPERCASE properties).
455 -->
456
457 <!-- AppSearch must be done before "RemoveExistingProducts" and before "FindRelatedProducts" -->
458 <AppSearch Sequence="1"></AppSearch>
459 <LaunchConditions After="AppSearch" />
460
461 <!-- First install the new version and then remove the old version. This is more efficient -->
462 <RemoveExistingProducts After="InstallValidate" Condition="PREVIOUSVERSIONSINSTALLED OR NEWERVERSIONDETECTED" />
463
464 <Custom Action="ca_OriginalTargetDir" After="FileCost" Condition="(NOT INSTALLDIR)" />
465 <Custom Action="ca_DefaultTargetDir" Before="FileCost" Condition="NOT INSTALLDIR AND EXISTINGINSTALLDIR" />
466
467 <!-- Check + unininstall old TAP instances - we don't need them anymore -->
468 <Custom Action="ca_UninstallTAPInstances" Before="InstallFiles" Condition="1" />
469
470 <!-- Check + uninstall old VBoxDrv service - it was renamed to VBoxSup. -->
471 <Custom Action="ca_UninstallVBoxDrv" Before="InstallFiles" Condition="1" />
472
473 <Custom Action="ca_InstallBrandingArgs" Before="ca_InstallBranding" Condition="NOT REMOVE" />
474 <Custom Action="ca_InstallBranding" Before="InstallFinalize" Condition="NOT REMOVE" />
475
476 <!-- Uninstall branding on complete uninstall, not on update -->
477 <Custom Action="ca_UninstallBrandingArgs" Before="ca_UninstallBranding" Condition="(NOT UPGRADINGPRODUCTCODE) AND (REMOVE=&quot;ALL&quot;)" />
478 <Custom Action="ca_UninstallBranding" Before="InstallFinalize" Condition="(NOT UPGRADINGPRODUCTCODE) AND (REMOVE=&quot;ALL&quot;)" />
479
480<?if $(env.VBOX_WITH_MSM_INSTALL) = "no" ?>
481 <?include VBoxMergeAppSeq.wxi ?>
482 <?if $(env.VBOX_WITH_32_ON_64_MAIN_API) = "yes" ?>
483 <?include VBoxMergeCOM32On64Seq.wxi ?>
484 <?endif?>
485 <?if $(env.VBOX_WITH_NETFLT) = "yes" ?>
486 <?if $(env.KBUILD_TARGET_ARCH) = amd64 ?> <!-- @todo bird: Remove this and use Adp6, we don't support XP any more. -->
487 <?include VBoxMergeNetFltSeq.wxi ?>
488 <?endif?>
489 <?include VBoxMergeNetLwfSeq.wxi ?>
490 <?endif?>
491 <?if $(env.VBOX_WITH_NETADP) = "yes" ?>
492 <?if $(env.KBUILD_TARGET_ARCH) = amd64 ?> <!-- @todo bird: Remove this and use Adp6, we don't support XP any more. -->
493 <?include VBoxMergeNetAdpSeq.wxi ?>
494 <?endif?>
495 <?include VBoxMergeNetAdp6Seq.wxi ?>
496 <?endif?>
497 <?include VBoxMergeUSBSeq.wxi ?>
498 <?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
499 <?include VBoxMergePythonSeq.wxi ?>
500 <?endif?>
501<?endif?>
502
503 </InstallExecuteSequence>
504
505<?if $(env.VBOX_WITH_QTGUI) = "yes" ?>
506 <!-- Set up special directory IDs for referencing to the start menu
507 or the Quick Launch bar.
508 See: http://msdn.microsoft.com/en-us/library/aa368276.aspx
509 http://wix.mindcapers.com/wiki/Shortcuts_in_WiX -->
510 <StandardDirectory Id="ProgramMenuFolder">
511 <Directory Id="dir_StartMenuVBox" Name="$(env.VBOX_PRODUCT)" />
512 </StandardDirectory>
513
514 <StandardDirectory Id="DesktopFolder" />
515
516 <StandardDirectory Id="AppDataFolder">
517 <Directory Id="dir_AppDataMicrosoft" Name="Microsoft">
518 <Directory Id="dir_AppDataMSIE" Name="Internet Explorer">
519 <Directory Id="dir_QuicklaunchFolder" Name="Quick Launch" />
520 </Directory>
521 </Directory>
522 </StandardDirectory>
523<?endif?>
524
525 <Directory Id="$(var.Property_ProgramFiles)" Name="PFiles">
526 <Directory Id="VENDOR" Name="$(env.VBOX_VENDOR_SHORT)">
527 <Directory Id="INSTALLDIR" Name="VirtualBox">
528 <!-- Components for removing empty folder after cleaning traces -->
529 <Component Id="cp_INSTALLDIR" Guid="374723AF-5990-4552-A1B0-82C72EFA360F">
530 <RemoveFolder Id="INSTALLDIR" On="uninstall" />
531 </Component>
532<?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
533 <Merge Id="msm_VBoxApp" Language="0" SourceFile="$(var.Property_VBoxMergeApp)" DiskId="1">
534 <ConfigurationData Name="argRegisterExtensions" Value="[VBOX_REGISTERFILEEXTENSIONS]" />
535 </Merge>
536 <?if $(env.VBOX_WITH_32_ON_64_MAIN_API) = "yes" ?>
537 <Merge Id="msm_VBoxCOM32On64" Language="0" SourceFile="$(var.Property_VBoxMergeCOM32On64)" DiskId="1" />
538 <?endif?>
539<?else?>
540 <Directory Id="msm_VBoxApplicationFolder" FileSource=".">
541 <?include VBoxMergeApp.wxi ?>
542 <?if $(env.VBOX_WITH_32_ON_64_MAIN_API) = "yes" ?>
543 <?include VBoxMergeCOM32On64.wxi ?>
544 <?endif?>
545 </Directory>
546<?endif?>
547 <Directory Id="dir_Drivers" Name="drivers">
548<?if $(env.VBOX_WITH_USB) = "yes" ?>
549 <Directory Id="dir_USB" Name="USB">
550 <?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
551 <Merge Id="msm_VBoxUSB" Language="0" SourceFile="$(var.Property_VBoxMergeUSB)" DiskId="1" />
552 <?else?>
553 <Directory Id="msm_VBoxUSBFolder" FileSource=".">
554 <?include VBoxMergeUSB.wxi ?>
555 </Directory>
556 <?endif?>
557 </Directory>
558<?endif?>
559 <Directory Id="dir_Network" Name="network">
560<?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. -->
561 <Directory Id="dir_NetFlt" Name="netflt">
562 <?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
563 <Merge Id="msm_VBoxNetworkFlt" Language="0" SourceFile="$(var.Property_VBoxMergeNetworkFlt)" DiskId="1">
564 <ConfigurationData Name="passedNetworkType" Value="[NETWORKTYPE]" />
565 </Merge>
566 <?else?>
567 <Directory Id="msm_VBoxNetworkFltFolder" FileSource=".">
568 <?include VBoxMergeNetFlt.wxi ?>
569 </Directory>
570 <?endif?>
571 </Directory>
572<?endif?>
573<?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. -->
574 <Directory Id="dir_NetAdp" Name="netadp">
575 <?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
576 <Merge Id="msm_VBoxNetworkAdp" Language="!(loc.LANG)" SourceFile="$(var.Property_VBoxMergeNetworkAdp)" DiskId="1">
577 <ConfigurationData Name="passedNetworkType" Value="[NETWORKTYPE]" />
578 </Merge>
579 <?else?>
580 <Directory Id="msm_VBoxNetworkAdpFolder" FileSource=".">
581 <?include VBoxMergeNetAdp.wxi ?>
582 </Directory>
583 <?endif?>
584 </Directory>
585<?endif?>
586
587<?if $(env.VBOX_WITH_NETFLT) = "yes" ?>
588 <Directory Id="dir_NetLwf" Name="netlwf">
589 <?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
590 <Merge Id="msm_VBoxNetworkLwf" Language="!(loc.LANG)" SourceFile="$(var.Property_VBoxMergeNetworkLwf)" DiskId="1">
591 <ConfigurationData Name="passedNetworkType" Value="[NETWORKTYPE]" />
592 </Merge>
593 <?else?>
594 <Directory Id="msm_VBoxNetworkLwfFolder" FileSource=".">
595 <?include VBoxMergeNetLwf.wxi ?>
596 </Directory>
597 <?endif?>
598 </Directory>
599<?endif?>
600
601<?if $(env.VBOX_WITH_NETADP) = "yes" ?>
602 <Directory Id="dir_NetAdp6" Name="netadp6">
603 <?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
604 <Merge Id="msm_VBoxNetworkAdp6" Language="!(loc.LANG)" SourceFile="$(var.Property_VBoxMergeNetworkAdp6)" DiskId="1">
605 <ConfigurationData Name="passedNetworkType" Value="[NETWORKTYPE]" />
606 </Merge>
607 <?else?>
608 <Directory Id="msm_VBoxNetworkAdp6Folder" FileSource=".">
609 <?include VBoxMergeNetAdp6.wxi ?>
610 </Directory>
611 <?endif?>
612 </Directory>
613<?endif?>
614 </Directory>
615 </Directory>
616 <Directory Id="dir_SDK" Name="sdk">
617<?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
618 <Directory Id="dir_SDKInstaller" Name="installer"> <!-- Note: For < VBox 7.1 this folder was called 'install'. -->
619 <Directory Id="dir_SDKInstallerPython" Name="python">
620 <?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?>
621 <Merge Id="msm_VBoxPython" Language="!(loc.LANG)" SourceFile="$(var.Property_VBoxMergePython)" DiskId="1" />
622 <?else?>
623 <Directory Id="msm_VBoxPythonFolder" FileSource=".">
624 <?include VBoxMergePython.wxi ?>
625 </Directory>
626 <?endif?>
627 </Directory>
628 </Directory>
629<?endif?>
630 <!-- Component for removing empty folder after cleaning traces -->
631 <Component Id="cp_SDK" Guid="ACA59290-B2D6-4E96-B164-C45F70A90219">
632 <RemoveFolder Id="dir_SDK" On="uninstall" />
633 </Component>
634 </Directory>
635
636<?if $(env.VBOX_WITH_QTGUI) = "yes" ?>
637 <!-- Start menu entries. -->
638 <Component Id="cp_StartMenuVBox" Guid="C2DC321A-CE63-40EE-8A98-724DF8BD12FB" Condition="VBOX_INSTALLSTARTMENUENTRIES" Bitness="$(var.Property_Bitness)">
639
640 <Shortcut Id="sc_StartMenuVBox" Directory="dir_StartMenuVBox" Name="$(env.VBOX_PRODUCT)" Description="$(env.VBOX_PRODUCT)" Target="[INSTALLDIR]VirtualBox.exe" WorkingDirectory="INSTALLDIR" />
641 <RegistryValue Root="HKCU" Key="$(var.Property_RegKeyInstall)" Type="string" Value="installed" KeyPath="yes" />
642 <?include $(env.PATH_TARGET)\Shortcuts_StartMenu.wxi ?>
643 </Component>
644
645 <!-- Desktop shortcut. -->
646 <Component Id="cp_DesktopShortcut" Guid="668F8A1A-F5CE-48B3-BB1A-3042EE27B279" Condition="VBOX_INSTALLDESKTOPSHORTCUT" Bitness="$(var.Property_Bitness)">
647
648 <Shortcut Id="sc_DesktopVBox" Directory="DesktopFolder" Name="$(env.VBOX_PRODUCT)" Description="$(env.VBOX_PRODUCT)" Target="[INSTALLDIR]VirtualBox.exe" WorkingDirectory="INSTALLDIR" />
649 <RegistryValue Root="HKCU" Key="$(var.Property_RegKeyInstall)" Type="string" Value="installed" KeyPath="yes" />
650 </Component>
651
652 <!-- QuickLaunch shortcut. -->
653 <Component Id="cp_QuickLaunchVBox" Guid="CC19E026-938A-41CB-8E77-3F33296244B6" Condition="VBOX_INSTALLQUICKLAUNCHSHORTCUT" Bitness="$(var.Property_Bitness)">
654 <CreateFolder />
655
656 <Shortcut Id="sc_QuickLaunchVBox" Directory="dir_QuicklaunchFolder" Name="$(env.VBOX_PRODUCT)" Description="$(env.VBOX_PRODUCT)" Target="[INSTALLDIR]VirtualBox.exe" WorkingDirectory="INSTALLDIR" />
657 <RegistryValue Root="HKCU" Key="$(var.Property_RegKeyInstall)" Type="string" Value="installed" KeyPath="yes" />
658 </Component>
659<?endif?>
660 </Directory>
661 </Directory>
662 </Directory>
663 </Package>
664</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