VirtualBox

source: vbox/trunk/src/VBox/Additions/WINNT/Installer/Makefile.kmk@ 96782

Last change on this file since 96782 was 96776, checked in by vboxsync, 21 months ago

Add/Nt/Installer: More work related to iexplore.ico removal as it seems it really was needed when we use a .lnk to point to the .url file in the install dir, now I've changed it to generate an identical Website.url file for the start menu too. This way we get the right browser icon associated .url files.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 20.6 KB
Line 
1# $Id: Makefile.kmk 96776 2022-09-16 23:58:49Z vboxsync $
2## @file
3# Sub-Makefile for the Windows Guest Additions Installer.
4#
5
6#
7# Copyright (C) 2006-2022 Oracle and/or its affiliates.
8#
9# This file is part of VirtualBox base platform packages, as
10# available from https://www.virtualbox.org.
11#
12# This program is free software; you can redistribute it and/or
13# modify it under the terms of the GNU General Public License
14# as published by the Free Software Foundation, in version 3 of the
15# License.
16#
17# This program is distributed in the hope that it will be useful, but
18# WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20# General Public License for more details.
21#
22# You should have received a copy of the GNU General Public License
23# along with this program; if not, see <https://www.gnu.org/licenses>.
24#
25# SPDX-License-Identifier: GPL-3.0-only
26#
27
28SUB_DEPTH = ../../../../..
29include $(KBUILD_PATH)/subheader.kmk
30
31#
32# Include Sub-Makefiles.
33#
34include $(PATH_SUB_CURRENT)/Loader/Makefile.kmk
35include $(PATH_SUB_CURRENT)/InstallHelper/Makefile.kmk
36
37
38#
39# Globals
40#
41VBOX_PATH_WIN_ADD_INS_SRC := $(PATH_SUB_CURRENT)
42VBOX_PATH_ADDITIONS.win.x86 := $(PATH_OUT_BASE)/win.x86/$(KBUILD_TYPE)/bin/additions
43VBOX_WITH_GUEST_INSTALL_HELPER := 1 # Use our guest install helper DLL.
44## @todo VBOX_WIN_ADD_INS_OUT_DIR := $(PATH_TARGET)/Additions/Installer/win
45
46ifdef VBOX_GA_ATTESTATION_SIGNING
47 VBOX_DRIVERS_PACK_NAME := VBoxDrivers-$(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD)r$(VBOX_SVN_REV)-$(KBUILD_TARGET_ARCH).cab
48 VBOX_SIGNED_DRIVERS_ZIP_NAME := $(VBOX_DRIVERS_PACK_NAME).Signed.zip
49 include $(KBUILD_PATH)/tools/ZIP.kmk
50 TOOL_ZIP_PACK ?= zip
51endif
52
53
54#
55# VBoxDrvInst - Helps with driver installation.
56#
57PROGRAMS += VBoxDrvInst
58VBoxDrvInst_TEMPLATE= VBoxGuestR3Exe
59VBoxDrvInst_DEFS = _WIN32_WINNT=0x0400 _UNICODE UNICODE
60VBoxDrvInst_DEFS += VBOX_SVN_REV=$(VBOX_SVN_REV)
61ifdef VBOX_WITH_WDDM
62 VBoxDrvInst_DEFS += VBOX_WITH_WDDM
63endif
64VBoxDrvInst_DEPS = $(VBOX_SVN_REV_KMK)
65VBoxDrvInst_SDKS = ReorderCompilerIncs $(VBOX_WINPSDK_GST) $(VBOX_WINDDK_GST) VBOX_WIN_NEWDEV
66VBoxDrvInst_INCS = ../include
67VBoxDrvInst_LIBS = \
68 $(PATH_SDK_$(VBOX_WINPSDK)_LIB)/setupapi.lib
69VBoxDrvInst_SOURCES = \
70 VBoxDrvInst.cpp \
71 VBoxDrvInst.rc
72VBoxDrvInst_VBOX_IMPORT_CHECKER.win.x86 := nt4 # setupapi was introduced in NT4
73
74
75#
76# RegCleanup - A NT4 post-install registry cleanup helper preventing the
77# display config dialog from popping up on subsequent reboots.
78#
79PROGRAMS += RegCleanup
80RegCleanup_TEMPLATE := VBoxGuestR3Exe
81RegCleanup_BLD_TRG_ARCH := x86
82RegCleanup_DEFS := _WIN32_WINNT=0x0400
83RegCleanup_SOURCES := \
84 RegCleanup.cpp \
85 RegCleanup.rc
86RegCleanup_VBOX_IMPORT_CHECKER.win.x86 := nt4
87
88
89#
90# Install all the certificates we use.
91#
92INSTALLS += AdditionsInstCertFiles
93AdditionsInstCertFiles_TEMPLATE := VBoxGuestR3Exe
94AdditionsInstCertFiles_SOURCES =
95AdditionsInstCertFiles_CLEAN =
96if defined(VBOX_SIGNING_MODE) && defined(VBOX_SIGN_ADDITIONS)
97 define def_VBoxAdditionsInstCertFiles
98 AdditionsInstCertFiles_SOURCES += $$(AdditionsInstCertFiles_0_OUTDIR)/$(1)=>$1
99 AdditionsInstCertFiles_CLEAN += $$(AdditionsInstCertFiles_0_OUTDIR)/$(1)
100 $$$$(AdditionsInstCertFiles_0_OUTDIR)/$(1): $$(2) | $$$$(dir $$$$@) $(VBOX_RTSIGNTOOL)
101 $(QUIET)$(RM) -f -- "$$@"
102 $(VBOX_RTSIGNTOOL) $3 --signature-index $4 --input "$$<" --output "$$@"
103 endef
104
105 if !defined(VBOX_CERTIFICATE_SHA2_SUBJECT_NAME) && !$(intersects win all 1,$(VBOX_WITH_CORP_CODE_SIGNING))
106 $(evalcall2 def_VBoxAdditionsInstCertFiles,vbox.cer,$(VBOX_PATH_ADDITIONS)/VBoxGuest.sys, \
107 extract-exe-signer-cert, 0)
108 VBOX_GA_CERT_ROOT_SHA1 := vbox-root.cer
109 $(evalcall2 def_VBoxAdditionsInstCertFiles,$(VBOX_GA_CERT_ROOT_SHA1),$(VBOX_PATH_ADDITIONS)/VBoxGuest.sys, \
110 extract-signer-root --self-signed-roots-from-system, 0)
111 ifdef VBOX_TSA_URL_ARGS
112 VBOX_GA_CERT_ROOT_SHA1_TS := vbox-timestamp-root.cer
113 $(evalcall2 def_VBoxAdditionsInstCertFiles,$(VBOX_GA_CERT_ROOT_SHA1_TS),$(VBOX_PATH_ADDITIONS)/VBoxGuest.sys, \
114 extract-timestamp-root --self-signed-roots-from-system, 0)
115 endif
116 else
117 $(evalcall2 def_VBoxAdditionsInstCertFiles,vbox-sha1.cer,$(VBOX_PATH_ADDITIONS)/VBoxGuest.sys, \
118 extract-exe-signer-cert, 0)
119 VBOX_GA_CERT_ROOT_SHA1 := vbox-sha1-root.cer
120 $(evalcall2 def_VBoxAdditionsInstCertFiles,$(VBOX_GA_CERT_ROOT_SHA1),$(VBOX_PATH_ADDITIONS)/VBoxGuest.sys, \
121 extract-signer-root --self-signed-roots-from-system, 0)
122 ifdef VBOX_TSA_URL_ARGS
123 VBOX_GA_CERT_ROOT_SHA1_TS := vbox-sha1-timestamp-root.cer
124 $(evalcall2 def_VBoxAdditionsInstCertFiles,$(VBOX_GA_CERT_ROOT_SHA1_TS),$(VBOX_PATH_ADDITIONS)/VBoxGuest.sys, \
125 extract-timestamp-root --self-signed-roots-from-system, 0)
126 endif
127
128 $(evalcall2 def_VBoxAdditionsInstCertFiles,vbox-sha256.cer,$(VBOX_PATH_ADDITIONS)/VBoxGuest.sys, \
129 extract-exe-signer-cert, 1)
130 VBOX_GA_CERT_ROOT_SHA2 := vbox-sha256-root.cer
131 $(evalcall2 def_VBoxAdditionsInstCertFiles,$(VBOX_GA_CERT_ROOT_SHA2),$(VBOX_PATH_ADDITIONS)/VBoxGuest.sys, \
132 extract-signer-root --self-signed-roots-from-system, 1)
133 ifdef VBOX_TSA_SHA2_URL_ARGS
134 VBOX_GA_CERT_ROOT_SHA2_TS := vbox-sha256-timestamp-root.cer
135 $(evalcall2 def_VBoxAdditionsInstCertFiles,$(VBOX_GA_CERT_ROOT_SHA2_TS),$(VBOX_PATH_ADDITIONS)/VBoxGuest.sys, \
136 extract-timestamp-root --self-signed-roots-from-system, 1)
137 endif
138
139 if $(intersects win_planb,$(VBOX_WITH_CORP_CODE_SIGNING))
140 $(evalcall2 def_VBoxAdditionsInstCertFiles,vbox-sha256-r3.cer,$(VBOX_PATH_ADDITIONS)/VBoxDrvInst.exe, \
141 extract-exe-signer-cert, 1)
142 VBOX_GA_CERT_ROOT_SHA2_R3 := vbox-sha256-r3-root.cer
143 $(evalcall2 def_VBoxAdditionsInstCertFiles,$(VBOX_GA_CERT_ROOT_SHA2_R3),$(VBOX_PATH_ADDITIONS)/VBoxDrvInst.exe, \
144 extract-signer-root --self-signed-roots-from-system, 1)
145 VBOX_GA_CERT_ROOT_SHA2_R3_TS := vbox-sha256-r3-timestamp-root.cer
146 $(evalcall2 def_VBoxAdditionsInstCertFiles,$(VBOX_GA_CERT_ROOT_SHA2_R3_TS),$(VBOX_PATH_ADDITIONS)/VBoxDrvInst.exe, \
147 extract-timestamp-root --self-signed-roots-from-system, 1)
148 endif
149 endif
150endif
151
152#
153# The installer.
154#
155PACKING += $(PATH_STAGE_BIN)/additions/VBoxWindowsAdditions-$(KBUILD_TARGET_ARCH).exe
156OTHER_CLEAN += $(PATH_STAGE_BIN)/additions/VBoxWindowsAdditions-$(KBUILD_TARGET_ARCH).exe
157
158VBOX_WINDOWS_ADDITIONS_ATTESTATION_SIGNED_FILES := \
159 $(PATH_STAGE_BIN)/additions/VBoxGuest.inf \
160 $(PATH_STAGE_BIN)/additions/VBoxGuest.sys \
161 $(PATH_STAGE_BIN)/additions/VBoxTray.exe \
162 $(PATH_STAGE_BIN)/additions/VBoxControl.exe \
163 \
164 $(PATH_STAGE_BIN)/additions/VBoxMouse.inf \
165 $(PATH_STAGE_BIN)/additions/VBoxMouse.sys \
166 \
167 $(PATH_STAGE_BIN)/additions/VBoxVideo.inf \
168 $(PATH_STAGE_BIN)/additions/VBoxVideo.sys \
169 $(PATH_STAGE_BIN)/additions/VBoxDisp.dll \
170 \
171 $(PATH_STAGE_BIN)/additions/VBoxSF.sys \
172 $(PATH_STAGE_BIN)/additions/VBoxMRXNP.dll
173
174ifeq ($(KBUILD_TARGET_ARCH),amd64) # 32-bit network provider DLLs for 32-bit apps running on a 64-bit system
175VBOX_WINDOWS_ADDITIONS_ATTESTATION_SIGNED_FILES += \
176 $(PATH_STAGE_BIN)/additions/VBoxMRXNP-x86.dll
177endif
178
179if defined(VBOX_SIGNING_MODE) && defined(VBOX_SIGN_ADDITIONS)
180VBOX_WINDOWS_ADDITIONS_OTHER_FILES += \
181 $(PATH_STAGE_BIN)/additions/VBoxVideo.cat \
182 $(PATH_STAGE_BIN)/additions/VBoxVideo-PreW10.cat \
183 $(PATH_STAGE_BIN)/additions/VBoxGuest.cat \
184 $(PATH_STAGE_BIN)/additions/VBoxGuest-PreW10.cat \
185 $(PATH_STAGE_BIN)/additions/VBoxMouse.cat \
186 $(PATH_STAGE_BIN)/additions/VBoxMouse-PreW10.cat
187endif
188
189VBOX_WINDOWS_ADDITIONS_OTHER_FILES := \
190 $(PATH_STAGE_BIN)/additions/VBoxService.exe \
191 $(PATH_STAGE_BIN)/additions/VBoxHook.dll \
192 $(PATH_STAGE_BIN)/additions/RegCleanup.exe
193
194ifeq ($(KBUILD_TARGET_ARCH),x86)
195VBOX_WINDOWS_ADDITIONS_OTHER_FILES += \
196 $(PATH_STAGE_BIN)/additions/VBoxMouseNT.sys \
197 $(PATH_STAGE_BIN)/additions/VBoxSFW2K.sys
198endif
199
200ifdef VBOX_WITH_WDDM
201VBOX_WINDOWS_ADDITIONS_ATTESTATION_SIGNED_FILES += \
202 $(PATH_STAGE_BIN)/additions/VBoxWddm.inf \
203 $(PATH_STAGE_BIN)/additions/VBoxWddm.sys \
204 $(PATH_STAGE_BIN)/additions/VBoxDispD3D.dll
205 ifeq ($(KBUILD_TARGET_ARCH),amd64)
206VBOX_WINDOWS_ADDITIONS_ATTESTATION_SIGNED_FILES += \
207 $(PATH_STAGE_BIN)/additions/VBoxDispD3D-x86.dll
208 endif
209
210 ifdef VBOX_WITH_WDDM_DX
211VBOX_WINDOWS_ADDITIONS_ATTESTATION_SIGNED_FILES += \
212 $(PATH_STAGE_BIN)/additions/VBoxDX.dll
213 ifeq ($(KBUILD_TARGET_ARCH),amd64)
214VBOX_WINDOWS_ADDITIONS_ATTESTATION_SIGNED_FILES += \
215 $(PATH_STAGE_BIN)/additions/VBoxDX-x86.dll
216 endif
217 endif
218
219 ifdef VBOX_WITH_MESA3D
220VBOX_WINDOWS_ADDITIONS_ATTESTATION_SIGNED_FILES += \
221 $(PATH_STAGE_BIN)/additions/VBoxNine.dll \
222 $(PATH_STAGE_BIN)/additions/VBoxSVGA.dll \
223 $(PATH_STAGE_BIN)/additions/VBoxGL.dll
224 ifeq ($(KBUILD_TARGET_ARCH),amd64)
225VBOX_WINDOWS_ADDITIONS_ATTESTATION_SIGNED_FILES += \
226 $(PATH_STAGE_BIN)/additions/VBoxNine-x86.dll \
227 $(PATH_STAGE_BIN)/additions/VBoxSVGA-x86.dll \
228 $(PATH_STAGE_BIN)/additions/VBoxGL-x86.dll
229 endif
230 endif
231
232 if defined(VBOX_SIGNING_MODE) && defined(VBOX_SIGN_ADDITIONS)
233VBOX_WINDOWS_ADDITIONS_OTHER_FILES += \
234 $(PATH_STAGE_BIN)/additions/VBoxWddm.cat \
235 $(PATH_STAGE_BIN)/additions/VBoxWddm-PreW10.cat
236 endif
237endif # VBOX_WITH_WDDM
238
239ifdef env.VBOX_WITH_ADDITIONS_SHIPPING_AUDIO_TEST
240VBOX_WINDOWS_ADDITIONS_OTHER_FILES += \
241 $(PATH_STAGE_BIN)/additions/VBoxAudioTest.exe
242endif
243
244VBOX_WINDOWS_ADDITIONS_OTHER_FILES += $(addprefix $(PATH_STAGE_BIN)/additions/, \
245 $(VBOX_GA_CERT_ROOT_SHA1) \
246 $(VBOX_GA_CERT_ROOT_SHA1_TS) \
247 $(VBOX_GA_CERT_ROOT_SHA2) \
248 $(VBOX_GA_CERT_ROOT_SHA2_TS) \
249 $(VBOX_GA_CERT_ROOT_SHA2_R3) \
250 $(VBOX_GA_CERT_ROOT_SHA2_R3_TS))
251
252VB_WIN_ADD_NSIS_ENV := \
253 -E 'PATH_OUT=$(subst /,\,$(PATH_OUT))' \
254 -E 'PATH_TARGET=$(subst /,\,$(PATH_TARGET))' \
255 -E 'PATH_TARGET_X86=$(subst /,\,$(PATH_OUT_BASE)/win.x86/$(KBUILD_TYPE)/obj)' \
256 -E 'VBOX_PATH_ADDITIONS_WIN_X86=$(subst /,\,$(VBOX_PATH_ADDITIONS.win.x86))' \
257 -E 'VBOX_PATH_DIFX=$(subst /,\,$(VBOX_PATH_DIFX))' \
258 -E 'VBOX_VENDOR=$(VBOX_VENDOR)' \
259 -E 'VBOX_VENDOR_SHORT=$(VBOX_VENDOR_SHORT)' \
260 -E 'VBOX_PRODUCT=$(VBOX_PRODUCT)' \
261 -E 'VBOX_C_YEAR=$(VBOX_C_YEAR)' \
262 -E 'VBOX_VERSION_STRING=$(VBOX_VERSION_STRING)' \
263 -E 'VBOX_VERSION_STRING_RAW=$(VBOX_VERSION_STRING_RAW)' \
264 -E 'VBOX_VERSION_MAJOR=$(VBOX_VERSION_MAJOR)' \
265 -E 'VBOX_VERSION_MINOR=$(VBOX_VERSION_MINOR)' \
266 -E 'VBOX_VERSION_BUILD=$(VBOX_VERSION_BUILD)' \
267 -E 'VBOX_SVN_REV=$(VBOX_SVN_REV)' \
268 -E 'VBOX_WINDOWS_ADDITIONS_ICON_FILE=$(subst /,\,$(VBOX_WINDOWS_ADDITIONS_ICON_FILE))' \
269 -E 'VBOX_NSIS_ICON_FILE=$(subst /,\,$(VBOX_NSIS_ICON_FILE))' \
270 -E 'VBOX_WITH_GUEST_INSTALL_HELPER=$(if $(VBOX_WITH_GUEST_INSTALL_HELPER),1,0)' \
271 -E 'VBOX_WITH_GUEST_INSTALLER_UNICODE=$(if $(VBOX_WITH_GUEST_INSTALLER_UNICODE),1,0)' \
272 -E 'VBOX_WITH_ADDITIONS_SHIPPING_AUDIO_TEST=$(if $(VBOX_WITH_ADDITIONS_SHIPPING_AUDIO_TEST),1,0)' \
273 -E 'VBOX_WITH_LICENSE_INSTALL_RTF=$(if $(VBOX_BRAND_LICENSE_RTF),1,0)' \
274 -E 'VBOX_WITH_WDDM=$(if $(VBOX_WITH_WDDM),1,0)' \
275 -E 'VBOX_WITH_WDDM_DX=$(if $(VBOX_WITH_WDDM_DX),1,0)' \
276 -E 'VBOX_WITH_MESA3D=$(if $(VBOX_WITH_MESA3D),1,0)' \
277 -E 'VBOX_BRAND_WIN_ADD_INST_DLGBMP=$(subst /,\,$(VBOX_BRAND_WIN_ADD_INST_DLGBMP))' \
278 -E 'VBOX_BRAND_LICENSE_RTF=$(subst /,\,$(VBOX_BRAND_LICENSE_RTF))' \
279 $(foreach lang,$(VBOX_INSTALLER_ADD_LANGUAGES),-E 'VBOX_BRAND_$(lang)_LICENSE_RTF=$(VBOX_BRAND_$(lang)_LICENSE_RTF)') \
280 -E 'KBUILD_TYPE=$(KBUILD_TYPE)' \
281 -E 'KBUILD_TARGET_ARCH=$(KBUILD_TARGET_ARCH)' \
282 $(foreach base, VBOX_GA_CERT_ROOT_SHA1 VBOX_GA_CERT_ROOT_SHA2 VBOX_GA_CERT_ROOT_SHA2_R3 \
283 ,-E '$(base)=$(firstword $($(base)) none)' -E '$(base)_TS=$(firstword $($(base)_TS) none)')
284
285$(PATH_STAGE_BIN)/additions/VBoxWindowsAdditions-$(KBUILD_TARGET_ARCH).exe: \
286 $(PATH_SUB_CURRENT)/VBoxGuestAdditions.nsi \
287 $(PATH_SUB_CURRENT)/VBoxGuestAdditionsCommon.nsh \
288 $(PATH_SUB_CURRENT)/VBoxGuestAdditionsExternal.nsh \
289 $(PATH_SUB_CURRENT)/VBoxGuestAdditionsLog.nsh \
290 $(PATH_SUB_CURRENT)/VBoxGuestAdditionsUninstall.nsh \
291 $(PATH_SUB_CURRENT)/VBoxGuestAdditionsUninstallOld.nsh \
292 $(PATH_SUB_CURRENT)/VBoxGuestAdditionsNT4.nsh \
293 $(PATH_SUB_CURRENT)/VBoxGuestAdditionsW2KXP.nsh \
294 $(PATH_SUB_CURRENT)/VBoxGuestAdditionsVista.nsh \
295 $(PATH_SUB_CURRENT)/dumplog.nsh \
296 $(PATH_SUB_CURRENT)/ReplaceDLL.nsh \
297 $(PATH_SUB_CURRENT)/servicepack.nsh \
298 $(PATH_SUB_CURRENT)/strstr.nsh \
299 $(PATH_SUB_CURRENT)/winver.nsh \
300 $(PATH_SUB_CURRENT)/Languages/English.nsh \
301 $(PATH_SUB_CURRENT)/Languages/German.nsh \
302 $(PATH_SUB_CURRENT)/Languages/French.nsh \
303 $(VBOX_WINDOWS_ADDITIONS_ATTESTATION_SIGNED_FILES) \
304 $(VBOX_WINDOWS_ADDITIONS_OTHER_FILES) \
305 $(VBOX_WINDOWS_ADDITIONS_ICON_FILE) \
306 $(VBOX_NSIS_ICON_FILE) \
307 $(if $(VBOX_SIGNING_MODE),$(PATH_TARGET)/uninst.exe) \
308 $(if $(VBOX_GA_ATTESTATION_SIGNING),$(PATH_OUT)/repackadd/$(VBOX_SIGNED_DRIVERS_ZIP_NAME)) \
309 $(VBOX_VERSION_STAMP) \
310 $$(VBoxDrvInst_1_STAGE_TARGET)
311 $(call MSG_L1,Creating $@, from $<)
312ifdef VBOX_GA_ATTESTATION_SIGNING # Unpack the attestation signed drivers - this is an ugly has 'ing heck hack!
313 $(TOOL_ZIP_UNPACK) -voj $(PATH_OUT)/repackadd/$(VBOX_SIGNED_DRIVERS_ZIP_NAME) -d $(PATH_STAGE_BIN)/additions/
314endif
315 $(REDIRECT) -C $(VBOX_PATH_WIN_ADD_INS_SRC) \
316 $(VB_WIN_ADD_NSIS_ENV) \
317 -- $(EXEC_X86_WIN32) $(VBOX_PATH_NSIS)/makensis.exe /NOCD /V2 \
318 $(if $(VBOX_SIGNING_MODE),'/DEXTERNAL_UNINSTALLER=1') \
319 $(if-expr defined(VBOX_SIGN_ADDITIONS) && defined(VBOX_SIGNING_MODE), \
320 '/DVBOX_SIGN_ADDITIONS=1' \
321 $(if-expr defined(VBOX_WITH_VBOX_LEGACY_TS_CA),'/DVBOX_WITH_VBOX_LEGACY_TS_CA=1') \
322 ,) \
323 $(if $(VBOX_INSTALLER_ADD_LANGUAGES),'/DVBOX_INSTALLER_ADD_LANGUAGES=1') \
324 $(foreach lang,$(VBOX_INSTALLER_ADD_LANGUAGES),'/DVBOX_BRAND_$(lang)_LICENSE_RTF=1') \
325 '$(subst /,\,$<)'
326 $(call VBOX_SIGN_FILE_FN,$@)
327
328
329ifdef VBOX_SIGNING_MODE
330#
331# This is a hack to sign the uninstaller.
332# See http://nsis.sourceforge.net/Signing_an_Uninstaller for more details.
333#
334OTHER_CLEAN += \
335 $(PATH_TARGET)/VBoxWindowsAdditions-$(KBUILD_TARGET_ARCH)-uninst.exe \
336 $(PATH_TARGET)/uninst.exe
337$(PATH_TARGET)/VBoxWindowsAdditions-$(KBUILD_TARGET_ARCH)-uninst.exe: \
338 $(PATH_SUB_CURRENT)/VBoxGuestAdditions.nsi \
339 $(PATH_SUB_CURRENT)/VBoxGuestAdditionsCommon.nsh \
340 $(PATH_SUB_CURRENT)/VBoxGuestAdditionsExternal.nsh \
341 $(PATH_SUB_CURRENT)/VBoxGuestAdditionsLog.nsh \
342 $(PATH_SUB_CURRENT)/VBoxGuestAdditionsUninstall.nsh \
343 $(PATH_SUB_CURRENT)/VBoxGuestAdditionsNT4.nsh \
344 $(PATH_SUB_CURRENT)/VBoxGuestAdditionsW2KXP.nsh \
345 $(PATH_SUB_CURRENT)/VBoxGuestAdditionsVista.nsh \
346 $(PATH_SUB_CURRENT)/dumplog.nsh \
347 $(PATH_SUB_CURRENT)/ReplaceDLL.nsh \
348 $(PATH_SUB_CURRENT)/servicepack.nsh \
349 $(PATH_SUB_CURRENT)/strstr.nsh \
350 $(PATH_SUB_CURRENT)/winver.nsh \
351 $(PATH_SUB_CURRENT)/Languages/English.nsh \
352 $(PATH_SUB_CURRENT)/Languages/German.nsh \
353 $(PATH_SUB_CURRENT)/Languages/French.nsh \
354 $(VBOX_WINDOWS_ADDITIONS_ATTESTATION_SIGNED_FILES) \
355 $(VBOX_WINDOWS_ADDITIONS_OTHER_FILES) \
356 $(VBOX_WINDOWS_ADDITIONS_ICON_FILE) \
357 $(VBOX_NSIS_ICON_FILE) \
358 $(VBOX_VERSION_STAMP) \
359 $$(VBoxDrvInst_1_STAGE_TARGET) \
360 | $$(dir $$@)
361 $(call MSG_L1,Creating $@, from $<)
362 $(QUIET)$(REDIRECT) -C $(VBOX_PATH_WIN_ADD_INS_SRC) \
363 $(VB_WIN_ADD_NSIS_ENV) \
364 -- $(EXEC_X86_WIN32) $(VBOX_PATH_NSIS)/makensis.exe /NOCD /V2 \
365 $(if $(VBOX_SIGN_ADDITIONS),'/DVBOX_SIGN_ADDITIONS=1') \
366 $(if $(VBOX_WITH_VBOX_LEGACY_TS_CA),'/DVBOX_WITH_VBOX_LEGACY_TS_CA=1') \
367 $(if $(VBOX_INSTALLER_ADD_LANGUAGES),'/DVBOX_INSTALLER_ADD_LANGUAGES=1') \
368 $(foreach lang,$(VBOX_INSTALLER_ADD_LANGUAGES),'/DVBOX_BRAND_$(lang)_LICENSE_RTF=1') \
369 '/DUNINSTALLER_ONLY=1' \
370 '$(subst /,\,$<)'
371
372$(PATH_TARGET)/uninst.exe: $(PATH_TARGET)/VBoxWindowsAdditions-$(KBUILD_TARGET_ARCH)-uninst.exe | $$(dir $$@)
373 $(call MSG_L1,Creating $@, from $<)
374 $(QUIET)$(RM) -f $@
375 - $<
376 $(TEST) -f $@
377 $(call VBOX_SIGN_FILE_FN,$@)
378
379endif # VBOX_SIGNING_MODE
380
381
382if defined(VBOX_GA_ATTESTATION_SIGNING) && defined(VBOX_SIGNING_MODE) && defined(VBOX_SIGN_ADDITIONS)
383#
384# This automagically attestation signs the GA drivers.
385#
386$(PATH_OUT)/repackadd/$(VBOX_SIGNED_DRIVERS_ZIP_NAME): \
387 $(PATH_OUT)/repackadd/sign-attestation.sh \
388 $(PATH_OUT)/repackadd/$(VBOX_DRIVERS_PACK_NAME)
389 $(RM_EXT) -f $(PATH_OUT)/repackadd/*.zip
390 cd $(PATH_OUT)/repackadd && $(SHELL) $(PATH_OUT)/repackadd/sign-attestation.sh $(PATH_OUT)/repackadd/$(VBOX_DRIVERS_PACK_NAME)
391 $(MV_EXT) $(PATH_OUT)/repackadd/$(VBOX_DRIVERS_PACK_NAME).*.zip $(PATH_OUT)/repackadd/$(VBOX_SIGNED_DRIVERS_ZIP_NAME)
392
393#
394# This creates a .CAB file of the driver files that should be attestation signed.
395#
396$(PATH_OUT)/repackadd/$(VBOX_DRIVERS_PACK_NAME): \
397 $(PATH_OUT)/repackadd/PackDriversForSubmission.cmd \
398# $(VBOX_WINDOWS_ADDITIONS_ATTESTATION_SIGNED_FILES) - is is unsafe, because of the 'ing ugly hack replacing most of them above during packing.
399 $(RM_EXT) -f $(PATH_OUT)/repackadd/*.cab
400 $(RM_EXT) -f $(PATH_OUT)/repackadd/*.ddf
401 $(RM_EXT) -f $(PATH_OUT)/repackadd/*.inf
402 $(RM_EXT) -f $(PATH_OUT)/repackadd/*.rpt
403 $(EXEC_X86_WIN32) cmd /c $(PATH_OUT)/repackadd/PackDriversForSubmission.cmd -b $(PATH_STAGE_BIN) -a $(KBUILD_TARGET_ARCH) \
404 -x -n --no-main --ga -o $(PATH_OUT)/repackadd/$(VBOX_DRIVERS_PACK_NAME)
405 $(call VBOX_SIGN_EV_FILE_FN,$@)
406endif # VBOX_GA_ATTESTATION_SIGNING && VBOX_SIGNING_MODE && VBOX_SIGN_ADDITIONS
407
408
409#
410# Repackaging scripts and files.
411#
412INSTALLS += RePackScriptsAdd
413RePackScriptsAdd_TEMPLATE = DUMMY
414RePackScriptsAdd_INST = repackadd/
415RePackScriptsAdd_INSTTYPE = stage
416RePackScriptsAdd_SOURCES = \
417 ../../../Installer/win/Scripts/UnpackBlessedDrivers.cmd \
418 $(RePackScriptsAdd_0_OUTDIR)/PackDriversForSubmission.cmd \
419 $(RePackScriptsAdd_0_OUTDIR)/Combined-1-Prepare.cmd \
420 $(RePackScriptsAdd_0_OUTDIR)/Combined-3-RepackAdditions.cmd \
421 $(RePackScriptsAdd_0_OUTDIR)/sign-ev.cmd
422RePackScriptsAdd_CLEAN = \
423 $(RePackScriptsAdd_0_OUTDIR)/sign-ev.cmd
424
425ifndef VBOX_OSE
426RePackScriptsAdd_SOURCES += \
427 $(RePackScriptsAdd_0_OUTDIR)/Combined-0-Additions.cmd \
428 $(RePackScriptsAdd_0_OUTDIR)/Combined-2-SignAdditions.cmd \
429 ../../../Installer/win/Scripts/sign-attestation.sh
430endif
431
432$(call VBOX_EDIT_VERSION_AND_BUILD_RULE_FN,RePackScriptsAdd,../../../Installer/win/Scripts/PackDriversForSubmission.cmd,PackDriversForSubmission.cmd)
433$(call VBOX_EDIT_VERSION_AND_BUILD_RULE_FN,RePackScriptsAdd,../../../Installer/win/Scripts/Combined-1-Prepare.cmd,Combined-1-Prepare.cmd)
434ifndef VBOX_OSE
435$(call VBOX_EDIT_VERSION_AND_BUILD_RULE_FN,RePackScriptsAdd,../../../Installer/win/Scripts/Combined-0-Additions.cmd,Combined-0-Additions.cmd)
436$(call VBOX_EDIT_VERSION_AND_BUILD_RULE_FN,RePackScriptsAdd,../../../Installer/win/Scripts/Combined-2-SignAdditions.cmd,Combined-2-SignAdditions.cmd)
437endif
438$(call VBOX_EDIT_VERSION_AND_BUILD_RULE_FN,RePackScriptsAdd,../../../Installer/win/Scripts/Combined-3-RepackAdditions.cmd,Combined-3-RepackAdditions.cmd)
439
440# The %~dp1\ oddity is working around otherwise ending with \" during
441# expansion of the CCS command line which for a reason I cannot immediately
442# understand appends a " to the path.
443$$(RePackScriptsAdd_0_OUTDIR)/sign-ev.cmd: | $$(dir $$@)
444 $(APPEND) -nt "$@" \
445 'if ".%KBUILD_DEVTOOLS%" == "." (echo KBUILD_DEVTOOLS is not set & exit /b 1)' \
446 'if ".%KBUILD_BIN_PATH%" == "." (echo KBUILD_BIN_PATH is not set & exit /b 1)' \
447 'if ".%1" == "." (echo No .cab file specified & exit /b 1)' \
448 $(subst $(KBUILD_BIN_PATH),%KBUILD_BIN_PATH%,$(subst $(KBUILD_DEVTOOLS),%KBUILD_DEVTOOLS%, \
449 '( $(call VBOX_SIGN_EV_FILE_FN,%1,%~dp1\) ) || exit /b1' \
450 ) )
451
452#
453# Repacking resources.
454#
455INSTALLS += RePackScriptsAddResources
456RePackScriptsAddResources_TEMPLATE = DUMMY
457RePackScriptsAddResources_INST = repackadd/resources/
458RePackScriptsAddResources_INSTTYPE = stage
459RePackScriptsAddResources_DIRS = Languages
460RePackScriptsAddResources_SOURCES = \
461 welcome.bmp \
462 $(VBOX_WINDOWS_ADDITIONS_ICON_FILE)=>VirtualBoxGA-vista.ico \
463 $(VBOX_NSIS_ICON_FILE)=>VirtualBoxGA-nsis.ico \
464 $(PATH_ROOT)/doc/License-gpl-3.0.rtf \
465 VBoxGuestAdditions.nsi \
466 dumplog.nsh \
467 ReplaceDLL.nsh \
468 servicepack.nsh \
469 strstr.nsh \
470 VBoxGuestAdditionsCommon.nsh \
471 VBoxGuestAdditionsExternal.nsh \
472 VBoxGuestAdditionsLog.nsh\
473 VBoxGuestAdditionsNT4.nsh \
474 VBoxGuestAdditionsUninstall.nsh \
475 VBoxGuestAdditionsUninstallOld.nsh \
476 VBoxGuestAdditionsVista.nsh\
477 VBoxGuestAdditionsW2KXP.nsh\
478 winver.nsh \
479 ISO/AUTORUN.INF \
480 ISO/NT3xReadme.txt \
481 \
482 Languages/English.nsh=>Languages/English.nsh \
483 Languages/French.nsh=>Languages/French.nsh \
484 Languages/German.nsh=>Languages/German.nsh
485
486
487#
488# NT3.x installer.
489#
490# Just for fun, this one does not use the CRT more than it really really needs
491# to. This saves space and avoid compatiblity issues, it also makes for a
492# fun challenge.
493#
494PROGRAMS.win.x86 += VBoxAddInstallNt3x
495ifdef VBOX_WITH_NOCRT_STATIC
496## @todo noCRT: the result is much too big. Got rid of log.cpp, but still pretty big. Work on reducing it.
497VBoxAddInstallNt3x_TEMPLATE := VBoxGuestR3Exe
498else
499VBoxAddInstallNt3x_TEMPLATE := VBoxGuestR3NoCrtExe
500endif
501VBoxAddInstallNt3x_SOURCES := VBoxAddInstallNt3x.cpp
502VBoxAddInstallNt3x.cpp_DEPS = $(VBOX_SVN_REV_HEADER)
503
504
505include $(FILE_KBUILD_SUB_FOOTER)
506
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use