[WinOF]
[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 {dest-path-for-msi-files}\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 indeed a filename only, we prefix ...\WIX before\r
11 rem             pass 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] {dest-path-for-msi-files}\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 Server 2008 / Vista (LongHorn versions) x86, x64 & ia64\r
87 \r
88 pushd wlh\r
89 call build-MSI %DST%\r
90 if ERRORLEVEL 1 exit /B\r
91 popd\r
92 \r
93 :: build Windows Server 2003 versions: x86, x64 & ia64\r
94 pushd wnet\r
95 call build-MSI %DST%\r
96 if ERRORLEVEL 1 exit /B\r
97 popd\r
98 \r
99 :: build Windows XP (32-bit) versions: x86 only\r
100 pushd wxp\r
101 call build-MSI %DST%\r
102 if ERRORLEVEL 1 exit /B\r
103 popd\r
104 \r
105 rem Digitally Sign the installer .msi files\r
106 \r
107 set TS=/t http://timestamp.verisign.com/scripts/timstamp.dll\r
108 echo %0 - Signing Installer .msi files\r
109 for %%o in ( wlh wnet wxp ) do (\r
110     for %%a in ( x86 x64 ia64 ) do (\r
111         if exist %DST%\WOF_%%o_%%a.msi (\r
112             \r
113             echo  Signing installer %DST%\WOF_%%o_%%a.msi\r
114             signtool sign /ac %CD%\%2 /n %3 %TS% %DST%\WOF_%%o_%%a.msi\r
115             if ERRORLEVEL 1 (\r
116                 echo %0 signtool sign %DST%\WOF_%%o_%%a.msi failed?\r
117                 exit /B 1\r
118             )\r
119             signtool verify /pa %DST%\WOF_%%o_%%a.msi\r
120             if ERRORLEVEL 1 (\r
121                 echo %0 signtool verify %DST%\WOF_%%o_%%a.msi failed?\r
122                 exit /B 1\r
123             )\r
124         )\r
125     )\r
126 )\r
127 \r
128 dir %DST%\*.msi\r
129 \r
130 echo ''\r
131 echo Done - WIX installers in %DST%\r
132 \r
133 @endlocal\r