[WinOF] support Windows 7 WDK 7100.0.0
[mirror/winof/.git] / WinOF / WIX / build-all-MSI.bat
1 @echo off\r
2 setlocal\r
3 rem Build WIX installers (.msi) for 'all' architectures & Operating environments\r
4 rem\r
5 rem usage:\r
6 rem   %0 cmd Cross-CertFileName SPCSubjectName {msi-dest-path}\r
7 rem     cmd - if 'msi' then assume drivers already signed, only sign .msi\r
8 rem             otherwise sign all drivers and installers (.msi files)\r
9 \r
10 rem             Cross-CertFilename is a filename only, must prefix '...\WIX' before\r
11 rem             passing it down.\r
12 rem     SW_PUB - Software Publisher name in 'MY' Cert Store, see signtool /n switch\r
13 \r
14 rem *** REQUIRES nmake, common invocation from Visual C or WDK command window\r
15 rem *** Assumes current folder is WIX\\r
16 \r
17 set USE=usage %0 all/msi Certificate-FileName SW_Publisher[see signtool /n] {msi-dest-path}\r
18 \r
19 if "%1" == "" (\r
20     echo %0: %USE%\r
21     exit /B 1\r
22 )\r
23 \r
24 if "%1" == "all" (\r
25     goto ok\r
26 )\r
27 if "%1" == "msi" (\r
28     goto ok\r
29 )\r
30 if "%1" == "sign" (\r
31     goto ok\r
32 )\r
33 echo %0 - Unknown command '%1' - 'all' or 'msi'\r
34 echo %0: %USE%\r
35 exit /B 1\r
36 \r
37 :ok\r
38 \r
39 if NOT EXIST %2 (\r
40     echo %0: Certificate-Filename not found?\r
41     echo %0 -   %2\r
42     exit /B 1\r
43 )\r
44 \r
45 rem need a Cert subject name string - name is passed-in quoted!\r
46 if %3 == "" (\r
47     echo %0: %USE%\r
48     exit /B 1\r
49 )\r
50 \r
51 if "%4" == "" (\r
52     set DST=%windir%\temp\r
53 ) else (\r
54     set DST=%4\r
55 )\r
56 \r
57 if NOT EXIST %DST% (\r
58     echo %0: Installer output path %DST% not found?\r
59     exit /B 1\r
60 )\r
61 \r
62 nmake /NOLOGO /? > %DST%\jnk.txt\r
63 if ERRORLEVEL 1 (\r
64     echo %0 missing nmake.exe in PATH?\r
65     exit /B 1\r
66 )\r
67 del /Q /F %DST%\jnk.txt\r
68 \r
69 if "%1" == "msi" goto mk_msi\r
70 \r
71 rem Sign drivers for all OSes & arches. Convert CertFilename to full path.\r
72 call sign-all-drivers %CD%\%2 %3\r
73 \r
74 if ERRORLEVEL 1 (\r
75     echo %0: Error signing drivers?\r
76     exit /B 1\r
77 )\r
78 \r
79 if "%1" == "sign" (\r
80     echo %0: Drivers Signed. \r
81     exit /B 0\r
82 )\r
83 \r
84 :mk_msi\r
85 \r
86 rem build Windows 7 x86, x64 & ia64 installers\r
87 if exist win7\bin\HCA (\r
88         pushd win7\r
89         call build-MSI %DST%\r
90         if ERRORLEVEL 1 exit /B\r
91         popd\r
92 )\r
93 \r
94 rem build Windows Server 2008 / Vista (LongHorn versions) x86, x64 & ia64\r
95 \r
96 pushd wlh\r
97 call build-MSI %DST%\r
98 if ERRORLEVEL 1 exit /B\r
99 popd\r
100 \r
101 :: build Windows Server 2003 versions: x86, x64 & ia64\r
102 pushd wnet\r
103 call build-MSI %DST%\r
104 if ERRORLEVEL 1 exit /B\r
105 popd\r
106 \r
107 :: build Windows XP (32-bit) versions: x86 only\r
108 pushd wxp\r
109 call build-MSI %DST%\r
110 if ERRORLEVEL 1 exit /B\r
111 popd\r
112 \r
113 rem Digitally Sign the installer .msi files\r
114 \r
115 set TS=/t http://timestamp.verisign.com/scripts/timstamp.dll\r
116 echo %0 - Signing Installer .msi files\r
117 for %%o in ( win7 wlh wnet wxp ) do (\r
118     for %%a in ( x86 x64 ia64 ) do (\r
119         if exist %DST%\WOF_%%o_%%a.msi (\r
120             \r
121             echo  Signing installer %DST%\WOF_%%o_%%a.msi\r
122             signtool sign /ac %CD%\%2 /n %3 %TS% %DST%\WOF_%%o_%%a.msi\r
123             if ERRORLEVEL 1 (\r
124                 echo %0 signtool sign %DST%\WOF_%%o_%%a.msi failed?\r
125                 exit /B 1\r
126             )\r
127             signtool verify /pa %DST%\WOF_%%o_%%a.msi\r
128             if ERRORLEVEL 1 (\r
129                 echo %0 signtool verify %DST%\WOF_%%o_%%a.msi failed?\r
130                 exit /B 1\r
131             )\r
132         )\r
133     )\r
134 )\r
135 \r
136 dir %DST%\*.msi\r
137 \r
138 echo ''\r
139 echo Done - WIX installers in %DST%\r
140 \r
141 @endlocal\r