VirtualBox

source: vbox/trunk/src/VBox/Installer/win/Scripts/PackDriversForSubmission.cmd@ 98989

最後變更 在這個檔案從98989是 98989,由 vboxsync 提交於 2 年 前

Signing scripts: preparing for build time ExtPack attestation signing

  • 屬性 svn:eol-style 設為 CRLF
  • 屬性 svn:keywords 設為 Author Date Id Revision
檔案大小: 15.6 KB
 
1@echo off
2rem $Id: PackDriversForSubmission.cmd 98989 2023-03-15 15:05:21Z vboxsync $
3rem rem @file
4rem Windows NT batch script for preparing for signing submission.
5rem
6
7rem
8rem Copyright (C) 2018-2023 Oracle and/or its affiliates.
9rem
10rem This file is part of VirtualBox base platform packages, as
11rem available from https://www.alldomusa.eu.org.
12rem
13rem This program is free software; you can redistribute it and/or
14rem modify it under the terms of the GNU General Public License
15rem as published by the Free Software Foundation, in version 3 of the
16rem License.
17rem
18rem This program is distributed in the hope that it will be useful, but
19rem WITHOUT ANY WARRANTY; without even the implied warranty of
20rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21rem General Public License for more details.
22rem
23rem You should have received a copy of the GNU General Public License
24rem along with this program; if not, see <https://www.gnu.org/licenses>.
25rem
26rem SPDX-License-Identifier: GPL-3.0-only
27rem
28
29
30setlocal ENABLEEXTENSIONS
31setlocal
32
33rem
34rem Parse arguments.
35rem
36set _MY_OPT_BINDIR=..\bin
37set _MY_OPT_PDBDIR=
38set _MY_OPT_GADIR=
39set _MY_OPT_WITH_MAIN=1
40set _MY_OPT_WITH_PDB=1
41set _MY_OPT_EXTPACK=
42set _MY_OPT_NO_EXTRACT=0
43set _MY_OPT_WITH_EXTPACK=1
44set _MY_OPT_WITH_GA=0
45set _MY_OPT_OUTPUT=
46set _MY_OPT_DDF_FILE=
47set _MY_OPT_ARCH=amd64
48
49:argument_loop
50if ".%1" == "." goto no_more_arguments
51
52if ".%1" == ".-h" goto opt_h
53if ".%1" == ".-?" goto opt_h
54if ".%1" == "./h" goto opt_h
55if ".%1" == "./H" goto opt_h
56if ".%1" == "./?" goto opt_h
57if ".%1" == ".-help" goto opt_h
58if ".%1" == ".--help" goto opt_h
59
60if ".%1" == ".-a" goto opt_a
61if ".%1" == ".--arch" goto opt_a
62if ".%1" == ".-b" goto opt_b
63if ".%1" == ".--bindir" goto opt_b
64if ".%1" == ".-d" goto opt_d
65if ".%1" == ".--ddf" goto opt_d
66if ".%1" == ".-e" goto opt_e
67if ".%1" == ".--extpack" goto opt_e
68if ".%1" == ".--no-main" goto opt_m
69if ".%1" == ".-n" goto opt_n
70if ".%1" == ".--no-pdb" goto opt_n
71if ".%1" == ".-o" goto opt_o
72if ".%1" == ".--output" goto opt_o
73if ".%1" == ".-p" goto opt_p
74if ".%1" == ".--pdb" goto opt_p
75if ".%1" == ".--no-extract" goto opt_t
76if ".%1" == ".-x" goto opt_x
77if ".%1" == ".--no-extpack" goto opt_x
78if ".%1" == ".-g" goto opt_g
79if ".%1" == ".--ga" goto opt_g
80if ".%1" == ".--additions" goto opt_g
81echo syntax error: Unknown option: %1
82echo Try --help to list valid options.
83goto end_failed
84
85:argument_loop_next_with_value
86shift
87shift
88goto argument_loop
89
90:opt_a
91if ".%~2" == "." goto syntax_error_missing_value
92if not "%2" == "x86" if not "%2" == "amd64" goto syntax_error_unknown_arch
93set _MY_OPT_ARCH=%~2
94goto argument_loop_next_with_value
95
96:opt_b
97if ".%~2" == "." goto syntax_error_missing_value
98set _MY_OPT_BINDIR=%~2
99goto argument_loop_next_with_value
100
101:opt_d
102if ".%~2" == "." goto syntax_error_missing_value
103set _MY_OPT_DDF_FILE=%~2
104goto argument_loop_next_with_value
105
106:opt_e
107if ".%~2" == "." goto syntax_error_missing_value
108set _MY_OPT_EXTPACK=%~2
109goto argument_loop_next_with_value
110
111:opt_h
112echo This script creates a .cab file containing all drivers needing blessing from
113echo Microsoft to run on recent Windows 10 installations.
114echo .
115echo Usage: PackDriversForSubmission.cmd [-b bindir] [-p pdbdir] [--no-main] [-n/--no-pdb] [-e expack]
116echo [-x/--no-extpack] [-g/--ga/--additions] [-o output.cab] [-p output.ddf] [-a x86/amd64]
117echo .
118echo Warning! This script should normally be invoked from the repack directory w/o any parameters.
119goto end_failed
120
121:opt_m
122set _MY_OPT_WITH_MAIN=0
123shift
124goto argument_loop
125
126:opt_n
127set _MY_OPT_WITH_PDB=0
128shift
129goto argument_loop
130
131:opt_p
132if ".%~2" == "." goto syntax_error_missing_value
133set _MY_OPT_PDBDIR=%~2
134goto argument_loop_next_with_value
135
136:opt_o
137if ".%~2" == "." goto syntax_error_missing_value
138set _MY_OPT_OUTPUT=%~2
139goto argument_loop_next_with_value
140
141:opt_t
142set _MY_OPT_NO_EXTRACT=1
143shift
144goto argument_loop
145
146:opt_x
147set _MY_OPT_WITH_EXTPACK=0
148shift
149goto argument_loop
150
151:opt_g
152set _MY_OPT_WITH_GA=1
153shift
154goto argument_loop
155
156:syntax_error_missing_value
157echo syntax error: missing or empty option value after %1
158goto end_failed
159
160:syntax_error_unknown_arch
161echo syntax error: Unknown architecture: %2
162goto end_failed
163
164:error_bindir_does_not_exist
165echo syntax error: Specified BIN directory does not exist: "%_MY_OPT_BINDIR%"
166goto end_failed
167
168:error_pdbdir_does_not_exist
169echo syntax error: Specified PDB directory does not exist: "%_MY_OPT_PDBDIR%"
170goto end_failed
171
172:error_extpack_does_not_exist
173echo syntax error: Specified extension pack does not exist: "%_MY_OPT_EXTPACK%"
174goto end_failed
175
176:error_additions_does_not_exist
177echo syntax error: Specified guest additions does not exist: "%_MY_OPT_GADIR%"
178goto end_failed
179
180
181:error_output_exists
182echo error: The output file already exist: "%_MY_OPT_OUTPUT%"
183goto end_failed
184
185:error_ddf_exists
186echo error: The DDF file already exist: "%_MY_OPT_DDF_FILE%"
187goto end_failed
188
189:no_more_arguments
190rem validate specified options
191if not exist "%_MY_OPT_BINDIR%" goto error_bindir_does_not_exist
192
193if "%_MY_OPT_WITH_PDB%" == "0" goto no_pdbdir_validation
194if ".%_MY_OPT_PDBDIR%" == "." set _MY_OPT_PDBDIR=%_MY_OPT_BINDIR%\..\stage\debug\bin
195if not exist "%_MY_OPT_PDBDIR%" goto error_pdbdir_does_not_exist
196:no_pdbdir_validation
197
198if "%_MY_OPT_WITH_EXTPACK%" == "0" goto no_extpack_validation
199if "%_MY_OPT_NO_EXTRACT%" == "1" goto no_extpack_validation
200if ".%_MY_OPT_EXTPACK%" == "." set _MY_OPT_EXTPACK=%_MY_OPT_BINDIR%\Oracle_VM_VirtualBox_Extension_Pack.vbox-extpack
201if not exist "%_MY_OPT_EXTPACK%" goto error_extpack_does_not_exist
202:no_extpack_validation
203
204if "%_MY_OPT_WITH_GA%" == "0" goto no_additions_validation
205if ".%_MY_OPT_GADIR%" == "." set _MY_OPT_GADIR=%_MY_OPT_BINDIR%\additions
206if not exist "%_MY_OPT_GADIR%" goto error_additions_does_not_exist
207:no_additions_validation
208
209if ".%_MY_OPT_OUTPUT%" == "." set _MY_OPT_OUTPUT=VBoxDrivers-@VBOX_VERSION_STRING@r@VBOX_SVN_REV@-%_MY_OPT_ARCH%.cab
210if exist "%_MY_OPT_OUTPUT%" goto error_output_exists
211
212if ".%_MY_OPT_DDF_FILE%" == "." set _MY_OPT_DDF_FILE=%_MY_OPT_OUTPUT%.ddf
213if exist "%_MY_OPT_DDF_FILE%" goto error_ddf_exists
214
215
216rem
217rem Unpack the extension pack.
218rem We unpack it into the bin directory in the usual location.
219rem
220rem Note! Modify the path a little to ensure windows utilities are used before
221rem cygwin ones, and that we can use stuff from bin\tools if we like.
222rem
223set PATH=%SystemRoot%\System32;%PATH%;%_MY_OPT_BINDIR%
224if "%_MY_OPT_WITH_EXTPACK%" == "0" goto no_extpack_unpack
225set _MY_EXTPACK_DIR=%_MY_OPT_BINDIR%\ExtensionPacks\Oracle_VM_VirtualBox_Extension_Pack
226if not exist "%_MY_OPT_BINDIR%\ExtensionPacks" ( mkdir "%_MY_OPT_BINDIR%\ExtensionPacks" || goto end_failed )
227if not exist "%_MY_EXTPACK_DIR%" ( mkdir "%_MY_EXTPACK_DIR%" || goto end_failed )
228if "%_MY_OPT_NO_EXTRACT%" == "1" goto no_extpack_unpack
229"%_MY_OPT_BINDIR%\tools\RTTar.exe" -xzf "%_MY_OPT_EXTPACK%" -C "%_MY_EXTPACK_DIR%" || goto end_failed
230:no_extpack_unpack
231
232rem
233rem Create the DDF file for makecab.
234rem
235echo .OPTION EXPLICIT> "%_MY_OPT_DDF_FILE%" || goto end_failed
236echo .Set CabinetFileCountThreshold=0 >> "%_MY_OPT_DDF_FILE%"
237echo .Set FolderFileCountThreshold=0 >> "%_MY_OPT_DDF_FILE%"
238echo .Set FolderSizeThreshold=0 >> "%_MY_OPT_DDF_FILE%"
239echo .Set MaxCabinetSize=0 >> "%_MY_OPT_DDF_FILE%"
240echo .Set MaxDiskFileCount=0 >> "%_MY_OPT_DDF_FILE%"
241echo .Set MaxDiskSize=0 >> "%_MY_OPT_DDF_FILE%"
242echo .Set Cabinet=on>> "%_MY_OPT_DDF_FILE%"
243echo .Set CompressionType=MSZIP>> "%_MY_OPT_DDF_FILE%"
244echo .Set Compress=on>> "%_MY_OPT_DDF_FILE%"
245echo .Set DiskDirectoryTemplate= >> "%_MY_OPT_DDF_FILE%"
246echo .Set CabinetNameTemplate=%_MY_OPT_OUTPUT%>> "%_MY_OPT_DDF_FILE%"
247echo .Set InfFileName=%_MY_OPT_OUTPUT%.inf>> "%_MY_OPT_DDF_FILE%"
248echo .Set RptFileName=%_MY_OPT_OUTPUT%.rpt>> "%_MY_OPT_DDF_FILE%"
249
250if %_MY_OPT_WITH_MAIN% == 0 goto skip_main_package
251echo .Set DestinationDir=VBoxSup>> "%_MY_OPT_DDF_FILE%"
252echo %_MY_OPT_BINDIR%\VBoxSup.inf VBoxSup.inf>> "%_MY_OPT_DDF_FILE%"
253echo %_MY_OPT_BINDIR%\VBoxSup.sys VBoxSup.sys>> "%_MY_OPT_DDF_FILE%"
254if "%_MY_OPT_WITH_PDB%" == "1" echo %_MY_OPT_PDBDIR%\VBoxSup.pdb VBoxSup.pdb>> "%_MY_OPT_DDF_FILE%"
255
256echo .Set DestinationDir=VBoxNetAdp6>> "%_MY_OPT_DDF_FILE%"
257echo %_MY_OPT_BINDIR%\VBoxNetAdp6.inf VBoxNetAdp6.inf>> "%_MY_OPT_DDF_FILE%"
258echo %_MY_OPT_BINDIR%\VBoxNetAdp6.sys VBoxNetAdp6.sys>> "%_MY_OPT_DDF_FILE%"
259if "%_MY_OPT_WITH_PDB%" == "1" echo %_MY_OPT_PDBDIR%\VBoxNetAdp6.pdb VBoxNetAdp6.pdb>> "%_MY_OPT_DDF_FILE%"
260
261echo .Set DestinationDir=VBoxNetLwf>> "%_MY_OPT_DDF_FILE%"
262echo %_MY_OPT_BINDIR%\VBoxNetLwf.inf VBoxNetLwf.inf>> "%_MY_OPT_DDF_FILE%"
263echo %_MY_OPT_BINDIR%\VBoxNetLwf.sys VBoxNetLwf.sys>> "%_MY_OPT_DDF_FILE%"
264if "%_MY_OPT_WITH_PDB%" == "1" echo %_MY_OPT_PDBDIR%\VBoxNetLwf.pdb VBoxNetLwf.pdb>> "%_MY_OPT_DDF_FILE%"
265
266echo .Set DestinationDir=VBoxUSB>> "%_MY_OPT_DDF_FILE%"
267echo %_MY_OPT_BINDIR%\VBoxUSB.inf VBoxUSB.inf>> "%_MY_OPT_DDF_FILE%"
268echo %_MY_OPT_BINDIR%\VBoxUSB.sys VBoxUSB.sys>> "%_MY_OPT_DDF_FILE%"
269if "%_MY_OPT_WITH_PDB%" == "1" echo %_MY_OPT_PDBDIR%\VBoxUSB.pdb VBoxUSB.pdb>> "%_MY_OPT_DDF_FILE%"
270
271echo .Set DestinationDir=VBoxUSBMon>> "%_MY_OPT_DDF_FILE%"
272echo %_MY_OPT_BINDIR%\VBoxUSBMon.inf VBoxUSBMon.inf>> "%_MY_OPT_DDF_FILE%"
273echo %_MY_OPT_BINDIR%\VBoxUSBMon.sys VBoxUSBMon.sys>> "%_MY_OPT_DDF_FILE%"
274if "%_MY_OPT_WITH_PDB%" == "1" echo %_MY_OPT_PDBDIR%\VBoxUSBMon.pdb VBoxUSBMon.pdb>> "%_MY_OPT_DDF_FILE%"
275
276echo .Set DestinationDir=VMMR0>> "%_MY_OPT_DDF_FILE%"
277echo .\VMMR0.inf VMMR0.inf>> "%_MY_OPT_DDF_FILE%"
278echo %_MY_OPT_BINDIR%\VMMR0.r0 VMMR0.r0>> "%_MY_OPT_DDF_FILE%"
279if "%_MY_OPT_WITH_PDB%" == "1" echo %_MY_OPT_PDBDIR%\VMMR0.pdb VMMR0.pdb>> "%_MY_OPT_DDF_FILE%"
280echo %_MY_OPT_BINDIR%\VBoxDDR0.r0 VBoxDDR0.r0>> "%_MY_OPT_DDF_FILE%"
281:skip_main_package
282
283if "%_MY_OPT_WITH_PDB%" == "1" echo %_MY_OPT_PDBDIR%\VBoxDDR0.pdb VBoxDDR0.pdb>> "%_MY_OPT_DDF_FILE%"
284
285if "%_MY_OPT_WITH_EXTPACK%" == "0" goto no_extpack_ddf
286echo .Set DestinationDir=VBoxExtPackPuel>> "%_MY_OPT_DDF_FILE%"
287echo .\VBoxExtPackPuel.inf VBoxExtPackPuel.inf>> "%_MY_OPT_DDF_FILE%"
288rem echo %_MY_EXTPACK_DIR%\win.%_MY_OPT_ARCH%\VBoxEhciR0.r0 VBoxEhciR0.r0>> "%_MY_OPT_DDF_FILE%"
289echo %_MY_EXTPACK_DIR%\win.%_MY_OPT_ARCH%\VBoxNvmeR0.r0 VBoxNvmeR0.r0>> "%_MY_OPT_DDF_FILE%"
290rem echo %_MY_EXTPACK_DIR%\win.%_MY_OPT_ARCH%\VBoxPciRawR0.r0 VBoxPciRawR0.r0>> "%_MY_OPT_DDF_FILE%"
291:no_extpack_ddf
292
293if "%_MY_OPT_WITH_GA%" == "0" goto no_additions_ddf
294echo .Set DestinationDir=VBoxGuestAdditions>> "%_MY_OPT_DDF_FILE%"
295echo %_MY_OPT_GADIR%\VBoxGuest.inf>> "%_MY_OPT_DDF_FILE%"
296echo %_MY_OPT_GADIR%\VBoxGuest.sys>> "%_MY_OPT_DDF_FILE%"
297echo %_MY_OPT_GADIR%\VBoxTray.exe>> "%_MY_OPT_DDF_FILE%"
298echo %_MY_OPT_GADIR%\VBoxControl.exe>> "%_MY_OPT_DDF_FILE%"
299echo %_MY_OPT_GADIR%\VBoxMouse.inf>> "%_MY_OPT_DDF_FILE%"
300echo %_MY_OPT_GADIR%\VBoxMouse.sys>> "%_MY_OPT_DDF_FILE%"
301rem VBoxVideo files are excluded from attestation signing.
302rem echo %_MY_OPT_GADIR%\VBoxVideo.inf>> "%_MY_OPT_DDF_FILE%"
303rem echo %_MY_OPT_GADIR%\VBoxVideo.sys>> "%_MY_OPT_DDF_FILE%"
304echo %_MY_OPT_GADIR%\VBoxWddm.inf>> "%_MY_OPT_DDF_FILE%"
305echo %_MY_OPT_GADIR%\VBoxWddm.sys>> "%_MY_OPT_DDF_FILE%"
306echo %_MY_OPT_GADIR%\VBoxDX.dll>> "%_MY_OPT_DDF_FILE%"
307echo %_MY_OPT_GADIR%\VBoxDisp.dll>> "%_MY_OPT_DDF_FILE%"
308echo %_MY_OPT_GADIR%\VBoxDispD3D.dll>> "%_MY_OPT_DDF_FILE%"
309echo %_MY_OPT_GADIR%\VBoxNine.dll>> "%_MY_OPT_DDF_FILE%"
310echo %_MY_OPT_GADIR%\VBoxSVGA.dll>> "%_MY_OPT_DDF_FILE%"
311echo %_MY_OPT_GADIR%\VBoxGL.dll>> "%_MY_OPT_DDF_FILE%"
312echo %_MY_OPT_GADIR%\VBoxMRXNP.dll>> "%_MY_OPT_DDF_FILE%"
313echo %_MY_OPT_GADIR%\VBoxSF.sys>> "%_MY_OPT_DDF_FILE%"
314if ".%_MY_OPT_ARCH%" == ".x86" goto skip_amd64_files
315echo %_MY_OPT_GADIR%\VBoxDX-x86.dll>> "%_MY_OPT_DDF_FILE%"
316echo %_MY_OPT_GADIR%\VBoxDispD3D-x86.dll>> "%_MY_OPT_DDF_FILE%"
317echo %_MY_OPT_GADIR%\VBoxNine-x86.dll>> "%_MY_OPT_DDF_FILE%"
318echo %_MY_OPT_GADIR%\VBoxSVGA-x86.dll>> "%_MY_OPT_DDF_FILE%"
319echo %_MY_OPT_GADIR%\VBoxGL-x86.dll>> "%_MY_OPT_DDF_FILE%"
320:skip_amd64_files
321
322:no_additions_ddf
323
324rem
325rem Create the cabient file.
326rem Note! MakeCab is shipped on W10, so we ASSUME it's in the PATH.
327rem
328MakeCab.exe /v2 /F "%_MY_OPT_DDF_FILE%" || goto end_failed
329
330rem
331rem EV sign the cabient file.
332rem
333if not exist "sign-ev.cmd" goto end
334echo info: Now signing the created CAB file. Can take a few minutes...
335call sign-ev.cmd "%_MY_OPT_OUTPUT%" || goto end_failed
336
337goto end
338
339:end_failed
340@endlocal
341@endlocal
342@exit /b 1
343
344:end
345@endlocal
346@endlocal
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

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