VirtualBox

source: vbox/trunk/src/VBox/Installer/win/Makefile.kmk@ 80360

Last change on this file since 80360 was 80360, checked in by vboxsync, 5 years ago

HostServices/SharedOpenGL: Remove most of the chromium related HGCM service bits leaving only the renderspu and OpenGLTest app for now as they are used for VMSVGA as well (OpenGLTest needs to be rewritten), bugref:9529

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 57.2 KB
Line 
1# $Id: Makefile.kmk 80360 2019-08-21 08:41:18Z vboxsync $
2## @file
3# Makefile for the Windows installer.
4#
5
6#
7# Copyright (C) 2006-2019 Oracle Corporation
8#
9# This file is part of VirtualBox Open Source Edition (OSE), as
10# available from http://www.virtualbox.org. This file is free software;
11# you can redistribute it and/or modify it under the terms of the GNU
12# General Public License (GPL) as published by the Free Software
13# Foundation, in version 2 as it comes in the "COPYING" file of the
14# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16#
17
18SUB_DEPTH = ../../../..
19include $(KBUILD_PATH)/subheader.kmk
20
21ifneq ($(KBUILD_HOST),win)
22 $(error "The Windows installer can only be built on Windows!")
23endif
24
25
26#
27# Include Sub-Makefiles.
28#
29include $(PATH_SUB_CURRENT)/InstallHelper/Makefile.kmk
30
31include $(PATH_SUB_CURRENT)/Stub/Makefile.kmk
32include $(PATH_SUB_CURRENT)/StubBld/Makefile.kmk
33include $(PATH_SUB_CURRENT)/Resources/Makefile.kmk
34ifdef VBOX_WITH_MSI_HACK
35 include $(PATH_SUB_CURRENT)/MsiHack/Makefile.kmk
36endif
37
38
39
40#
41# Globals.
42#
43# Tip: Use VBOX_CAB_COMPRESSION_LEVEL=none on the kmk command line when working
44# on the installer.
45#
46VBOX_WIN_INST_MAKEFILE_DEP := $(MAKEFILE_CURRENT)
47VBOX_CAB_COMPRESSION_LEVEL := high
48
49VBOX_PATH_WIN_INST_SRC := $(PATH_SUB_CURRENT)
50VBOX_WIN_INST_OUT_DIR := $(PATH_TARGET)/Installer/win
51VBOX_WIN_INST_REPACK_DIR := $(PATH_OUT)/repack
52
53# Note: en_US *must* come first for the dependency file generation.
54ifndef VBOX_INSTALLER_LANGUAGES
55 VBOX_INSTALLER_LANGUAGES = en_US de_DE el_GR fr_FR it_IT tr_TR zh_TW zh_CN
56 VBOX_INSTALLER_LANGUAGES += $(VBOX_INSTALLER_ADD_LANGUAGES)
57endif
58
59
60#
61# List of merge modules to use.
62#
63VBOX_INSTALLER_MERGE_MODULES = App USB NetAdp NetFlt NetAdp6 NetLwf Python
64ifeq ($(KBUILD_TARGET_ARCH),amd64)
65 VBOX_INSTALLER_MERGE_MODULES += COM32On64
66endif
67
68# We only ship the merge modules in locale en_US for the moment.
69ifdef VBOX_WITH_MSM_INSTALL
70 VBOX_INSTALLER_LANGUAGES := en_US
71 VBOX_INSTALLER_MERGE_LANGUAGES = $(VBOX_INSTALLER_LANGUAGES)
72endif
73
74#
75# Language IDs (LCID, decimal)
76#
77VBOX_BRAND_en_US_LANG_ID ?= 1033
78VBOX_BRAND_de_DE_LANG_ID ?= 1031
79VBOX_BRAND_el_GR_LANG_ID ?= 1032
80VBOX_BRAND_fa_IR_LANG_ID ?= 1065
81VBOX_BRAND_fr_FR_LANG_ID ?= 1036
82VBOX_BRAND_it_IT_LANG_ID ?= 1040
83VBOX_BRAND_tr_TR_LANG_ID ?= 1055
84VBOX_BRAND_zh_TW_LANG_ID ?= 1028
85VBOX_BRAND_zh_CN_LANG_ID ?= 2052
86
87# Standard language names (in the native language), to be extended as we go.
88# VBOX_BRAND_$(lang)_LANG_NAME must be defined for each language which occurs
89# in either VBOX_LICENSE_ADD_LANGUAGES or VBOX_MANUAL_ADD_LANGUAGES.
90VBOX_BRAND_en_US_LANG_NAME := English
91VBOX_BRAND_de_DE_LANG_NAME := Deutsch
92VBOX_BRAND_el_GR_LANG_NAME := Ελληνικά
93VBOX_BRAND_fr_FR_LANG_NAME := Français
94VBOX_BRAND_it_IT_LANG_NAME := Italiano
95VBOX_BRAND_tr_TR_LANG_NAME := Türkçe
96VBOX_BRAND_zh_TW_LANG_NAME := 正體中文
97VBOX_BRAND_zh_CN_LANG_NAME := 简体中文
98
99
100#
101# We don't have the license text in another language than English yet,
102# so just define the branding targets to use the English one for now.
103# The installer generation assumes that there is a translation for each
104# of VBOX_INSTALLER_LANGUAGES.
105#
106$(foreach lang,$(VBOX_INSTALLER_LANGUAGES), \
107 $(eval VBOX_BRAND_$(lang)_LICENSE_RTF := $(VBOX_BRAND_LICENSE_RTF)))
108
109#
110# Set the codepage for all languages to 1252, covers most cases.
111#
112$(foreach lang,$(sort $(VBOX_INSTALLER_LANGUAGES) $(VBOX_LICENSE_ADD_LANGUAGES) $(VBOX_MANUAL_ADD_LANGUAGES)), \
113 $(eval VBOX_BRAND_$(lang)_LANGUAGE_CODEPAGE := 1252))
114# Exceptions:
115VBOX_BRAND_zh_TW_LANGUAGE_CODEPAGE := 950
116VBOX_BRAND_zh_CN_LANGUAGE_CODEPAGE := 936
117VBOX_BRAND_fa_IR_LANGUAGE_CODEPAGE := 1256
118VBOX_BRAND_tr_TR_LANGUAGE_CODEPAGE := 1254
119
120#
121# If we want to build a combined package, we separate all common stuff
122# (that is all 100% identical content between 32-/64-bit builds)
123# into an own .cab file to save space. This .cab file then gets included
124# and used by the 32-/64-bit installers.
125#
126ifdef VBOX_WITH_COMBINED_PACKAGE
127 VBOX_INSTALLER_COMMON_DISKID := 2
128else
129 VBOX_INSTALLER_COMMON_DISKID := 1
130endif
131
132## @todo VBOX_ prefixes!
133PACKAGE_BASE := VirtualBox-$(VBOX_VERSION_STRING)
134PACKAGE_NAME_LANG := $(PACKAGE_BASE)-r$(VBOX_SVN_REV)
135PACKAGE_NAME_FINAL := $(PATH_STAGE_BIN)/$(PACKAGE_NAME_LANG).msi
136
137ifdef VBOX_WITH_COMBINED_PACKAGE
138 PATH_MULTIARCH_TEMP := $(PATH_OUT_BASE)/win.x86/$(KBUILD_TYPE)/obj/Installer
139 PATH_MULTIARCH_GUEST_ADDITIONS_ISO := $(PATH_OUT_BASE)/win.amd64/$(KBUILD_TYPE)/bin/additions
140 PACKAGE_NAME_MULTIARCH := $(PACKAGE_NAME_LANG)-MultiArch
141 PACKAGE_NAME_MULTIARCH.x86 := $(PACKAGE_NAME_MULTIARCH)_x86.msi
142 PACKAGE_NAME_MULTIARCH.amd64 := $(PACKAGE_NAME_MULTIARCH)_amd64.msi
143 PACKAGE_NAME_FINAL := $(PATH_MULTIARCH_TEMP)/$(PACKAGE_NAME_MULTIARCH.$(KBUILD_TARGET_ARCH))
144 PACKAGE_NAME_MULTIARCH_FINAL := $(PACKAGE_NAME_MULTIARCH).exe
145 # Always take the common.cab from the amd64 build, as it
146 # might contain certain files for x86 compatibility such
147 # as our 32-on-64-bit COM stuff.
148 PACKAGE_NAME_MULTIARCH_COMMONCAB := $(PATH_OUT_BASE)/win.amd64/$(KBUILD_TYPE)/obj/Installer/win/common.cab
149
150 BLDDIRS += $(PATH_MULTIARCH_TEMP)
151 PACKING += $(PACKAGE_NAME_FINAL)
152 ifeq ($(KBUILD_TARGET_ARCH),x86)
153 PACKING += $(PATH_STAGE_BIN)/$(PACKAGE_NAME_MULTIARCH_FINAL)
154 endif
155else
156 PACKAGE_NAME_MULTIARCH := $(PACKAGE_NAME_LANG)-MultiArch
157 PACKAGE_NAME_MULTIARCH_FINAL := $(PACKAGE_NAME_MULTIARCH).exe
158 PACKING += $(PACKAGE_NAME_FINAL) $(PATH_STAGE_BIN)/$(PACKAGE_NAME_MULTIARCH_FINAL)
159endif
160BLDDIRS += \
161 $(VBOX_WIN_INST_OUT_DIR) \
162 $(VBOX_WIN_INST_REPACK_DIR)/ \
163 $(foreach lang,$(VBOX_INSTALLER_LANGUAGES), \
164 $(VBOX_WIN_INST_OUT_DIR)/$(lang)/ \
165 $(VBOX_WIN_INST_REPACK_DIR)/files-VirtualBox_$(lang)/ )\
166 $(VBOX_WIN_INST_OUT_DIR)/NLS/
167
168OTHER_CLEAN += \
169 $(VBOX_WIN_INST_OUT_DIR)/VirtualBox.wixobj \
170 $(VBOX_WIN_INST_OUT_DIR)/VirtualBox.wix \
171 $(VBOX_WIN_INST_REPACK_DIR)/VirtualBox.wix \
172 $(VBOX_WIN_INST_OUT_DIR)/VirtualBox.wixobj.dep \
173 $(VBOX_WIN_INST_OUT_DIR)/VirtualBox_TypeLib.wxi \
174 $(VBOX_WIN_INST_OUT_DIR)/VirtualBox_TypeLib_x86.wxi \
175 $(VBOX_WIN_INST_OUT_DIR)/VirtualBox_ProxyStub.wxi \
176 $(if $(VBOX_WITH_QTGUI),$(VBOX_WIN_INST_OUT_DIR)/VBoxGuiNLS.wxi) \
177 $(VBOX_WIN_INST_OUT_DIR)/VBoxKey.wxi \
178 $(VBOX_WIN_INST_OUT_DIR)/VBoxUnattendedTemplateComponent.wxi \
179 $(foreach lang,$(VBOX_INSTALLER_LANGUAGES), \
180 $(VBOX_WIN_INST_OUT_DIR)/NLS/Language_$(lang).wxl \
181 $(VBOX_WIN_INST_OUT_DIR)/NLS/License_$(lang).wxl \
182 $(VBOX_WIN_INST_OUT_DIR)/$(lang)/$(lang).mst \
183 $(VBOX_WIN_INST_OUT_DIR)/$(lang)/$(PACKAGE_NAME_LANG)_$(lang).wixpdb \
184 $(VBOX_WIN_INST_OUT_DIR)/$(lang)/$(PACKAGE_NAME_LANG)_$(lang).msi \
185 $(VBOX_WIN_INST_OUT_DIR)/$(lang)/VirtualBox_$(lang).wix \
186 $(VBOX_WIN_INST_OUT_DIR)/$(lang)/VirtualBox_$(lang).wixobj \
187 $(VBOX_WIN_INST_OUT_DIR)/$(lang)/VirtualBox_$(lang).wixobj.dep \
188 $(VBOX_WIN_INST_REPACK_DIR)/VirtualBox_$(lang).wix \
189 $(VBOX_WIN_INST_REPACK_DIR)/VirtualBox_$(lang).files \
190 $(VBOX_WIN_INST_REPACK_DIR)/2-link-$(PACKAGE_NAME_LANG).cmd \
191 $(VBOX_WIN_INST_REPACK_DIR)/files-VirtualBox_$(lang)/Language_$(lang).wxl \
192 $(VBOX_WIN_INST_REPACK_DIR)/files-VirtualBox_$(lang)/License_$(lang).wxl )\
193 $(VBOX_WIN_INST_OUT_DIR)/DirComponentsAndFiles_DTrace.wxi \
194 $(VBOX_WIN_INST_OUT_DIR)/Files_Main.wxi \
195 $(VBOX_WIN_INST_OUT_DIR)/Files_Doc.wxi \
196 $(VBOX_WIN_INST_OUT_DIR)/Files_License.wxi \
197 $(VBOX_WIN_INST_OUT_DIR)/Shortcuts_StartMenu.wxi \
198 $(VBOX_WIN_INST_OUT_DIR)/$(PACKAGE_NAME_LANG).msi \
199 $(VBOX_WIN_INST_REPACK_DIR)/3-multilingual-$(PACKAGE_NAME_LANG).cmd \
200 $(PATH_STAGE_BIN)/$(PACKAGE_NAME_MULTIARCH_FINAL)
201
202ifdef VBOX_WITH_COMBINED_PACKAGE
203 ifeq ($(KBUILD_TARGET_ARCH),x86)
204 OTHER_CLEAN += \
205 $(VBOX_WIN_INST_REPACK_DIR)/4-multiarch-$(@F).cmd \
206 $(PATH_MULTIARCH_TEMP)/$(PACKAGE_NAME_MULTIARCH.x86)
207 endif
208 ifndef VBOX_WITH_MSM_INSTALL
209 OTHER_CLEAN += \
210 $(VBOX_WIN_INST_OUT_DIR)/common.cab
211 endif
212else
213 OTHER_CLEAN += \
214 $(PACKAGE_NAME_FINAL)
215endif
216
217ifdef VBOX_WITH_MSM_INSTALL
218 OTHER_CLEAN += \
219 $(foreach module,$(VBOX_INSTALLER_MERGE_MODULES), \
220 $(foreach lang,$(VBOX_INSTALLER_MERGE_LANGUAGES), \
221 $(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang)_$(KBUILD_TARGET_ARCH).msm \
222 $(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang).wixobj \
223 $(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang).wixobj.dep \
224 $(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang).wixpdb \
225 $(VBOX_WIN_INST_REPACK_DIR)/VBoxMerge$(module)_$(lang).wix \
226 $(VBOX_WIN_INST_REPACK_DIR)/VBoxMerge$(module)_$(lang).files)
227 BLDDIRS += $foreach lang,$(VBOX_INSTALLER_MERGE_LANGUAGES), \
228 $(VBOX_WIN_INST_REPACK_DIR)/files-VBoxMerge$(module)_$(lang)/)
229endif
230
231#
232# Suppress/skip the following ICE (Internal Consistency Evaluators):
233# - ICE64: Checks that new directories in the user profile are removed correctly in roaming scenarios.
234# -> We don't want to remove system folders (like "Microsoft/Internet Explorer/Quick Launch").
235# - ICE69: Checks if file references are within the same component.
236# -> We reference to files within different components, but these components are installed using
237# the same feature, so that's fine.
238#
239VBOX_MSI_ICE_IGNORE := \
240 -ice:64 \
241 -ice:69
242
243#
244# Create intermediate XML file for languages (needed for .MSI linking).
245#
246# Note: The double escaping of $(dir $@) in the prereq/dep list is because we first have
247# to escape the expansion of the $(eval ) argument and then the definition of the
248# rule. The statement is finally expanded during second dependency expansion, which
249# takes place after all makefiles has been loaded and with the @ variable defined.
250#
251define def_vbox_lang_xml
252$(VBOX_WIN_INST_OUT_DIR)/NLS/Language_$(lang).wxl: $(VBOX_PATH_WIN_INST_SRC)/NLS/$(lang).wxl | $$$$(dir $$$$@)
253 $$(call MSG_GENERATE,,$$@,$$<)
254 $(QUIET)$(INSTALL) -m 0644 $$< $$@
255endef
256
257$(foreach lang,$(VBOX_INSTALLER_LANGUAGES), \
258 $(eval $(def_vbox_lang_xml)))
259
260#
261# Create intermediate XML file for licenses (needed for .MSI linking).
262# These files are created from the original .RTF files in the /docs directory.
263#
264# Note: The redirect command below will open $$@ as stdout in append+text mode
265# and then exec cat, thus appending the license file to the result file.
266#
267# Note: The license_file variable has to be created before def_vbox_license_xml
268# is expanded by the 2nd eval because we rely on the that expansion
269# replacing all $(license_file) (and $(lang)) references before evaluation.
270#
271# Note: The REDIRECT + ECHO_EXT is because WiX gets upset if there a newline
272# between the tag and the RTF license text.
273#
274define def_vbox_license_xml
275$(VBOX_WIN_INST_OUT_DIR)/NLS/License_$(lang).wxl: $(license_file) $(VBOX_WIN_INST_MAKEFILE_DEP) | $$$$(dir $$$$@)
276 $$(call MSG_GENERATE,,$$@,$$<)
277 $(APPEND) -t $$@ '<?xml version="1.0" encoding="utf-8"?>'
278 $(APPEND) $$@ '<WixLocalization xmlns="http://schemas.microsoft.com/wix/2006/localization" Codepage="$(VBOX_BRAND_$(lang)_LANGUAGE_CODEPAGE)" Culture="$(lang)">'
279
280 $(REDIRECT) -a+to $$@ -- $(ECHO_EXT) -n '<String Id="LicenseText">'
281 $(REDIRECT) -a+to $$@ -- $(SED) -e "s|<|\&lt;|g" -e "s|>|\&gt;|g" $(license_file)
282 $(APPEND) $$@ '</String>'
283
284 $(APPEND) $$@ '<String Id="LicenseFile">$(license_file)</String>'
285 $(APPEND) $$@ '<String Id="LicenseInstallFileLong">License_$(lang).rtf</String>'
286 $(APPEND) $$@ '<String Id="LicenseInstallFileShort">L_$(lang).rtf</String>'
287
288 $(APPEND) $$@ '</WixLocalization>'
289endef
290
291$(foreach lang,$(VBOX_INSTALLER_LANGUAGES), \
292 $(eval local license_file := $(VBOX_BRAND_$(subst en_US_,,$(lang)_)LICENSE_RTF)) \
293 $(eval $(def_vbox_license_xml)))
294
295#
296# Create one intermediate WXI (Windows Installer Include) file for all installers (needed for .MSI compiling).
297# This file includes all language-specific files (PDFs, CHMs, ...) to install.
298#
299# Note: When using the -n switch, append will append a new line after each
300# argument. The -t switch makes it truncate the file.
301#
302$(VBOX_WIN_INST_OUT_DIR)/Files_Main.wxi: $(VBOX_WIN_INST_MAKEFILE_DEP) | $$(dir $$@)
303 $(call MSG_GENERATE,,$@,$<)
304 $(APPEND) -t $@ '<?xml version="1.0" ?>'
305 $(APPEND) $@ '<Include xmlns="http://schemas.microsoft.com/wix/2006/wi">'
306ifdef VBOX_WITH_DOCS_PACKING
307 $(APPEND) $@ ' <File Id="file_VirtualBox.chm" Name="VirtualBox.chm" DiskId="$(VBOX_INSTALLER_COMMON_DISKID)" Vital="yes" Source="$(subst /,\,$(PATH_STAGE_BIN)/VirtualBox.chm)"></File>'
308 $(APPEND) -n $@ $(foreach lang,$(VBOX_MANUAL_ADD_LANGUAGES), \
309 ' <File Id="file_VirtualBox_$(lang).chm" Name="VirtualBox_$(lang).chm" DiskId="$(VBOX_INSTALLER_COMMON_DISKID)" Vital="yes" Source="$(subst /,\,$(PATH_STAGE_BIN)/VirtualBox_$(lang).chm)"></File>')
310endif
311 $(APPEND) $@ '</Include>'
312
313$(VBOX_WIN_INST_OUT_DIR)/Files_Doc.wxi: $(VBOX_WIN_INST_MAKEFILE_DEP) | $$(dir $$@)
314 $(call MSG_GENERATE,,$@,$<)
315 $(APPEND) -t $@ '<?xml version="1.0" ?>'
316 $(APPEND) $@ '<Include xmlns="http://schemas.microsoft.com/wix/2006/wi">'
317ifdef VBOX_WITH_DOCS_PACKING
318 $(APPEND) $@ ' <File Id="file_UserManual.pdf" Name="UserManual.pdf" DiskId="$(VBOX_INSTALLER_COMMON_DISKID)" Vital="yes" Source="$(subst /,\,$(PATH_STAGE_BIN)/UserManual.pdf)">'
319 $(APPEND) $@ ' </File>'
320 $(APPEND) -n $@ $(foreach lang,$(VBOX_MANUAL_ADD_LANGUAGES), \
321 ' <File Id="file_UserManual_$(lang).pdf" Name="UserManual_$(lang).pdf" DiskId="$(VBOX_INSTALLER_COMMON_DISKID)" Vital="yes" Source="$(subst /,\,$(PATH_STAGE_BIN)/UserManual_$(lang).pdf)">' \
322 ' </File>')
323endif
324 $(APPEND) $@ '</Include>'
325
326$(VBOX_WIN_INST_OUT_DIR)/Files_License.wxi: $(VBOX_WIN_INST_MAKEFILE_DEP) | $$(dir $$@)
327 $(call MSG_GENERATE,,$@,$<)
328 $(APPEND) -t $@ '<?xml version="1.0" ?>'
329 $(APPEND) $@ '<Include xmlns="http://schemas.microsoft.com/wix/2006/wi">'
330 $(APPEND) $@ ' <File Id="file_License_en_US.rtf" Name="License_en_US.rtf" DiskId="$(VBOX_INSTALLER_COMMON_DISKID)" Vital="yes" Source="$(subst /,\,$(VBOX_BRAND_LICENSE_RTF))">' \
331 ' </File>'
332 $(APPEND) -n $@ $(foreach lang,$(VBOX_LICENSE_ADD_LANGUAGES), \
333 ' <File Id="file_License_$(lang).rtf" Name="License_$(lang).rtf" DiskId="$(VBOX_INSTALLER_COMMON_DISKID)" Vital="yes" Source="$(subst /,\,$(VBOX_BRAND_$(lang)_LICENSE_RTF))">' \
334 ' </File>')
335 $(APPEND) $@ '</Include>'
336
337$(VBOX_WIN_INST_OUT_DIR)/DirComponentsAndFiles_DTrace.wxi: $(VBOX_WIN_INST_MAKEFILE_DEP) $(PATH_SUB_CURRENT)/../Config.kmk | $$(dir $$@)
338 $(call MSG_GENERATE,,$@,$<)
339 $(QUIET)$(APPEND) -nt "$@" \
340 '<?xml version="1.0" ?>' \
341 '<Include xmlns="http://schemas.microsoft.com/wix/2006/wi">'
342ifdef VBOX_WITH_DTRACE
343 $(QUIET)$(APPEND) -n "$@" \
344 '<Directory Id="dir_DTrace" Name="dtrace">' \
345 ' <Directory Id="dir_DTrace_lib" Name="lib">' \
346 ' <Directory Id="dir_DTrace_lib_arch" Name="$(KBUILD_TARGET_ARCH)">' \
347 ' <Component Id="cp_dir_DTrace_lib_arch" Guid="7476CDF6-4157-2E17-5CCC-FF92528D2854" Win64="$$(var.Property_Win64)">' \
348 $(foreach file, $(VBOXINST_DTRACE_LIB_ARCH_FILES) \
349 , ' <File Id="file_dtrace_lib_arch_$(subst -,_,$(file))" Name="$(file)" Vital="yes" ' \
350 ' Source="$(subst /,\,$(PATH_STAGE_BIN)/dtrace/lib/$(KBUILD_TARGET_ARCH)/$(file))" />' ) \
351 ' </Component>' \
352 ' </Directory>' \
353 ' </Directory>' \
354 $(if $(VBOXINST_DTRACE_TESTCASE_ARCH_FILES), \
355 ' <Directory Id="dir_DTrace_testcase" Name="testcase">' \
356 ' <Directory Id="dir_DTrace_testcase_arch" Name="$(KBUILD_TARGET_ARCH)">' \
357 ' <Component Id="cp_dir_DTrace_testcase_arch" Guid="45DF7014-4431-6C40-6DB0-35AF7C690EE1" Win64="$$(var.Property_Win64)">' \
358 $(foreach file, $(VBOXINST_DTRACE_TESTCASE_ARCH_FILES) \
359 , ' <File Id="file_dtrace_testcase_arch_$(subst -,_,$(file))" Name="$(file)" Vital="yes" ' \
360 ' Source="$(subst /,\,$(PATH_STAGE_BIN)/dtrace/testcase/$(KBUILD_TARGET_ARCH)/$(file))" />' ) \
361 ' </Component>' \
362 ' </Directory>' \
363 ' </Directory>') \
364 $(if $(VBOXINST_DTRACE_SCRIPTS_FILES), \
365 ' <Directory Id="dir_DTrace_scripts" Name="scripts">' \
366 ' <Component Id="cp_dir_DTrace_scripts" Guid="AE07F9D5-4FD9-ACC7-C760-E9923CE01E16" Win64="$$(var.Property_Win64)">' \
367 $(foreach file, $(VBOXINST_DTRACE_SCRIPTS_FILES) \
368 , ' <File Id="file_dtrace_scripts_$(subst -,_,$(file))" Name="$(file)" Vital="yes" ' \
369 ' Source="$(subst /,\,$(PATH_STAGE_BIN)/dtrace/scripts/$(file))" />' ) \
370 ' </Component>' \
371 ' </Directory>') \
372 '</Directory>'
373endif
374 $(QUIET)$(APPEND) "$@" '</Include>'
375
376
377$(VBOX_WIN_INST_OUT_DIR)/Shortcuts_StartMenu.wxi: $(VBOX_WIN_INST_MAKEFILE_DEP) | $$(dir $$@)
378 $(call MSG_GENERATE,,$@,$<)
379 $(APPEND) -t $@ '<?xml version="1.0" ?>'
380 $(APPEND) $@ '<Include xmlns="http://schemas.microsoft.com/wix/2006/wi">'
381 #
382 # Documentation (PDF/CHM)
383 #
384ifdef VBOX_WITH_DOCS_PACKING
385 $(APPEND) $@ ' <Shortcut Id="sc_StartMenu_ManualCHM_en_US" Directory="dir_StartMenuVBox" Name="!(loc.StartMenu_UserManual) (CHM, English)" Description="!(loc.StartMenu_UserManual)"' \
386 ' Target="[INSTALLDIR]\VirtualBox.chm" WorkingDirectory="dir_Documents" Advertise="no"/>'
387 $(APPEND) -n $@ $(foreach lang,$(VBOX_MANUAL_ADD_LANGUAGES), \
388 ' <Shortcut Id="sc_StartMenu_ManualCHM_$(lang)" Directory="dir_StartMenuVBox" Name="!(loc.StartMenu_UserManual) (CHM, $(VBOX_BRAND_$(lang)_LANG_NAME))"' \
389 ' Description="!(loc.StartMenu_UserManual) ($(VBOX_BRAND_$(lang)_LANG_NAME))" Target="[INSTALLDIR]\VirtualBox_$(lang).chm" WorkingDirectory="dir_Documents"/>')
390endif
391 $(APPEND) $@ ' <Shortcut Id="sc_StartMenu_ManualPDF_en_US" Directory="dir_StartMenuVBox" Name="!(loc.StartMenu_UserManual) (PDF, English)" Description="!(loc.StartMenu_UserManual)"' \
392 ' Target="[INSTALLDIR]\doc\UserManual.pdf" WorkingDirectory="dir_Documents" Advertise="no"/>'
393 $(APPEND) -n $@ $(foreach lang,$(VBOX_MANUAL_ADD_LANGUAGES), \
394 ' <Shortcut Id="sc_StartMenu_ManualPDF_$(lang)" Directory="dir_StartMenuVBox" Name="!(loc.StartMenu_UserManual) (PDF, $(VBOX_BRAND_$(lang)_LANG_NAME))"' \
395 ' Description="!(loc.StartMenu_UserManual) ($(VBOX_BRAND_$(lang)_LANG_NAME))" Target="[INSTALLDIR]\doc\UserManual_$(lang).pdf" WorkingDirectory="dir_Documents"/>')
396 #
397 # License(s) (RTF)
398 #
399 $(APPEND) $@ ' <Shortcut Id="sc_StartMenu_License_en_US" Directory="dir_StartMenuVBox" Name="!(loc.StartMenu_License) (English)" Description="!(loc.StartMenu_License)"' \
400 ' Target="[INSTALLDIR]License_en_US.rtf" WorkingDirectory="INSTALLDIR" Advertise="no"/>'
401 $(APPEND) -n $@ $(foreach lang,$(VBOX_LICENSE_ADD_LANGUAGES), \
402 ' <Shortcut Id="sc_StartMenu_License_$(lang)" Directory="dir_StartMenuVBox" Name="!(loc.StartMenu_License) ($(VBOX_BRAND_$(lang)_LANG_NAME))"' \
403 ' Description="!(loc.StartMenu_License) ($(VBOX_BRAND_$(lang)_LANG_NAME))" Target="License_$(lang).rtf" WorkingDirectory="INSTALLDIR"/>')
404 $(APPEND) $@ '</Include>'
405
406#
407# .MSI linking of the main installer (en_US).
408#
409# Note: This will clean up any previous .msi and .wixpdb files to prevent dep
410# build boxes from filling up with old files.
411#
412define def_vbox_link_msi
413$(VBOX_WIN_INST_OUT_DIR)/$(lang)/$(PACKAGE_NAME_LANG)_$(lang).msi \
414$(if-expr defined(VBOX_WITH_COMBINED_PACKAGE) && !defined(VBOX_WITH_MSM_INSTALL), + $(VBOX_WIN_INST_OUT_DIR)/common.cab,): \
415 $(VBOX_WIN_INST_OUT_DIR)/$(lang)/VirtualBox_$(lang).wixobj \
416 $(VBOX_WIN_INST_OUT_DIR)/NLS/Language_$(lang).wxl \
417 $(VBOX_WIN_INST_OUT_DIR)/NLS/License_$(lang).wxl \
418 $(PATH_STAGE_BIN)/VBoxInstallHelper.dll \
419 $(VBOX_SVN_REV_KMK) \
420 $(VBOX_WIN_INST_MAKEFILE_DEP) \
421 $(if-expr defined(VBOX_WITH_MSI_HACK),$(MsiHack_0_OUTDIR)/MsiHack.dll,) \
422 $(if-expr defined(VBOX_WITH_MSI_HACK),$(MsiHack_0_OUTDIR)/MsiHackExtension.dll,) \
423 | $$$$(dir $$$$@)
424 $$(call MSG_L1,Linking installer $$@)
425 $(QUIET)$(RM) -f $$(wildcard $$(subst r$$(VBOX_SVN_REV),r*,\
426 $$@ \
427 $$(basename $$@).wixpdb \
428 $$(VBOX_WIN_INST_REPACK_DIR)/2-link-$$(PACKAGE_NAME_LANG).cmd ))
429 kmk_time $(VBOX_PATH_WIX)/light.exe -v -nologo \
430 -loc $(VBOX_WIN_INST_OUT_DIR)/NLS/Language_$(lang).wxl \
431 -loc $(VBOX_WIN_INST_OUT_DIR)/NLS/License_$(lang).wxl \
432 -ext $(VBOX_PATH_WIX)/WixUIExtension.dll \
433 -ext $(VBOX_PATH_WIX)/WixDifxAppExtension.dll \
434 $(if-expr defined(VBOX_WITH_MSI_HACK),-ext $(MsiHack_0_OUTDIR)/MsiHackExtension.dll,) \
435 $(VBOX_MSI_ICE_IGNORE) \
436 -out $$@ \
437 $$< \
438 $(VBOX_PATH_WIX)/difxapp_$(if-expr "$(KBUILD_TARGET_ARCH)" == "x86",x86,x64).wixlib
439if defined(VBOX_WITH_COMBINED_PACKAGE) && !defined(VBOX_WITH_MSM_INSTALL)
440 $(MV) -f -- $$(@D)/common.cab $$(@D)/../common.cab
441endif
442ifeq ($(lang),en_US)
443 $(CP) -f -- "$(VBOX_WIN_INST_OUT_DIR)/NLS/Language_$(lang).wxl" "$(VBOX_WIN_INST_OUT_DIR)/NLS/License_$(lang).wxl" \
444 "$(VBOX_WIN_INST_REPACK_DIR)/files-VirtualBox_$(lang)/"
445# Create repack script for this step.
446 $(APPEND) -tn "$$(VBOX_WIN_INST_REPACK_DIR)/2-link-$$(PACKAGE_NAME_LANG).cmd" \
447 'if ".%KBUILD_DEVTOOLS%" == "." (echo KBUILD_DEVTOOLS is not set & exit /b1)' \
448 $(subst $(KBUILD_DEVTOOLS),%KBUILD_DEVTOOLS%,\
449 '$(VBOX_PATH_WIX)/light.exe -v -nologo ^' \
450 ' -loc files-VirtualBox_$(lang)/Language_$(lang).wxl ^' \
451 ' -loc files-VirtualBox_$(lang)/License_$(lang).wxl ^' \
452 ' -ext $(VBOX_PATH_WIX)/WixUIExtension.dll ^' \
453 ' -ext $(VBOX_PATH_WIX)/WixDifxAppExtension.dll ^' \
454 $(if-expr defined(VBOX_WITH_MSI_HACK),'-ext $(MsiHack_0_OUTDIR)/MsiHackExtension.dll ^',) \
455 ' $(VBOX_MSI_ICE_IGNORE) ^' \
456 ' -out $$(@F) ^' \
457 ' $$(<F) ^' \
458 ' $(VBOX_PATH_WIX)/difxapp_$(if-expr "$(KBUILD_TARGET_ARCH)" == "x86",x86,x64).wixlib ^' \
459 ' || exit /b1' \
460 ) \
461 '@echo Created MSI installer: $$(@F)' \
462 $(if-expr defined(VBOX_WITH_COMBINED_PACKAGE) && !defined(VBOX_WITH_MSM_INSTALL),'@echo Created: common.cab',)
463
464endif
465endef
466
467$(foreach lang, en_US, $(eval $(def_vbox_link_msi)))
468
469
470#
471# Merge module linking (all languages).
472#
473# Note: This will clean up any previous .msm to prevent dep build boxes from
474# filling up with old files.
475#
476define def_vbox_link_msm
477$(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang)_$(KBUILD_TARGET_ARCH).msm: \
478 $(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang).wixobj \
479 $(VBOX_WIN_INST_OUT_DIR)/NLS/Language_$(lang).wxl \
480 $(VBOX_WIN_INST_OUT_DIR)/NLS/License_$(lang).wxl \
481 $(PATH_STAGE_BIN)/VBoxInstallHelper.dll \
482 $(VBOX_SVN_REV_KMK) \
483 $(VBOX_WIN_INST_MAKEFILE_DEP) \
484 | $$$$(dir $$$$@)
485 $$(call MSG_L1,Linking installer $$@)
486 $(QUIET)$(RM) -f $$(wildcard $(VBOX_WIN_INST_OUT_DIR)/$(PACKAGE_BASE)-r*_$(lang).msi)
487 $(VBOX_PATH_WIX)/light.exe -v -nologo \
488 -loc $(VBOX_WIN_INST_OUT_DIR)/NLS/Language_$(lang).wxl \
489 -loc $(VBOX_WIN_INST_OUT_DIR)/NLS/License_$(lang).wxl \
490 -ext $(VBOX_PATH_WIX)/WixDifxAppExtension.dll \
491 $(VBOX_MSI_ICE_IGNORE) \
492 -out $$@ \
493 $$< \
494 $(VBOX_PATH_WIX)/difxapp_$(if-expr "$(KBUILD_TARGET_ARCH)" == "x86",x86,x64).wixlib
495 $(RM) -f $(VBOX_WIN_INST_OUT_DIR)/NLS/$(lang).mst
496 $(call VBOX_SIGN_FILE_FN,$$@,$(VBOX_PRODUCT) $(VBOX_VERSION_STRING)r$(VBOX_SVN_REV) ($(KBUILD_TARGET_ARCH)),,,disable-dual-signing)
497# Create repack script for this step.
498 $(APPEND) -tn "$$(VBOX_WIN_INST_REPACK_DIR)/2-link-VBoxMerge$(module)_$(lang).cmd" \
499 'if ".%KBUILD_DEVTOOLS%" == "." (echo KBUILD_DEVTOOLS is not set & exit /b1)' \
500 $(subst $(KBUILD_DEVTOOLS),%KBUILD_DEVTOOLS%,\
501 '$(VBOX_PATH_WIX)/light.exe -v -nologo ^' \
502 ' -loc files-VirtualBox_$(lang)/Language_$(lang).wxl ^' \
503 ' -loc files-VirtualBox_$(lang)/License_$(lang).wxl ^' \
504 ' -ext $(VBOX_PATH_WIX)/WixDifxAppExtension.dll ^' \
505 ' $(VBOX_MSI_ICE_IGNORE) ^' \
506 ' -out $$(@F) ^' \
507 ' $$(<F) ^' \
508 ' $(VBOX_PATH_WIX)/difxapp_$(if-expr "$(KBUILD_TARGET_ARCH)" == "x86",x86,x64).wixlib ^' \
509 ' || exit /b1' \
510 'call sign-sha1.cmd $$(@F) || exit /b1' \
511 ) \
512 '@echo Created MSM module: $$(@F)'
513endef
514
515$(if-expr defined(VBOX_WITH_MSM_INSTALL), \
516 $(foreach module,$(VBOX_INSTALLER_MERGE_MODULES), \
517 $(foreach lang,$(VBOX_INSTALLER_MERGE_LANGUAGES), \
518 $(eval $(def_vbox_link_msm)))),)
519
520
521#
522# Add dependencies that makes sure necessary bits gets built.
523# For combined packages we always use the .ISO from the amd64 build.
524#
525ifdef VBOX_WITH_COMBINED_PACKAGE
526 VBOX_MSI_DEPENDENCIES := \
527 $(if $(VBOX_WITH_ADDITIONS_PACKING),$(PATH_MULTIARCH_GUEST_ADDITIONS_ISO)/VBoxGuestAdditions.iso)
528else
529 VBOX_MSI_DEPENDENCIES := \
530 $(if $(VBOX_WITH_ADDITIONS_PACKING),$(VBOX_PATH_ADDITIONS_ISO)/VBoxGuestAdditions.iso)
531endif
532
533#
534# A few manual dependencies to make sure everything is rebuilt when they should.
535#
536$(PATH_SUB_CURRENT)/VirtualBox.wxs: \
537 $(PATH_SUB_CURRENT)/CommonProperties.wxi \
538 $(PATH_SUB_CURRENT)/Defines.wxi \
539 $(PATH_SUB_CURRENT)/VBoxMergeApp.wxi
540
541$(PATH_SUB_CURRENT)/VBoxMergeApp.wxi $(PATH_SUB_CURRENT)/VirtualBox.wxs: \
542 $(VBOX_WIN_INST_OUT_DIR)/Files_Doc.wxi \
543 $(VBOX_WIN_INST_OUT_DIR)/DirComponentsAndFiles_DTrace.wxi \
544 $(VBOX_WIN_INST_OUT_DIR)/Files_License.wxi \
545 $(VBOX_WIN_INST_OUT_DIR)/Files_Main.wxi \
546 $(VBOX_WIN_INST_OUT_DIR)/VBoxKey.wxi \
547 $(VBOX_WIN_INST_OUT_DIR)/VBoxGuiNLS.wxi \
548 $(VBOX_WIN_INST_OUT_DIR)/VirtualBox_TypeLib.wxi \
549 $(VBOX_WIN_INST_OUT_DIR)/VBoxUnattendedTemplateComponent.wxi
550
551#
552# MSI compile.
553# We've separated the processing from the compilation for repacking reasons.
554#
555define def_vbox_compile_wixobj
556includedep $(VBOX_WIN_INST_OUT_DIR)/$(lang)/VirtualBox_$(lang).wixobj.dep
557$(VBOX_WIN_INST_OUT_DIR)/$(lang)/VirtualBox_$(lang).wixobj \
558+ $(VBOX_WIN_INST_OUT_DIR)/$(lang)/VirtualBox_$(lang).wix \
559$(if-expr "$(lang)" != "en_US",, \
560+ $(VBOX_WIN_INST_REPACK_DIR)/VirtualBox_$(lang).wix $(VBOX_WIN_INST_REPACK_DIR)/VirtualBox_$(lang).files ): \
561 $(PATH_SUB_CURRENT)/VirtualBox.wxs \
562 $(PATH_SUB_CURRENT)/UserInterface.wxi \
563 $(if-expr defined(VBOX_WITH_MSM_INSTALL), \
564 $(foreach module,$(VBOX_INSTALLER_MERGE_MODULES), \
565 $(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang)_$(KBUILD_TARGET_ARCH).msm), \
566 $(VBOX_WIN_INST_OUT_DIR)/Shortcuts_StartMenu.wxi \
567 $(VBOX_WIN_INST_OUT_DIR)/VirtualBox_TypeLib.wxi \
568 $(if $(VBOX_WITH_32_ON_64_MAIN_API),$(VBOX_WIN_INST_OUT_DIR)/VirtualBox_TypeLib_x86.wxi,) \
569 $(VBOX_WIN_INST_OUT_DIR)/VBoxKey.wxi \
570 $(VBOX_WIN_INST_OUT_DIR)/VBoxUnattendedTemplateComponent.wxi \
571 $(if $(VBOX_WITH_QTGUI),$(VBOX_WIN_INST_OUT_DIR)/VBoxGuiNLS.wxi) \
572 $(VBOX_MSI_DEPENDENCIES)) \
573 $(VBOX_VERSION_STAMP) \
574 | $$$$(dir $$$$@) $(if-expr "$(lang)" != "en_US",, \
575 $(VBOX_WIN_INST_REPACK_DIR)/ $(VBOX_WIN_INST_REPACK_DIR)/files-VirtualBox_$(lang)/ )
576 $(QUIET)$(RM) -f -- "$$@" "$(VBOX_WIN_INST_OUT_DIR)/$(lang)/VirtualBox_$(lang).wix" "$(VBOX_WIN_INST_REPACK_DIR)/VirtualBox_$(lang).wix"
577 $(REDIRECT) \
578 -E 'PATH_OUT=$(subst /,\,$(PATH_OUT))' \
579 -E 'PATH_TARGET=$(subst /,\,$(VBOX_WIN_INST_OUT_DIR))' \
580 -E 'PATH_ROOT=$(subst /,\,$(PATH_ROOT))' \
581 -E 'PATH_MULTIARCH_GUEST_ADDITIONS_ISO=$(subst /,\,$(PATH_MULTIARCH_GUEST_ADDITIONS_ISO))' \
582 -E 'VBOX_PATH_WIN_INST_SRC=$(subst /,\,$(VBOX_PATH_WIN_INST_SRC))' \
583 -E 'VBOX_BRAND_WIN_INST_DLGJPG=$(subst /,\,$(VBOX_BRAND_WIN_INST_DLGJPG))' \
584 -E 'VBOX_ADD_LANGUAGES=$(VBOX_INSTALLER_ADD_LANGUAGES)' \
585 -E 'VBOX_BRAND_LICENSE_RTF=$(subst /,\,$(VBOX_BRAND_LICENSE_RTF))' \
586 $(foreach lang,$(VBOX_INSTALLER_LANGUAGES), \
587 -E 'VBOX_BRAND_$(lang)_LICENSE_RTF=$(subst /,\,$(VBOX_BRAND_$(subst en_US_,,$(lang)_)LICENSE_RTF))') \
588 -E 'VBOX_BUILD_NR_FOR_INST=$(VBOX_VERSION_BUILD)' \
589 -E 'VBOX_VENDOR=$(VBOX_VENDOR)' \
590 -E 'VBOX_VENDOR_SHORT=$(VBOX_VENDOR_SHORT)' \
591 -E 'VBOX_PRODUCT=$(VBOX_PRODUCT)' \
592 -E 'VBOX_C_YEAR=$(VBOX_C_YEAR)' \
593 -E 'VBOX_VERSION_STRING=$(VBOX_VERSION_STRING)' \
594 -E 'VBOX_VERSION_STRING_RAW=$(VBOX_VERSION_STRING_RAW)' \
595 -E 'VBOX_VERSION_MAJOR_INST=$(VBOX_VERSION_MAJOR)' \
596 -E 'VBOX_VERSION_MINOR_INST=$(VBOX_VERSION_MINOR)' \
597 -E 'VBOX_SIGNING_MODE=$(strip $(if $(VBOX_SIGNING_MODE),$(VBOX_SIGNING_MODE),none))' \
598 -E 'VBOX_CAB_COMPRESSION_LEVEL=$(if-expr $(lang) == "en_US",$(VBOX_CAB_COMPRESSION_LEVEL),none)' \
599 -E 'VBOX_CAB_COMPRESSION_LEVEL_COMMON=$(if-expr $(lang) == "en_US" && $(KBUILD_TARGET_ARCH) == "amd64",$(VBOX_CAB_COMPRESSION_LEVEL),none)' \
600 -E 'VBOX_GUI_USE_QGL=$(if $(VBOX_GUI_USE_QGL),yes,no)' \
601 -E 'VBOX_MIDL_PROXY_CLSID=$(VBOX_MIDL_PROXY_CLSID)' \
602 $(if-expr defined(VBOX_WITH_MSM_INSTALL), \
603 $(foreach module,$(VBOX_INSTALLER_MERGE_MODULES), \
604 -E 'VBOX_WIN_INST_MERGE_$(toupper $(module))=$(subst /,\,$(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang)_$(KBUILD_TARGET_ARCH).msm')),) \
605 -E 'VBOX_WINDOWS_ICON_FILE=$(subst /,\,$(VBOX_WINDOWS_ICON_FILE))' \
606 -E 'VBOX_QT_INFIX=$(VBOX_QT_INFIX)' \
607 -E 'VBOX_WITH_32_ON_64_MAIN_API=$(if $(VBOX_WITH_32_ON_64_MAIN_API),yes,no)' \
608 -E 'VBOX_WITH_ADDITIONS_PACKING=$(if $(VBOX_WITH_ADDITIONS_PACKING),yes,no)' \
609 -E 'VBOX_WITH_COMBINED_PACKAGE=$(if-expr defined(VBOX_WITH_COMBINED_PACKAGE),yes,no)' \
610 -E 'VBOX_WITH_DEBUGGER_GUI=$(if-expr defined(VBOX_WITH_DEBUGGER_GUI) && defined(VBOX_WITH_QTGUI),yes,no)' \
611 -E 'VBOX_WITH_DOCS_PACKING=$(if $(VBOX_WITH_DOCS_PACKING),yes,no)' \
612 -E 'VBOX_WITH_DRAG_AND_DROP=$(if $(VBOX_WITH_DRAG_AND_DROP),yes,no)' \
613 -E 'VBOX_WITH_DTRACE=$(if $(VBOX_WITH_DTRACE),yes,no)' \
614 -E 'VBOX_WITH_EFIFW_PACKING=$(if $(VBOX_WITH_EFIFW_PACKING),yes,no)' \
615 -E 'VBOX_WITH_EXTPACK=$(if $(VBOX_WITH_EXTPACK),yes,no)' \
616 -E 'VBOX_WITH_GUEST_CONTROL=$(if $(VBOX_WITH_GUEST_CONTROL),yes,no)' \
617 -E 'VBOX_WITH_GUEST_PROPS=$(if $(VBOX_WITH_GUEST_PROPS),yes,no)' \
618 -E 'VBOX_WITH_HARDENING=$(if $(VBOX_WITH_HARDENING),yes,no)' \
619 -E 'VBOX_WITH_LICENSE_DISPLAY=$(if $(VBOX_WITH_LICENSE_DISPLAY),yes,no)' \
620 -E 'VBOX_WITH_MIDL_PROXY_STUB=$(if $(VBOX_WITH_MIDL_PROXY_STUB),yes,no)' \
621 -E 'VBOX_WITH_MSM_INSTALL=$(if-expr defined(VBOX_WITH_MSM_INSTALL),yes,no)' \
622 -E 'VBOX_WITH_NETFLT=$(if $(VBOX_WITH_NETFLT),yes,no)' \
623 -E 'VBOX_WITH_PYTHON=$(if $(VBOX_WITH_PYTHON),yes,no)' \
624 -E 'VBOX_WITH_RAW_MODE=$(if $(VBOX_WITH_RAW_MODE),yes,no)' \
625 -E 'VBOX_WITH_QTGUI=$(if $(VBOX_WITH_QTGUI),yes,no)' \
626 -E 'VBOX_WITH_SECURELABEL=$(if $(VBOX_WITH_SECURELABEL),yes,no)' \
627 -E 'VBOX_WITH_SERIALNUMBER_INSTALL=$(if $(VBOX_WITH_SERIALNUMBER_INSTALL),yes,no)' \
628 -E 'VBOX_WITH_VIDEOHWACCEL=$(if $(VBOX_WITH_VIDEOHWACCEL),yes,no)' \
629 -E 'VBOX_WITH_VRDP=$(if-expr defined(VBOX_WITH_VRDP) && !defined(VBOX_WITH_EXTPACK_PUEL),yes,no)' \
630 -E 'VBOX_WITH_WEBSERVICES=$(if $(VBOX_WITH_WEBSERVICES),yes,no)' \
631 -E 'VBOX_WITH_SDS=$(if $(VBOX_WITH_SDS),yes,no)' \
632 -E 'VBOX_WITH_UNATTENDED=$(if $(VBOX_WITH_UNATTENDED),yes,no)' \
633 -E 'VBOX_WITH_VBOX_IMG=$(if $(VBOX_WITH_VBOX_IMG),yes,no)' \
634 -E 'BUILD_TYPE=$(KBUILD_TYPE)' \
635 -E 'BUILD_TARGET_ARCH=$(KBUILD_TARGET_ARCH)' \
636 -E 'VBOX_VCC_TOOL_STEM=$(VBOX_VCC_TOOL_STEM)' \
637 -- \
638 $(VBOX_PATH_WIX)/candle.exe $(filter-out $(VBOX_VERSION_STAMP),$$<) \
639 -ext $(VBOX_PATH_WIX)/WixUIExtension.dll \
640 -ext $(VBOX_PATH_WIX)/WixDifxAppExtension.dll \
641 -p$(VBOX_WIN_INST_OUT_DIR)/$(lang)/VirtualBox_$(lang).wix
642 $(VBOX_PATH_WIX)/candle.exe $(VBOX_WIN_INST_OUT_DIR)/$(lang)/VirtualBox_$(lang).wix \
643 -ext $(VBOX_PATH_WIX)/WixUIExtension.dll \
644 -ext $(VBOX_PATH_WIX)/WixDifxAppExtension.dll \
645 -out $$@
646 ifeq ($(lang),en_US)
647# Copy preprocessed wix and change source paths to be relative. Stuff not in ../bin needs copying.
648 $(SED) -e 's,$(subst /,\\,$(PATH_OUT))\\bin,..\\bin,g' \
649 -e 's,$(subst /,\\,$(PATH_OUT_BASE))\\win.amd64\\$(KBUILD_TYPE)\\bin,..\\..\\..\\win.amd64\\$(KBUILD_TYPE)\\bin,g' \
650 -e 's,$(subst /,\\,$(PATH_OUT_BASE))\\win.x86\\$(KBUILD_TYPE)\\bin,..\\..\\..\\win.x86\\$(KBUILD_TYPE)\\bin,g' \
651 \
652 -e 's,$(subst /,\\,$(PATH_ROOT))\\doc\\,files-VirtualBox_$(lang)\\,g' \
653 -e 's,$(subst /,\\,$(VBOX_PATH_WIN_INST_SRC))\\Binary\\,files-VirtualBox_$(lang)\\,g' \
654 -e 's,$(subst /,\\,$(VBOX_WIN_INST_OUT_DIR))\\,,g' \
655 -e 's,$(subst /,\\,$(dir $(VBOX_WINDOWS_ICON_FILE))),files-VirtualBox_$(lang)\\,g' \
656 --output "$(VBOX_WIN_INST_REPACK_DIR)/VirtualBox_$(lang).wix" \
657 "$(VBOX_WIN_INST_OUT_DIR)/$(lang)/VirtualBox_$(lang).wix"
658 $(SED) -n \
659 -e '/<\?ln /d' \
660 -e '/$(subst /,\\,$(PATH_ROOT))/p' \
661 -e '/$(subst /,\\,$(PATH_ROOT))/q2' \
662 "$(VBOX_WIN_INST_REPACK_DIR)/VirtualBox_$(lang).wix"
663 $(SED) -n \
664 -e '/<\?ln /d' \
665 -e 's/\\/\//g' \
666 -e 's,^.*"\($(PATH_ROOT)/doc/[^"]*\)".*$$(DOLLAR),\1,p' \
667 -e 's,^.*"\($(VBOX_PATH_WIN_INST_SRC)/Binary/[^"]*\)".*$$(DOLLAR),\1,p' \
668 -e 's,^.*"\($(dir $(VBOX_WINDOWS_ICON_FILE))[^"]*\)".*$$(DOLLAR),\1,p' \
669 --output "$(VBOX_WIN_INST_REPACK_DIR)/VirtualBox_$(lang).files" \
670 "$(VBOX_WIN_INST_OUT_DIR)/$(lang)/VirtualBox_$(lang).wix"
671 set -xe && for file in `$(CAT_EXT) "$(VBOX_WIN_INST_REPACK_DIR)/VirtualBox_$(lang).files"`; \
672 do $(CP_EXT) -f -- "$$(DOLLAR){file}" "$(VBOX_WIN_INST_REPACK_DIR)/files-VirtualBox_$(lang)/"; done
673# Create repack script for this step.
674 $(APPEND) -tn "$(VBOX_WIN_INST_REPACK_DIR)/1-compile-VirtualBox_$(lang).cmd" \
675 'if ".%KBUILD_DEVTOOLS%" == "." (echo KBUILD_DEVTOOLS is not set & exit /b1)' \
676 $(subst $(KBUILD_DEVTOOLS),%KBUILD_DEVTOOLS%,\
677 '$(VBOX_PATH_WIX)/candle.exe VirtualBox_$(lang).wix ^' \
678 ' -ext $(VBOX_PATH_WIX)/WixUIExtension.dll ^' \
679 ' -ext $(VBOX_PATH_WIX)/WixDifxAppExtension.dll ^' \
680 ' -out $$(@F) || exit /b1' \
681 ) \
682 '@echo Created: $$(@F)'
683 endif
684# Generate wxi dependencies based on the sourceLineNumber references in the output. Add repack file list for cleanup.
685 $(QUIET)$(APPEND) -t '[email protected]' '$$@: \'
686 $(QUIET)$(VBOX_XSLTPROC) $(VBOX_PATH_WIN_INST_SRC)/dep.xsl "$$@" >> "[email protected]"
687 $(QUIET)$(VBOX_XSLTPROC) $(VBOX_PATH_WIN_INST_SRC)/dep2.xsl "$$@" | sort | $(SED) '$!N; /^\(.*\)\n\1$$$$/!P; D' >> "[email protected]"
688 $(QUIET)$(APPEND) -n '[email protected]' '' ''
689 ifeq ($(lang),en_US)
690 $(QUIET)$(APPEND) -n '[email protected]' 'define VBOX_REPACK_FILES_VirtualBox_$(lang)'
691 $(QUIET)$(CAT_EXT) "$(VBOX_WIN_INST_REPACK_DIR)/VirtualBox_$(lang).files" >> '[email protected]'
692 $(QUIET)$(APPEND) -n '[email protected]' '' 'endef'
693 endif
694
695$(eval OTHER_CLEAN += $(VBOX_REPACK_FILES_VirtualBox_$(lang)))
696endef
697
698$(foreach lang,$(VBOX_INSTALLER_LANGUAGES), \
699 $(eval $(def_vbox_compile_wixobj)))
700
701#
702# MSM (merge module) compile.
703#
704define def_vbox_compile_msm
705includedep $(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang).wixobj.dep
706$(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang).wixobj \
707+ $(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang).wix \
708$(if-expr "$(lang)" != "en_US",, \
709+ $(VBOX_WIN_INST_REPACK_DIR)/VBoxMerge$(module)_$(lang).wix): \
710 $(PATH_SUB_CURRENT)/VBoxMerge$(module).wxs \
711 $(PATH_SUB_CURRENT)/VBoxMerge$(module).wxi \
712 $(PATH_SUB_CURRENT)/VBoxMerge$(module)CA.wxi \
713 $(PATH_SUB_CURRENT)/VBoxMerge$(module)Seq.wxi \
714 $(PATH_SUB_CURRENT)/UserInterface.wxi \
715 $(VBOX_WIN_INST_OUT_DIR)/Shortcuts_StartMenu.wxi \
716 $(VBOX_WIN_INST_OUT_DIR)/VirtualBox_TypeLib.wxi \
717 $(if $(VBOX_WITH_32_ON_64_MAIN_API),$(VBOX_WIN_INST_OUT_DIR)/VirtualBox_TypeLib_x86.wxi,) \
718 $(VBOX_WIN_INST_OUT_DIR)/VBoxKey.wxi \
719 $(VBOX_WIN_INST_OUT_DIR)/VBoxUnattendedTemplateComponent.wxi \
720 $(if $(VBOX_WITH_QTGUI),$(VBOX_WIN_INST_OUT_DIR)/VBoxGuiNLS.wxi) \
721 $(VBOX_MSI_DEPENDENCIES) \
722 $(VBOX_VERSION_STAMP) \
723 | $$$$(dir $$$$@) $(VBOX_WIN_INST_REPACK_DIR)/
724 $(QUIET)$(RM) -f -- "$$@" "$(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang).wix" "$(VBOX_WIN_INST_REPACK_DIR)/VBoxMerge$(module)_$(lang).wix"
725 $(REDIRECT) \
726 -E 'PATH_OUT=$(subst /,\,$(PATH_OUT))' \
727 -E 'PATH_TARGET=$(subst /,\,$(VBOX_WIN_INST_OUT_DIR))' \
728 -E 'PATH_ROOT=$(subst /,\,$(PATH_ROOT))' \
729 -E 'PATH_MULTIARCH_GUEST_ADDITIONS_ISO=$(subst /,\,$(PATH_MULTIARCH_GUEST_ADDITIONS_ISO))' \
730 -E 'VBOX_PATH_WIN_INST_SRC=$(subst /,\,$(VBOX_PATH_WIN_INST_SRC))' \
731 -E 'VBOX_BRAND_WIN_INST_DLGJPG=$(subst /,\,$(VBOX_BRAND_WIN_INST_DLGJPG))' \
732 -E 'VBOX_ADD_LANGUAGES=$(VBOX_INSTALLER_ADD_LANGUAGES)' \
733 -E 'VBOX_BRAND_LICENSE_RTF=$(subst /,\,$(VBOX_BRAND_LICENSE_RTF))' \
734 $(foreach lang,$(VBOX_INSTALLER_LANGUAGES), \
735 -E 'VBOX_BRAND_$(lang)_LICENSE_RTF=$(subst /,\,$(VBOX_BRAND_$(subst en_US_,,$(lang)_)LICENSE_RTF))') \
736 -E 'VBOX_BUILD_NR_FOR_INST=$(VBOX_VERSION_BUILD)' \
737 -E 'VBOX_VENDOR=$(VBOX_VENDOR)' \
738 -E 'VBOX_VENDOR_SHORT=$(VBOX_VENDOR_SHORT)' \
739 -E 'VBOX_PRODUCT=$(VBOX_PRODUCT)' \
740 -E 'VBOX_C_YEAR=$(VBOX_C_YEAR)' \
741 -E 'VBOX_VERSION_STRING=$(VBOX_VERSION_STRING)' \
742 -E 'VBOX_VERSION_STRING_RAW=$(VBOX_VERSION_STRING_RAW)' \
743 -E 'VBOX_VERSION_MAJOR_INST=$(VBOX_VERSION_MAJOR)' \
744 -E 'VBOX_VERSION_MINOR_INST=$(VBOX_VERSION_MINOR)' \
745 -E 'VBOX_SIGNING_MODE=$(strip $(if $(VBOX_SIGNING_MODE),$(VBOX_SIGNING_MODE),none))' \
746 -E 'VBOX_CAB_COMPRESSION_LEVEL=$(VBOX_CAB_COMPRESSION_LEVEL)' \
747 -E 'VBOX_CAB_COMPRESSION_LEVEL_COMMON=$(VBOX_CAB_COMPRESSION_LEVEL)' \
748 -E 'VBOX_GUI_USE_QGL=$(if $(VBOX_GUI_USE_QGL),yes,no)' \
749 -E 'VBOX_MIDL_PROXY_CLSID=$(VBOX_MIDL_PROXY_CLSID)' \
750 -E 'VBOX_WINDOWS_ICON_FILE=$(subst /,\,$(VBOX_WINDOWS_ICON_FILE))' \
751 -E 'VBOX_QT_INFIX=$(VBOX_QT_INFIX)' \
752 -E 'VBOX_WITH_32_ON_64_MAIN_API=$(if $(VBOX_WITH_32_ON_64_MAIN_API),yes,no)' \
753 -E 'VBOX_WITH_ADDITIONS_PACKING=$(if $(VBOX_WITH_ADDITIONS_PACKING),yes,no)' \
754 -E 'VBOX_WITH_COMBINED_PACKAGE=$(if-expr defined(VBOX_WITH_COMBINED_PACKAGE),yes,no)' \
755 -E 'VBOX_WITH_DEBUGGER_GUI=$(if-expr defined(VBOX_WITH_DEBUGGER_GUI) && defined(VBOX_WITH_QTGUI),yes,no)' \
756 -E 'VBOX_WITH_DOCS_PACKING=$(if $(VBOX_WITH_DOCS_PACKING),yes,no)' \
757 -E 'VBOX_WITH_DRAG_AND_DROP=$(if $(VBOX_WITH_DRAG_AND_DROP),yes,no)' \
758 -E 'VBOX_WITH_DTRACE=$(if $(VBOX_WITH_DTRACE),yes,no)' \
759 -E 'VBOX_WITH_EFIFW_PACKING=$(if $(VBOX_WITH_EFIFW_PACKING),yes,no)' \
760 -E 'VBOX_WITH_EXTPACK=$(if $(VBOX_WITH_EXTPACK),yes,no)' \
761 -E 'VBOX_WITH_GUEST_CONTROL=$(if $(VBOX_WITH_GUEST_CONTROL),yes,no)' \
762 -E 'VBOX_WITH_GUEST_PROPS=$(if $(VBOX_WITH_GUEST_PROPS),yes,no)' \
763 -E 'VBOX_WITH_HARDENING=$(if $(VBOX_WITH_HARDENING),yes,no)' \
764 -E 'VBOX_WITH_LICENSE_DISPLAY=$(if $(VBOX_WITH_LICENSE_DISPLAY),yes,no)' \
765 -E 'VBOX_WITH_MIDL_PROXY_STUB=$(if $(VBOX_WITH_MIDL_PROXY_STUB),yes,no)' \
766 -E 'VBOX_WITH_MSM_INSTALL=$(if-expr defined(VBOX_WITH_MSM_INSTALL),yes,no)' \
767 -E 'VBOX_WITH_NETFLT=$(if $(VBOX_WITH_NETFLT),yes,no)' \
768 -E 'VBOX_WITH_PYTHON=$(if $(VBOX_WITH_PYTHON),yes,no)' \
769 -E 'VBOX_WITH_RAW_MODE=$(if $(VBOX_WITH_RAW_MODE),yes,no)' \
770 -E 'VBOX_WITH_QTGUI=$(if $(VBOX_WITH_QTGUI),yes,no)' \
771 -E 'VBOX_WITH_SECURELABEL=$(if $(VBOX_WITH_SECURELABEL),yes,no)' \
772 -E 'VBOX_WITH_SERIALNUMBER_INSTALL=$(if $(VBOX_WITH_SERIALNUMBER_INSTALL),yes,no)' \
773 -E 'VBOX_WITH_VIDEOHWACCEL=$(if $(VBOX_WITH_VIDEOHWACCEL),yes,no)' \
774 -E 'VBOX_WITH_VRDP=$(if-expr defined(VBOX_WITH_VRDP) && !defined(VBOX_WITH_EXTPACK_PUEL),yes,no)' \
775 -E 'VBOX_WITH_WEBSERVICES=$(if $(VBOX_WITH_WEBSERVICES),yes,no)' \
776 -E 'VBOX_WITH_SDS=$(if $(VBOX_WITH_SDS),yes,no)' \
777 -E 'VBOX_WITH_UNATTENDED=$(if $(VBOX_WITH_UNATTENDED),yes,no)' \
778 -E 'BUILD_TYPE=$(KBUILD_TYPE)' \
779 -E 'BUILD_TARGET_ARCH=$(KBUILD_TARGET_ARCH)' \
780 -E 'VBOX_VCC_TOOL_STEM=$(VBOX_VCC_TOOL_STEM)' \
781 -- \
782 $(VBOX_PATH_WIX)/candle.exe $(filter-out $(VBOX_VERSION_STAMP),$$<) \
783 -ext $(VBOX_PATH_WIX)/WixUIExtension.dll \
784 -ext $(VBOX_PATH_WIX)/WixDifxAppExtension.dll \
785 -p$(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang).wix
786 $(VBOX_PATH_WIX)/candle.exe $(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang).wix \
787 -ext $(VBOX_PATH_WIX)/WixUIExtension.dll \
788 -ext $(VBOX_PATH_WIX)/WixDifxAppExtension.dll \
789 -out $$@
790 ifeq ($(lang),en_US)
791# Copy preprocessed wix and change source paths to be relative. Stuff not in ../bin needs copying.
792 $(SED) -e 's,$(subst /,\\,$(PATH_OUT))\\bin,..\\bin,g' \
793 -e 's,$(subst /,\\,$(PATH_OUT_BASE))\\win.amd64\\$(KBUILD_TYPE)\\bin,..\\..\\..\\win.amd64\\$(KBUILD_TYPE)\\bin,g' \
794 -e 's,$(subst /,\\,$(PATH_OUT_BASE))\\win.x86\\$(KBUILD_TYPE)\\bin,..\\..\\..\\win.x86\\$(KBUILD_TYPE)\\bin,g' \
795 -e 's,$(subst /,\\,$(PATH_ROOT))\\doc\\,files-VBoxMerge$(module)_$(lang)\\,g' \
796 -e 's,$(subst /,\\,$(VBOX_PATH_WIN_INST_SRC))\\Binary\\,files-VBoxMerge$(module)_$(lang)\\,g' \
797 -e 's,$(subst /,\\,$(dir $(VBOX_WINDOWS_ICON_FILE))),files-VBoxMerge$(module)_$(lang)\\,g' \
798 -e 's,$(subst /,\\,$(VBOX_PATH_WIN_INST_SRC))\\,,g' \
799 --output "$(VBOX_WIN_INST_REPACK_DIR)/VBoxMerge$(module)_$(lang).wix" \
800 "$(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang).wix"
801 $(SED) -n \
802 -e '/<\?ln /d' \
803 -e '/$(subst /,\\,$(PATH_ROOT))/p' \
804 -e '/$(subst /,\\,$(PATH_ROOT))/q2' \
805 "$(VBOX_WIN_INST_REPACK_DIR)/VBoxMerge$(module)_$(lang).wix"
806 $(SED) -n \
807 -e '/<\?ln /d' \
808 -e 's/\\/\//g' \
809 -e 's,^.*"\($(PATH_ROOT)/doc/[^"]*\)".*$$(DOLLAR),\1,p' \
810 -e 's,^.*"\($(VBOX_PATH_WIN_INST_SRC)/Binary/[^"]*\)".*$$(DOLLAR),\1,p' \
811 -e 's,^.*"\($(dir $(VBOX_WINDOWS_ICON_FILE))[^"]*\)".*$$(DOLLAR),\1,p' \
812 --output "$(VBOX_WIN_INST_REPACK_DIR)/VBoxMerge$(module)_$(lang).files" \
813 "$(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang).wix"
814 $(MKDIR) -p -- "$(VBOX_WIN_INST_REPACK_DIR)/files-VBoxMerge$(module)_$(lang)/"
815 set -xe && for file in `$(CAT_EXT) "$(VBOX_WIN_INST_REPACK_DIR)/VBoxMerge$(module)_$(lang).files"`; \
816 do $(CP_EXT) -f -- "$$(DOLLAR){file}" "$(VBOX_WIN_INST_REPACK_DIR)/files-VBoxMerge$(module)_$(lang)/"; done
817# Create repack script for this step.
818 $(APPEND) -tn "$(VBOX_WIN_INST_REPACK_DIR)/1-compile-VBoxMerge$(module)_$(lang).cmd" \
819 'if ".%KBUILD_DEVTOOLS%" == "." (echo KBUILD_DEVTOOLS is not set & exit /b1)' \
820 $(subst $(KBUILD_DEVTOOLS),%KBUILD_DEVTOOLS%,\
821 '$(VBOX_PATH_WIX)/candle.exe VBoxMerge$(module)_$(lang).wix ^' \
822 ' -ext $(VBOX_PATH_WIX)/WixUIExtension.dll ^'\
823 ' -ext $(VBOX_PATH_WIX)/WixDifxAppExtension.dll ^' \
824 ' -out $$(@F) || exit /b1' \
825 ) \
826 '@echo Created: $$(@F)'
827 endif
828# Generate wxi dependencies based on the sourceLineNumber references in the output. Add repack file list for cleanup.
829 $(QUIET)$(APPEND) -t '[email protected]' '$$@: \'
830 $(QUIET)$(VBOX_XSLTPROC) $(VBOX_PATH_WIN_INST_SRC)/dep.xsl "$$@" >> "[email protected]"
831 $(QUIET)$(VBOX_XSLTPROC) $(VBOX_PATH_WIN_INST_SRC)/dep2.xsl "$$@" | sort | $(SED) '$!N; /^\(.*\)\n\1$$$$/!P; D' >> "[email protected]"
832 $(QUIET)$(APPEND) -n '[email protected]' '' ''
833 ifeq ($(lang),en_US)
834 $(QUIET)$(APPEND) -n '[email protected]' 'define VBOX_REPACK_FILES_VBoxMerge$(module)_$(lang)'
835 $(QUIET)$(CAT_EXT) "$(VBOX_WIN_INST_REPACK_DIR)/VBoxMerge$(module)_$(lang).files" >> '[email protected]'
836 $(QUIET)$(APPEND) -n '[email protected]' '' 'endef'
837 endif
838
839$(eval OTHER_CLEAN += $(VBOX_REPACK_FILES_VBoxMerge$(module)_$(lang)))
840endef
841
842$(foreach module,$(VBOX_INSTALLER_MERGE_MODULES), \
843 $(foreach lang,$(VBOX_INSTALLER_MERGE_LANGUAGES), \
844 $(eval $(def_vbox_compile_msm))))
845
846#
847# VirtualBox Type Library definition.
848#
849$(VBOX_WIN_INST_OUT_DIR)/VirtualBox_TypeLib.wxi: \
850 $(PATH_SUB_CURRENT)/$(if-expr defined(VBOX_WITH_MIDL_PROXY_STUB),VirtualBox_TypeLibWithInterfaces.xsl,VirtualBox_TypeLib.xsl) \
851 $(VBOX_XIDL_FILE) \
852 $(MAKEFILE) \
853 | $$(dir $$@)
854 $(VBOX_XSLTPROC) \
855 $(if-expr defined(VBOX_WITH_MIDL_PROXY_STUB),--stringparam "a_sProxyStubClsid" "$(VBOX_MIDL_PROXY_CLSID)",) \
856 $(if-expr defined(VBOX_WITH_SDS),--stringparam "a_sWithSDS" "yes",) \
857 -o $@ $< $(VBOX_XIDL_FILE)
858
859$(VBOX_WIN_INST_OUT_DIR)/VirtualBox_TypeLib_x86.wxi: \
860 $(PATH_SUB_CURRENT)/$(if-expr defined(VBOX_WITH_MIDL_PROXY_STUB),VirtualBox_TypeLibWithInterfaces.xsl,VirtualBox_TypeLib.xsl) \
861 $(VBOX_XIDL_FILE) \
862 | $$(dir $$@)
863 $(VBOX_XSLTPROC) --stringparam "a_sTarget" "VBoxClient-x86" \
864 $(if-expr defined(VBOX_WITH_MIDL_PROXY_STUB),--stringparam "a_sProxyStubClsid" "$(VBOX_MIDL_PROXY_CLSID)",) \
865 $(if-expr defined(VBOX_WITH_SDS),--stringparam "a_sWithSDS" "yes",) \
866 -o $@ $< $(VBOX_XIDL_FILE)
867
868#
869# Construct the list of GUI translations.
870# ('-t' -- truncate file; '-n' -- new line between arguments)
871#
872include $(PATH_ROOT)/src/VBox/Frontends/VirtualBox/nls/ApprovedLanguages.kmk
873$(call KB_FN_AUTO_CMD_DEPS,$(VBOX_WIN_INST_OUT_DIR)/VBoxGuiNLS.wxi)
874$(VBOX_WIN_INST_OUT_DIR)/VBoxGuiNLS.wxi: $(PATH_ROOT)/src/VBox/Frontends/VirtualBox/nls/ApprovedLanguages.kmk | $$(dir $$@)
875 $(APPEND) -t $@ '<?xml version="1.0" ?>'
876 $(APPEND) $@ '<Include>'
877 $(APPEND) -n $@ $(foreach lang,$(VBOX_APPROVED_GUI_LANGUAGES), \
878 ' <File Id="nlsqt${lang}" Name="qt_${lang}.qm" DiskId="$(VBOX_INSTALLER_COMMON_DISKID)" Vital="yes" Source="$$(env.PATH_OUT)\bin\nls\qt_${lang}.qm" />' \
879 ' <File Id="nlsgui${lang}" Name="VirtualBox_${lang}.qm" DiskId="$(VBOX_INSTALLER_COMMON_DISKID)" Vital="yes" Source="$$(env.PATH_OUT)\bin\nls\VirtualBox_${lang}.qm" />')
880 $(APPEND) $@ '</Include>'
881
882#
883# Edit the version stored in the registry.
884#
885$(call KB_FN_AUTO_CMD_DEPS,$(VBOX_WIN_INST_OUT_DIR)/VBoxKey.wxi)
886$(VBOX_WIN_INST_OUT_DIR)/VBoxKey.wxi: $(PATH_SUB_CURRENT)/VBoxKey.wxi $(VBOX_VERSION_STAMP) | $$(dir $$@)
887 $(SED) -e 's/%VER%/$(VBOX_VERSION_STRING_RAW)/' \
888 -e 's/%VER_EXT%/$(VBOX_VERSION_STRING)/' \
889 --output $@ $<
890
891#
892# Generate the list of unattended template script files.
893#
894$(call KB_FN_AUTO_CMD_DEPS,$(VBOX_WIN_INST_OUT_DIR)/VBoxUnattendedTemplateComponent.wxi)
895$(VBOX_WIN_INST_OUT_DIR)/VBoxUnattendedTemplateComponent.wxi: | $$(dir $$@)
896 $(APPEND) -t -n $@ \
897 '<?xml version="1.0" ?>' \
898 '<Include>'
899ifdef VBOX_UNATTENDED_TEMPLATES
900 $(APPEND) -n $@ \
901 ' <Directory Id="dir_VBoxUnattendedTemplates" Name="UnattendedTemplates">' \
902 ' <Component Id="cp_UnattendedTemplates" Guid="0571550d-aaa5-4723-c17b-5ddcc29f5686" Win64="$$(var.Property_Win64)">' \
903 $(foreach file,$(VBOX_UNATTENDED_TEMPLATES), \
904 ' <File Id="$(file)" Name="$(file)" Source="$$(env.PATH_OUT)\bin\UnattendedTemplates\$(file)" />') \
905 ' </Component>' \
906 ' </Directory>'
907endif
908 $(APPEND) $@ '</Include>'
909
910
911#
912# Build the multi-language version of the .MSI installer (final installer).
913#
914# This is done by creating binary .MST diffs of all the language-specific installers
915# against the en_US one, and then merging the diffs into the en_US one using tools
916# from the MS Installer SDK.
917#
918define def_vbox_create_mst
919$(VBOX_WIN_INST_OUT_DIR)/$(lang)/$(lang).mst \
920+ $(VBOX_WIN_INST_REPACK_DIR)/$(lang).mst: \
921 $(VBOX_WIN_INST_OUT_DIR)/en_US/$(PACKAGE_NAME_LANG)_en_US.msi \
922 $(VBOX_WIN_INST_OUT_DIR)/$(lang)/VirtualBox_$(lang).wixobj \
923 $(VBOX_WIN_INST_OUT_DIR)/NLS/Language_$(lang).wxl \
924 $(VBOX_WIN_INST_OUT_DIR)/NLS/License_$(lang).wxl \
925 $(PATH_STAGE_BIN)/VBoxInstallHelper.dll \
926 $(VBOX_SVN_REV_KMK) \
927 $(VBOX_WIN_INST_MAKEFILE_DEP) \
928 $(if-expr defined(VBOX_WITH_MSI_HACK),$(MsiHack_0_OUTDIR)/MsiHack.dll,) \
929 $(if-expr defined(VBOX_WITH_MSI_HACK),$(MsiHack_0_OUTDIR)/MsiHackExtension.dll,) \
930 | $$$$(dir $$$$@) $(VBOX_WIN_INST_REPACK_DIR)/
931 $(call MSG_L1,Creating language diff for $(lang))
932 kmk_time $(VBOX_PATH_WIX)/light.exe -v -nologo \
933 -loc $(VBOX_WIN_INST_OUT_DIR)/NLS/Language_$(lang).wxl \
934 -loc $(VBOX_WIN_INST_OUT_DIR)/NLS/License_$(lang).wxl \
935 -ext $(VBOX_PATH_WIX)/WixUIExtension.dll \
936 -ext $(VBOX_PATH_WIX)/WixDifxAppExtension.dll \
937 $(if-expr defined(VBOX_WITH_MSI_HACK),-ext $(MsiHack_0_OUTDIR)/MsiHackExtension.dll,) \
938 $(VBOX_MSI_ICE_IGNORE) \
939 -out $$(@D)/$(PACKAGE_NAME_LANG)_$(lang).msi \
940 $$(@D)/VirtualBox_$(lang).wixobj \
941 $(VBOX_PATH_WIX)/difxapp_$(if-expr "$(KBUILD_TARGET_ARCH)" == "x86",x86,x64).wixlib
942 $(REDIRECT) -C $$(@D) -- $(VBOX_PATH_MSITRAN) -g $$< $(PACKAGE_NAME_LANG)_$(lang).msi $(lang).mst
943 $(CP) -f -- "$(VBOX_WIN_INST_OUT_DIR)/$(lang)/$(lang).mst" "$(VBOX_WIN_INST_REPACK_DIR)/$(lang).mst"
944 $(RM) -f -- $$(@D)/$(PACKAGE_NAME_LANG)_$(lang).msi \
945 $$(@D)/$(PACKAGE_NAME_LANG)_$(lang).wixpdb \
946 $$(@D)/common.cab
947
948endef
949
950$(foreach lang,$(filter-out en_US, $(VBOX_INSTALLER_LANGUAGES)), \
951 $(eval local lang_id := $(VBOX_BRAND_$(lang)_LANG_ID)) \
952 $(eval $(def_vbox_create_mst)))
953
954
955# Create WISUMINFO argument.
956VBOX_INS_PROD_ARCH.amd64 = x64
957VBOX_INS_PROD_ARCH.x86 = Intel
958VBOX_INS_PROD_ARCH := $(VBOX_INS_PROD_ARCH.$(KBUILD_TARGET_ARCH))
959$(if $(VBOX_INS_PROD_ARCH),,$(error VBOX_INS_PROD_ARCH is empty!))
960VBOX_INS_PROD_LANG := 7="$(VBOX_INS_PROD_ARCH);1033
961$(foreach lang, $(filter-out en_US,$(VBOX_INSTALLER_LANGUAGES))\
962 , $(eval VBOX_INS_PROD_LANG := $(VBOX_INS_PROD_LANG)$(COMMA)$(VBOX_BRAND_$(lang)_LANG_ID)))
963VBOX_INS_PROD_LANG := $(VBOX_INS_PROD_LANG)"
964
965# The multilingual installer rule.
966$(VBOX_WIN_INST_OUT_DIR)/$(PACKAGE_NAME_LANG).msi \
967+ $(VBOX_WIN_INST_REPACK_DIR)/3-multilingual-$(PACKAGE_NAME_LANG).cmd: \
968 $(VBOX_WIN_INST_OUT_DIR)/en_US/$(PACKAGE_NAME_LANG)_en_US.msi \
969 $(foreach lang,$(filter-out en_US,$(VBOX_INSTALLER_LANGUAGES)),$(VBOX_WIN_INST_OUT_DIR)/$(lang)/$(lang).mst)
970 $(call MSG_L1,Creating final multilingual MSI)
971 $(QUIET)$(RM) -f -- \
972 $(wildcard $(@D)/$(PACKAGE_BASE)-r*.msi $(VBOX_WIN_INST_REPACK_DIR)/3-multilingual-$(PACKAGE_BASE)-r*.cmd )
973 $(CP) -f -- "$<" "$@"
974
975 $(foreach lang,$(filter-out en_US,$(VBOX_INSTALLER_LANGUAGES)), \
976 $(NLTAB)$(REDIRECT) -C $(@D)/$(lang) -- $(VBOX_PATH_MSIDB) -d $@ -r $(lang).mst \
977 $(NLTAB)$(REDIRECT) -C $(@D)/$(lang) -- cscript.exe /nologo $(VBOX_PATH_WISUBSTG) $@ $(lang).mst $(VBOX_BRAND_$(lang)_LANG_ID) )
978
979 $(REDIRECT) -C $(@D) -- cscript.exe /nologo $(VBOX_PATH_WISUBSTG) $(@F)
980 $(REDIRECT) -C $(@D) -- cscript.exe /nologo $(VBOX_PATH_WISUMINFO) $@ $(VBOX_INS_PROD_LANG)
981 $(call VBOX_SIGN_FILE_FN,$@,$(VBOX_PRODUCT) $(VBOX_VERSION_STRING)r$(VBOX_SVN_REV) ($(KBUILD_TARGET_ARCH)),,,disable-dual-signing)
982
983# Create repack script for this step.
984 $(APPEND) -nt "$(VBOX_WIN_INST_REPACK_DIR)/3-multilingual-$(PACKAGE_NAME_LANG).cmd" \
985 'if ".%KBUILD_DEVTOOLS%" == "." (echo KBUILD_DEVTOOLS is not set & exit /b1)' \
986 'if ".%KBUILD_BIN_PATH%" == "." (echo KBUILD_BIN_PATH is not set & exit /b1)' \
987 'copy /y "$(<F)" "$(@F)" || exit /b1' \
988 $(subst $(KBUILD_BIN_PATH),%KBUILD_BIN_PATH%,$(subst $(KBUILD_DEVTOOLS),%KBUILD_DEVTOOLS%,\
989 $(foreach lang,$(filter-out en_US,$(VBOX_INSTALLER_LANGUAGES)), \
990 '$(VBOX_PATH_MSIDB) -d $(@F) -r $(lang).mst || exit /b1' \
991 'cscript.exe /nologo $(VBOX_PATH_WISUBSTG) $(@F) $(lang).mst $(VBOX_BRAND_$(lang)_LANG_ID) || exit /b1') \
992 'cscript.exe /nologo $(VBOX_PATH_WISUBSTG) $(@F) || exit /b1' \
993 'cscript.exe /nologo $(VBOX_PATH_WISUMINFO) $(@F) $(VBOX_INS_PROD_LANG) || exit /b1' \
994 'call sign-sha1.cmd $(@F) || exit /b1' \
995 ) ) \
996 'copy /y "$(@F)" "$(notdir $(PACKAGE_NAME_FINAL))" || exit /b1' \
997 '@echo Create multilanguage MSI: $(notdir $(PACKAGE_NAME_FINAL))'
998
999# Copy multilingual installer to bin.
1000$(PACKAGE_NAME_FINAL): $(VBOX_WIN_INST_OUT_DIR)/$(PACKAGE_NAME_LANG).msi | $$(dir $$@)
1001 $(QUIET)$(RM) -f $(wildcard $(@D)/$(PACKAGE_BASE)-r*$(if-expr defined(VBOX_WITH_COMBINED_PACKAGE),_$(KBUILD_TARGET_ARCH),).msi)
1002 $(INSTALL_STAGING) -- $< $@
1003
1004
1005if defined(VBOX_WITH_COMBINED_PACKAGE) && "$(KBUILD_TARGET_ARCH)" == "x86"
1006#
1007# Make the multi-architecture installer by calling our stub builder
1008# with both platform installers (x86 and amd64) + common cab. The common
1009# cab only is needed when we don't use merge modules. We only
1010# need to do this once; so do it on x86 only.
1011#
1012$(PATH_STAGE_BIN)/$(PACKAGE_NAME_MULTIARCH_FINAL) \
1013+ $(VBOX_WIN_INST_REPACK_DIR)/4-multiarch-$(PACKAGE_NAME_MULTIARCH_FINAL).cmd: \
1014 $(PATH_MULTIARCH_TEMP)/$(PACKAGE_NAME_MULTIARCH.x86) \
1015 $(PATH_MULTIARCH_TEMP)/$(PACKAGE_NAME_MULTIARCH.amd64) \
1016 $(PATH_STAGE_BIN)/VBoxStub.exe \
1017 $$(VBoxStubBld_1_TARGET)
1018 $(call MSG_L1,Building Windows combined package)
1019 $(QUIET)$(RM) -f -- $(wildcard $(subst r$(VBOX_SVN_REV),r*, \
1020 $@ \
1021 $(VBOX_WIN_INST_REPACK_DIR)/4-multiarch-$(PACKAGE_NAME_MULTIARCH_FINAL).cmd ) )
1022 $(if-expr defined(VBOX_WITH_MSM_INSTALL),,$(call VBOX_SIGN_FILE_FN,$(PACKAGE_NAME_MULTIARCH_COMMONCAB)))
1023 $(REDIRECT) -C $(@D) -- \
1024 $(VBoxStubBld_1_TARGET) -out $@ \
1025 -target-x86 $(PATH_MULTIARCH_TEMP)/$(PACKAGE_NAME_MULTIARCH.x86) \
1026 -target-amd64 $(PATH_MULTIARCH_TEMP)/$(PACKAGE_NAME_MULTIARCH.amd64) \
1027 $(if-expr defined(VBOX_WITH_MSM_INSTALL),,-target-all $(PACKAGE_NAME_MULTIARCH_COMMONCAB)) \
1028 -stub $(PATH_STAGE_BIN)/VBoxStub.exe
1029 $(VBOX_VCC_EDITBIN) /IntegrityCheck:NO $@
1030 $(call VBOX_SIGN_FILE_FN,$@)
1031# Create repack script for this step.
1032 $(APPEND) -nt "$(VBOX_WIN_INST_REPACK_DIR)/4-multiarch-$(@F).cmd" \
1033 'if ".%KBUILD_DEVTOOLS%" == "." (echo KBUILD_DEVTOOLS is not set & exit /b1)' \
1034 'if ".%KBUILD_BIN_PATH%" == "." (echo KBUILD_BIN_PATH is not set & exit /b1)' \
1035 $(subst $(KBUILD_BIN_PATH),%KBUILD_BIN_PATH%,$(subst $(KBUILD_DEVTOOLS),%KBUILD_DEVTOOLS%, \
1036 $(if-expr defined(VBOX_WITH_MSM_INSTALL), \
1037 ,'call sign-dual.cmd ../../../win.amd64/$(KBUILD_TYPE)/repack/$(notdir $(PACKAGE_NAME_MULTIARCH_COMMONCAB)) || exit /b1') \
1038 '..\bin\VBoxStubBld.exe ^' \
1039 ' -out $(@F) ^' \
1040 ' -target-x86 $(PACKAGE_NAME_MULTIARCH.x86) ^' \
1041 ' -target-amd64 ../../../win.amd64/$(KBUILD_TYPE)/repack/$(PACKAGE_NAME_MULTIARCH.amd64) ^' \
1042 $(if-expr defined(VBOX_WITH_MSM_INSTALL),\
1043 ,' -target-all ../../../win.amd64/$(KBUILD_TYPE)/repack/$(notdir $(PACKAGE_NAME_MULTIARCH_COMMONCAB)) ^' ) \
1044 ' -stub ../bin/VBoxStub.exe || exit /b1' \
1045 '$(VBOX_VCC_EDITBIN) /IntegrityCheck:NO $(@F) || exit /b1' \
1046 'call sign-dual.cmd $(@F) || exit /b1' \
1047 ) ) \
1048 '@echo Create multiarch EXE: $(@F)'
1049else
1050#
1051# We still do the installer stub thing even if we only ship 64-bit, because we've
1052# gotten used to having it around to install the certificate and such.
1053#
1054$(PATH_STAGE_BIN)/$(PACKAGE_NAME_MULTIARCH_FINAL) \
1055+ $(VBOX_WIN_INST_REPACK_DIR)/4-multiarch-$(PACKAGE_NAME_MULTIARCH_FINAL).cmd: \
1056 $(PACKAGE_NAME_FINAL) \
1057 $(PATH_STAGE_BIN)/VBoxStub.exe \
1058 $$(VBoxStubBld_1_TARGET)
1059 $(call MSG_L1,Building Windows package w/ installer stub)
1060 $(QUIET)$(RM) -f -- $(wildcard $(subst r$(VBOX_SVN_REV),r*, \
1061 $@ \
1062 $(VBOX_WIN_INST_REPACK_DIR)/4-multiarch-$(PACKAGE_NAME_MULTIARCH_FINAL).cmd ) )
1063 $(REDIRECT) -C $(@D) -- \
1064 $(VBoxStubBld_1_TARGET) -out $@ \
1065 -target-$(KBUILD_TARGET_ARCH) $(PACKAGE_NAME_FINAL) \
1066 -stub $(PATH_STAGE_BIN)/VBoxStub.exe
1067 $(VBOX_VCC_EDITBIN) /IntegrityCheck:NO $@
1068 $(call VBOX_SIGN_FILE_FN,$@)
1069# Create repack script for this step.
1070 $(APPEND) -nt "$(VBOX_WIN_INST_REPACK_DIR)/4-multiarch-$(@F).cmd" \
1071 'if ".%KBUILD_DEVTOOLS%" == "." (echo KBUILD_DEVTOOLS is not set & exit /b1)' \
1072 'if ".%KBUILD_BIN_PATH%" == "." (echo KBUILD_BIN_PATH is not set & exit /b1)' \
1073 $(subst $(KBUILD_BIN_PATH),%KBUILD_BIN_PATH%,$(subst $(KBUILD_DEVTOOLS),%KBUILD_DEVTOOLS%, \
1074 $(if-expr defined(VBOX_WITH_MSM_INSTALL), \
1075 ,'call sign-dual.cmd ../../../win.amd64/$(KBUILD_TYPE)/repack/$(notdir $(PACKAGE_NAME_MULTIARCH_COMMONCAB)) || exit /b1') \
1076 '..\bin\VBoxStubBld.exe ^' \
1077 ' -out $(@F) ^' \
1078 ' -target-$(KBUILD_TARGET_ARCH) $(PACKAGE_NAME_FINAL) ^' \
1079 ' -stub ../bin/VBoxStub.exe || exit /b1' \
1080 '$(VBOX_VCC_EDITBIN) /IntegrityCheck:NO $(@F) || exit /b1' \
1081 'call sign-dual.cmd $(@F) || exit /b1' \
1082 ) ) \
1083 '@echo Create multiarch EXE: $(@F)'
1084endif
1085
1086#
1087# Repackaging scripts and files.
1088#
1089INSTALLS += RePackScripts
1090RePackScripts_TEMPLATE = DUMMY
1091RePackScripts_INST = repack/
1092RePackScripts_INSTTYPE = stage
1093RePackScripts_SOURCES = \
1094 Scripts/UnpackBlessedDrivers.cmd \
1095 $(RePackScripts_0_OUTDIR)/PackDriversForSubmission.cmd \
1096 $(RePackScripts_0_OUTDIR)/sign-dual.cmd \
1097 $(RePackScripts_0_OUTDIR)/sign-sha1.cmd \
1098 $(if-expr defined(VBOX_SIGN_EV_FILE_FN),$(RePackScripts_0_OUTDIR)/sign-ev.cmd,) \
1099 $(RePackScripts_0_OUTDIR)/VMMR0.inf \
1100 $(RePackScripts_0_OUTDIR)/VBoxExtPackPuel.inf
1101if !defined(VBOX_WITH_COMBINED_PACKAGE) || "$(KBUILD_TARGET_ARCH)" == "x86"
1102 RePackScripts_SOURCES += \
1103 $(RePackScripts_0_OUTDIR)/RepackExtPack.cmd
1104endif
1105if defined(VBOX_WITH_COMBINED_PACKAGE) && "$(KBUILD_TARGET_ARCH)" == "x86"
1106 RePackScripts_SOURCES += \
1107 $(RePackScripts_0_OUTDIR)/Combined-1-Prepare.cmd \
1108 $(RePackScripts_0_OUTDIR)/Combined-3-Repack.cmd
1109endif
1110RePackScripts_CLEAN = \
1111 $(RePackScripts_0_OUTDIR)/PackDriversForSubmission.cmd \
1112 $(RePackScripts_0_OUTDIR)/sign-dual.cmd \
1113 $(RePackScripts_0_OUTDIR)/sign-sha1.cmd \
1114 $(RePackScripts_0_OUTDIR)/sign-ev.cmd \
1115 $(RePackScripts_0_OUTDIR)/VMMR0.inf \
1116 $(RePackScripts_0_OUTDIR)/VBoxExtPackPuel.inf
1117
1118$(call VBOX_EDIT_VERSION_AND_BUILD_RULE_FN,RePackScripts,Scripts/PackDriversForSubmission.cmd,PackDriversForSubmission.cmd)
1119$(call VBOX_EDIT_VERSION_AND_BUILD_RULE_FN,RePackScripts,Scripts/RepackExtPack.cmd,RepackExtPack.cmd)
1120$(call VBOX_EDIT_VERSION_AND_BUILD_RULE_FN,RePackScripts,Scripts/Combined-1-Prepare.cmd,Combined-1-Prepare.cmd)
1121$(call VBOX_EDIT_VERSION_AND_BUILD_RULE_FN,RePackScripts,Scripts/Combined-3-Repack.cmd,Combined-3-Repack.cmd)
1122
1123$$(RePackScripts_0_OUTDIR)/sign-dual.cmd: | $$(dir $$@)
1124 $(APPEND) -nt "$@" \
1125 'if ".%KBUILD_DEVTOOLS%" == "." (echo KBUILD_DEVTOOLS is not set & exit /b 1)' \
1126 'if ".%KBUILD_BIN_PATH%" == "." (echo KBUILD_BIN_PATH is not set & exit /b 1)' \
1127 'if ".%1" == "." (echo No .cat file specified & exit /b 1)' \
1128 $(subst $(KBUILD_BIN_PATH),%KBUILD_BIN_PATH%,$(subst $(KBUILD_DEVTOOLS),%KBUILD_DEVTOOLS%, \
1129 '( $(call VBOX_SIGN_FILE_FN,%1,$(VBOX_PRODUCT) $(VBOX_VERSION_STRING)r$(VBOX_SVN_REV) ($(KBUILD_TARGET_ARCH)),,,,&&) ) || exit /b1' \
1130 ) )
1131
1132$$(RePackScripts_0_OUTDIR)/sign-sha1.cmd: | $$(dir $$@)
1133 $(APPEND) -nt "$@" \
1134 'if ".%KBUILD_DEVTOOLS%" == "." (echo KBUILD_DEVTOOLS is not set & exit /b 1)' \
1135 'if ".%KBUILD_BIN_PATH%" == "." (echo KBUILD_BIN_PATH is not set & exit /b 1)' \
1136 'if ".%1" == "." (echo No .cat file specified & exit /b 1)' \
1137 $(subst $(KBUILD_BIN_PATH),%KBUILD_BIN_PATH%,$(subst $(KBUILD_DEVTOOLS),%KBUILD_DEVTOOLS%, \
1138 '( $(call VBOX_SIGN_FILE_FN,%1,$(VBOX_PRODUCT) $(VBOX_VERSION_STRING)r$(VBOX_SVN_REV) ($(KBUILD_TARGET_ARCH)),,,disable-dual-signing,&&) ) || exit /b1' \
1139 ) )
1140
1141$$(RePackScripts_0_OUTDIR)/sign-ev.cmd: | $$(dir $$@)
1142 # The %~dp1\ oddity is working around otherwise ending with \" during
1143 # expansion of the CCS command line which for a reason I cannot immediately
1144 # understand appends a " to the path.
1145 $(APPEND) -nt "$@" \
1146 'if ".%KBUILD_DEVTOOLS%" == "." (echo KBUILD_DEVTOOLS is not set & exit /b 1)' \
1147 'if ".%KBUILD_BIN_PATH%" == "." (echo KBUILD_BIN_PATH is not set & exit /b 1)' \
1148 'if ".%1" == "." (echo No .cab file specified & exit /b 1)' \
1149 $(subst $(KBUILD_BIN_PATH),%KBUILD_BIN_PATH%,$(subst $(KBUILD_DEVTOOLS),%KBUILD_DEVTOOLS%, \
1150 '( $(call VBOX_SIGN_EV_FILE_FN,%1,%~dp1\) ) || exit /b1' \
1151 ) )
1152
1153$$(RePackScripts_0_OUTDIR)/VMMR0.inf: $(PATH_SUB_CURRENT)/Scripts/VMMR0.inf $(MAKEFILE_CURRENT) | $$(dir $$@)
1154 $(call MSG_GENERATE,RePackScripts,$@,$<)
1155 $(call VBOX_EDIT_INF_FN,$<,$@)
1156
1157$$(RePackScripts_0_OUTDIR)/VBoxExtPackPuel.inf: $(PATH_SUB_CURRENT)/Scripts/VBoxExtPackPuel.inf $(MAKEFILE_CURRENT) | $$(dir $$@)
1158 $(call MSG_GENERATE,RePackScripts,$@,$<)
1159 $(call VBOX_EDIT_INF_FN,$<,$@)
1160
1161
1162include $(FILE_KBUILD_SUB_FOOTER)
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