3d6493d9a7479cc956ce6fcd282b5f0b4c26774b
[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     CertName - Cert 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 CertSubjName[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 echo %0 - Unknown command '%1' - 'all' or 'msi'\r
31 echo %0: %USE%\r
32 exit /B 1\r
33 \r
34 :ok\r
35 \r
36 if NOT EXIST %2 (\r
37     echo %0: Certificate-Filename not found?\r
38     echo %0 -   %2\r
39     exit /B 1\r
40 )\r
41 \r
42 rem need a Cert subject name string - name is passed in quoted!\r
43 if %3 == "" (\r
44     echo %0: %USE%\r
45     exit /B 1\r
46 )\r
47 \r
48 if "%4" == "" (\r
49     set DST=%windir%\temp\r
50 ) else (\r
51     set DST=%4\r
52 )\r
53 \r
54 if NOT EXIST %DST% (\r
55     echo %0: Installer output path %DST% not found?\r
56     exit /B 1\r
57 )\r
58 \r
59 nmake /NOLOGO /? > %DST%\jnk.txt\r
60 if ERRORLEVEL 1 (\r
61     echo %0 missing nmake.exe in PATH?\r
62     exit /B 1\r
63 )\r
64 del /Q /F %DST%\jnk.txt\r
65 \r
66 if "%1" == "all" (\r
67     rem Sign drivers for all OSes & arches. Convert CertFilename to full path.\r
68     call sign-all-drivers %CD%\%2 %3\r
69 \r
70     if ERRORLEVEL 1 (\r
71         echo %0: Error signing drivers?\r
72         exit /B 1\r
73     )\r
74 )\r
75 \r
76 :: build Windows Server 2008 / Vista (LongHorn versions) x86, x64 & ia64\r
77 \r
78 pushd wlh\r
79 call build-MSI %DST%\r
80 if ERRORLEVEL 1 exit /B\r
81 popd\r
82 \r
83 :: build Windows Server 2003 versions: x86, x64 & ia64\r
84 pushd wnet\r
85 call build-MSI %DST%\r
86 if ERRORLEVEL 1 exit /B\r
87 popd\r
88 \r
89 :: build Windows XP (32-bit) versions: x86 only\r
90 pushd wxp\r
91 call build-MSI %DST%\r
92 if ERRORLEVEL 1 exit /B\r
93 popd\r
94 \r
95 rem Digitally Sign the installer .msi files\r
96 \r
97 set TS=/t http://timestamp.verisign.com/scripts/timstamp.dll\r
98 echo %0 - Signing Installer .msi files\r
99 for %%o in ( wlh wnet wxp ) do (\r
100     for %%a in ( x86 x64 ia64 ) do (\r
101         if exist %DST%\WOF_%%o_%%a.msi (\r
102             \r
103             echo  Signing installer %DST%\WOF_%%o_%%a.msi\r
104             signtool sign /ac %CD%\%2 /n %3 %TS% %DST%\WOF_%%o_%%a.msi\r
105             if ERRORLEVEL 1 (\r
106                 echo %0 signtool sign %DST%\WOF_%%o_%%a.msi failed?\r
107                 exit /B 1\r
108             )\r
109             signtool verify /pa %DST%\WOF_%%o_%%a.msi\r
110             if ERRORLEVEL 1 (\r
111                 echo %0 signtool verify %DST%\WOF_%%o_%%a.msi failed?\r
112                 exit /B 1\r
113             )\r
114         )\r
115     )\r
116 )\r
117 \r
118 dir %DST%\*.msi\r
119 \r
120 echo ''\r
121 echo Done - WIX installers in %DST%\r
122 \r
123 @endlocal\r