16de73e8aee315c69ae41a5888d4afa8d7edf0e7
[dcpomatic.git] / platform / windows / wscript
1 from __future__ import print_function
2 import os
3
4 def write_installer(bits, dcpomatic_version, debug, disk):
5
6     tools = [
7         ('batch', 'Batch Converter'),
8         ('kdm', 'KDM Creator'),
9         ('kdm_cli', 'KDM Creator CLI'),
10         ('player', 'Player'),
11         ('cli', 'CLI'),
12         ('create', 'Creator'),
13         ('playlist', 'Playlist Editor'),
14         ('combiner', 'Combiner'),
15         ('editor', 'Editor'),
16     ]
17
18     if disk:
19         tools.append(('disk', 'Disk Writer'))
20
21     # It would be nice to use exist_ok here but it requires quite a new python
22     try:
23         os.makedirs('build/platform/windows')
24     except:
25         pass
26
27     filename = 'build/platform/windows/installer.%d.nsi' % bits
28
29     f = open(filename, 'w')
30     print('!include "MUI2.nsh"', file=f)
31     if bits == 64:
32         print('!include "x64.nsh"', file=f)
33
34     if debug:
35         print('Name "DCP-o-matic debug"', file=f)
36     else:
37         print('Name "DCP-o-matic"', file=f)
38
39     print('RequestExecutionLevel admin', file=f)
40
41     outfile = 'DCP-o-matic '
42     if debug:
43         outfile += 'Debug '
44     outfile += '%s %d-bit Installer.exe' % (dcpomatic_version, bits)
45
46     print('outFile "%s"' % outfile, file=f)
47
48     print("""
49 !define MUI_ICON "%graphics%/windows/dcpomatic2.ico"
50 !define MUI_UNICON "%graphics%/windows/dcpomatic2.ico"
51 !define MUI_SPECIALBITMAP "%graphics%/windows/dcpomatic.bmp"
52 !include "Sections.nsh"
53     """, file=f)
54
55     if bits == 64:
56         program_files = "$PROGRAMFILES64"
57     else:
58         program_files = "$PROGRAMFILES"
59
60     if debug:
61         print('InstallDir "%s\\DCP-o-matic 2 debug"' % program_files, file=f)
62     else:
63         print('InstallDir "%s\\DCP-o-matic 2"' % program_files, file=f)
64
65     print("""
66 !insertmacro MUI_PAGE_WELCOME
67 !insertmacro MUI_PAGE_LICENSE "../../../COPYING"
68 !insertmacro MUI_PAGE_DIRECTORY
69 !insertmacro MUI_PAGE_COMPONENTS
70
71 !define SF_USELECTED  0
72 !define SF_RO         16
73
74 !macro SecUnSelect SecId
75   Push $0
76   IntOp $0 ${SF_USELECTED} | ${SF_RO}
77   SectionSetFlags ${SecId} $0
78   SectionSetText  ${SecId} ""
79   Pop $0
80 !macroend
81  
82 !define UnSelectSection '!insertmacro SecUnSelect'
83
84 Function GetOptions
85         !define GetOptions `!insertmacro GetOptionsCall`
86  
87         !macro GetOptionsCall _PARAMETERS _OPTION _RESULT
88                 Push `${_PARAMETERS}`
89                 Push `${_OPTION}`
90                 Call GetOptions
91                 Pop ${_RESULT}
92         !macroend
93  
94         Exch $1
95         Exch
96         Exch $0
97         Exch
98         Push $2
99         Push $3
100         Push $4
101         Push $5
102         Push $6
103         Push $7
104         ClearErrors
105  
106         StrCpy $2 $1 '' 1
107         StrCpy $1 $1 1
108         StrLen $3 $2
109         StrCpy $7 0
110  
111         begin:
112         StrCpy $4 -1
113         StrCpy $6 ''
114  
115         quote:
116         IntOp $4 $4 + 1
117         StrCpy $5 $0 1 $4
118         StrCmp $5$7 '0' notfound
119         StrCmp $5 '' trimright
120         StrCmp $5 '"' 0 +7
121         StrCmp $6 '' 0 +3
122         StrCpy $6 '"'
123         goto quote
124         StrCmp $6 '"' 0 +3
125         StrCpy $6 ''
126         goto quote
127         StrCmp $5 `'` 0 +7
128         StrCmp $6 `` 0 +3
129         StrCpy $6 `'`
130         goto quote
131         StrCmp $6 `'` 0 +3
132         StrCpy $6 ``
133         goto quote
134         StrCmp $5 '`' 0 +7
135         StrCmp $6 '' 0 +3
136         StrCpy $6 '`'
137         goto quote
138         StrCmp $6 '`' 0 +3
139         StrCpy $6 ''
140         goto quote
141         StrCmp $6 '"' quote
142         StrCmp $6 `'` quote
143         StrCmp $6 '`' quote
144         StrCmp $5 $1 0 quote
145         StrCmp $7 0 trimleft trimright
146  
147         trimleft:
148         IntOp $4 $4 + 1
149         StrCpy $5 $0 $3 $4
150         StrCmp $5 '' notfound
151         StrCmp $5 $2 0 quote
152         IntOp $4 $4 + $3
153         StrCpy $0 $0 '' $4
154         StrCpy $4 $0 1
155         StrCmp $4 ' ' 0 +3
156         StrCpy $0 $0 '' 1
157         goto -3
158         StrCpy $7 1
159         goto begin
160  
161         trimright:
162         StrCpy $0 $0 $4
163         StrCpy $4 $0 1 -1
164         StrCmp $4 ' ' 0 +3
165         StrCpy $0 $0 -1
166         goto -3
167         StrCpy $3 $0 1
168         StrCpy $4 $0 1 -1
169         StrCmp $3 $4 0 end
170         StrCmp $3 '"' +3
171         StrCmp $3 `'` +2
172         StrCmp $3 '`' 0 end
173         StrCpy $0 $0 -1 1
174         goto end
175  
176         notfound:
177         SetErrors
178         StrCpy $0 ''
179  
180         end:
181         Pop $7
182         Pop $6
183         Pop $5
184         Pop $4
185         Pop $3
186         Pop $2
187         Pop $1
188         Exch $0
189 FunctionEnd
190
191 Function .onInit
192 ${GetOptions} $R0 /NOSERVER= $0
193 ${If} $0 == "1"
194   ${UnSelectSection} "Encode server"
195 ${Endif}
196 FunctionEnd
197
198 Section "Common files (required)" SEC_COMMON
199 SectionIn RO
200     """, file=f)
201
202     if bits == 64:
203         print("""
204 ; disable registry redirection (enable access to 64-bit portion of registry)
205 SetRegView 64
206         """, file=f)
207
208     print("""
209 SetOutPath "$INSTDIR\\bin"
210 WriteUninstaller "$INSTDIR\\Uninstall.exe"
211
212 File "%static_deps%/bin/libintl-8.dll"
213 """, file=f)
214
215     for lib in ['chrono', 'filesystem', 'system', 'thread', 'date_time', 'locale', 'regex']:
216         print('File "%%static_deps%%/bin/libboost_%s-mt-x%d.dll"' % (lib, bits), file=f)
217
218     if bits == 32:
219         print('File "%static_deps%/bin/libgcc_s_sjlj-1.dll"', file=f)
220     else:
221         print('File "%static_deps%/bin/libgcc_s_seh-1.dll"', file=f)
222
223     print("""
224 File "%static_deps%/bin/libgio-2.0-0.dll"
225 File "%static_deps%/bin/libglib-2.0-0.dll"
226 File "%static_deps%/bin/libgobject-2.0-0.dll"
227 File "%static_deps%/bin/libiconv-2.dll"
228 File "%static_deps%/bin/libjpeg-9.dll"
229 File "%static_deps%/bin/libpng16-16.dll"
230 File "%static_deps%/bin/libsigc-2.0-0.dll"
231 File "%static_deps%/bin/libsndfile-1.dll"
232 File "%static_deps%/bin/libssh.dll"
233 File "%static_deps%/bin/libstdc++-6.dll"
234 File "%static_deps%/bin/zlib1.dll"
235 File "%static_deps%/bin/libjpeg-9.dll"
236 File "%static_deps%/bin/wxbase314u_gcc_custom.dll"
237 File "%static_deps%/bin/wxmsw314u_core_gcc_custom.dll"
238 File "%static_deps%/bin/wxmsw314u_adv_gcc_custom.dll"
239 File "%static_deps%/bin/wxmsw314u_richtext_gcc_custom.dll"
240 File "%static_deps%/bin/wxmsw314u_html_gcc_custom.dll"
241 File "%static_deps%/bin/wxmsw314u_gl_gcc_custom.dll"
242 File "%static_deps%/bin/wxmsw314u_propgrid_gcc_custom.dll"
243 File "%static_deps%/bin/wxbase314u_xml_gcc_custom.dll"
244 File "%static_deps%/bin/libcairo-2.dll"
245 File "%static_deps%/bin/libfreetype-6.dll"
246 File "%static_deps%/bin/libgthread-2.0-0.dll"
247 File "%static_deps%/bin/libpango-1.0-0.dll"
248 File "%static_deps%/bin/libgmodule-2.0-0.dll"
249 File "%static_deps%/bin/libpangocairo-1.0-0.dll"
250 File "%static_deps%/bin/libpangowin32-1.0-0.dll"
251 File "%static_deps%/bin/libtiff-5.dll"
252 File "%static_deps%/bin/libglibmm-2.4-1.dll"
253 File "%static_deps%/bin/libxml++-2.6-2.dll"
254 File "%static_deps%/bin/libxml2-2.dll"
255 File "%static_deps%/bin/libpixman-1-0.dll"
256 File "%static_deps%/bin/libfontconfig-1.dll"
257 File "%static_deps%/bin/libexpat-1.dll"
258 File "%static_deps%/bin/libbz2.dll"
259 File "%static_deps%/bin/libxmlsec1.dll"
260 File "%static_deps%/bin/libxmlsec1-openssl.dll"
261 File "%static_deps%/bin/libexslt-0.dll"
262 File "%static_deps%/bin/libxslt-1.dll"
263 File "%static_deps%/bin/libffi-6.dll"
264 File "%static_deps%/bin/openssl.exe"
265 File "%static_deps%/bin/libcurl-4.dll"
266 File "%static_deps%/bin/libzip.dll"
267 File "%static_deps%/bin/libcairomm-1.0-1.dll"
268 File "%static_deps%/bin/libpangomm-1.4-1.dll"
269 File "%static_deps%/bin/libsamplerate-0.dll"
270 File "%static_deps%/bin/libnettle-8.dll"
271 File "%static_deps%/bin/icuuc66.dll"
272 File "%static_deps%/bin/icudt66.dll"
273 File "%static_deps%/bin/icuin66.dll"
274 File "%static_deps%/bin/liblzma-5.dll"
275 File "%static_deps%/bin/libpcre-1.dll"
276 File "%static_deps%/bin/libharfbuzz-0.dll"
277 File "%static_deps%/bin/libwinpthread-1.dll"
278 File "%static_deps%/bin/libgnutls-30.dll"
279 File "%static_deps%/bin/libgmp-10.dll"
280 File "%static_deps%/bin/libhogweed-6.dll"
281 File "%static_deps%/bin/libidn2-0.dll"
282 File "%static_deps%/bin/libunistring-2.dll"
283 File "%static_deps%/bin/libssh2-1.dll"
284 File "%static_deps%/bin/libgcrypt-20.dll"
285 File "%static_deps%/bin/libgpg-error-0.dll"
286 File "%static_deps%/bin/libpangoft2-1.0-0.dll"
287 File "%static_deps%/bin/libx264-155.dll"
288 File "%static_deps%/bin/libwebp-7.dll"
289 File "%static_deps%/bin/GLEW.dll"
290 File "%static_deps%/bin/libdav1d.dll"
291     """, file=f)
292
293     if bits == 32:
294         print('File "%static_deps%/bin/libcrypto-3.dll"', file=f)
295     else:
296         print('File "%static_deps%/bin/libcrypto-3-x64.dll"', file=f)
297
298     print("""
299 File "%static_deps%/bin/libltdl-7.dll"
300 File "%static_deps%/bin/libdl.dll"
301 File /oname=dcpomatic2_verify.exe "%cdist_deps%/bin/dcpverify.exe"
302 File "%cdist_deps%/bin/leqm_nrt.dll"
303 File "%cdist_deps%/bin/asdcp-carl.dll"
304 File "%cdist_deps%/bin/kumu-carl.dll"
305     """, file=f)
306
307     if disk:
308         print("""
309 File "%static_deps%/bin/libnanomsg.dll"
310 File "%cdist_deps%/lib/libblockdev.dll"
311 File "%cdist_deps%/lib/liblwext4.dll"
312         """, file=f)
313
314     print("""
315 File "%cdist_deps%/bin/avcodec-58.dll"
316 File "%cdist_deps%/bin/avfilter-7.dll"
317 File "%cdist_deps%/bin/avformat-58.dll"
318 File "%cdist_deps%/bin/avutil-56.dll"
319 File "%cdist_deps%/bin/avdevice-58.dll"
320 File "%cdist_deps%/bin/postproc-55.dll"
321 File "%cdist_deps%/bin/swresample-3.dll"
322 File "%cdist_deps%/bin/swscale-5.dll"
323 File "%cdist_deps%/bin/dcp-1.0.dll"
324 File "%cdist_deps%/bin/cxml-0.dll"
325 File "%cdist_deps%/bin/sub-1.0.dll"
326 File "%cdist_deps%/bin/ffprobe.exe"
327 File "%cdist_deps%/src/openssl/apps/openssl.exe"
328 File "%cdist_deps%/bin/libopenjp2.dll"
329     """, file=f)
330
331     if debug:
332         print('File "%resources%/gdb_script"', file=f)
333         print('File "%resources%/dcpomatic2_debug.bat"', file=f)
334         print('File "%mingw%/bin/gdb.exe"', file=f)
335         print('File "%static_deps%/bin/libtermcap.dll"', file=f)
336         print('File "%static_deps%/bin/libreadline8.dll"', file=f)
337         print('File "%static_deps%/bin/libmman.dll"', file=f)
338         for s, l in tools:
339             print('File "%%resources%%/dcpomatic2_%s_debug.bat"' % s, file=f)
340     else:
341         print('File "%binaries%/src/wx/dcpomatic2-wx.dll"', file=f)
342         print('File "%binaries%/src/lib/dcpomatic2.dll"', file=f)
343
344     print("""
345 SetOutPath "$INSTDIR\\bin"
346
347 SetOutPath "$INSTDIR\\locale\\fr\\LC_MESSAGES"
348 File "%binaries%/src/lib/mo/fr_FR/libdcpomatic2.mo"
349 File "%binaries%/src/wx/mo/fr_FR/libdcpomatic2-wx.mo"
350 File "%binaries%/src/tools/mo/fr_FR/dcpomatic2.mo"
351 File "%static_deps%/share/locale/fr/LC_MESSAGES/wxstd.mo"
352 SetOutPath "$INSTDIR\\locale\\it\\LC_MESSAGES"
353 File "%binaries%/src/lib/mo/it_IT/libdcpomatic2.mo"
354 File "%binaries%/src/wx/mo/it_IT/libdcpomatic2-wx.mo"
355 File "%binaries%/src/tools/mo/it_IT/dcpomatic2.mo"
356 File "%static_deps%/share/locale/it/LC_MESSAGES/wxstd.mo"
357 SetOutPath "$INSTDIR\\locale\\es\\LC_MESSAGES"
358 File "%binaries%/src/lib/mo/es_ES/libdcpomatic2.mo"
359 File "%binaries%/src/wx/mo/es_ES/libdcpomatic2-wx.mo"
360 File "%binaries%/src/tools/mo/es_ES/dcpomatic2.mo"
361 File "%static_deps%/share/locale/es/LC_MESSAGES/wxstd.mo"
362 SetOutPath "$INSTDIR\\locale\\sv\\LC_MESSAGES"
363 File "%binaries%/src/lib/mo/sv_SE/libdcpomatic2.mo"
364 File "%binaries%/src/wx/mo/sv_SE/libdcpomatic2-wx.mo"
365 File "%binaries%/src/tools/mo/sv_SE/dcpomatic2.mo"
366 File "%static_deps%/share/locale/sv/LC_MESSAGES/wxstd.mo"
367 SetOutPath "$INSTDIR\\locale\\de\\LC_MESSAGES"
368 File "%binaries%/src/lib/mo/de_DE/libdcpomatic2.mo"
369 File "%binaries%/src/wx/mo/de_DE/libdcpomatic2-wx.mo"
370 File "%binaries%/src/tools/mo/de_DE/dcpomatic2.mo"
371 File "%static_deps%/share/locale/de/LC_MESSAGES/wxstd.mo"
372 SetOutPath "$INSTDIR\\locale\\nl\\LC_MESSAGES"
373 File "%binaries%/src/lib/mo/nl_NL/libdcpomatic2.mo"
374 File "%binaries%/src/wx/mo/nl_NL/libdcpomatic2-wx.mo"
375 File "%binaries%/src/tools/mo/nl_NL/dcpomatic2.mo"
376 File "%static_deps%/share/locale/nl/LC_MESSAGES/wxstd.mo"
377 SetOutPath "$INSTDIR\\locale\\ru\\LC_MESSAGES"
378 File "%binaries%/src/lib/mo/ru_RU/libdcpomatic2.mo"
379 File "%binaries%/src/wx/mo/ru_RU/libdcpomatic2-wx.mo"
380 File "%binaries%/src/tools/mo/ru_RU/dcpomatic2.mo"
381 File "%static_deps%/share/locale/ru/LC_MESSAGES/wxstd.mo"
382 SetOutPath "$INSTDIR\\locale\\pl\\LC_MESSAGES"
383 File "%binaries%/src/lib/mo/pl_PL/libdcpomatic2.mo"
384 File "%binaries%/src/wx/mo/pl_PL/libdcpomatic2-wx.mo"
385 File "%binaries%/src/tools/mo/pl_PL/dcpomatic2.mo"
386 File "%static_deps%/share/locale/pl/LC_MESSAGES/wxstd.mo"
387 SetOutPath "$INSTDIR\\locale\\da\\LC_MESSAGES"
388 File "%binaries%/src/lib/mo/da_DK/libdcpomatic2.mo"
389 File "%binaries%/src/wx/mo/da_DK/libdcpomatic2-wx.mo"
390 File "%binaries%/src/tools/mo/da_DK/dcpomatic2.mo"
391 File "%static_deps%/share/locale/da/LC_MESSAGES/wxstd.mo"
392 SetOutPath "$INSTDIR\\locale\\pt_PT\\LC_MESSAGES"
393 File "%binaries%/src/lib/mo/pt_PT/libdcpomatic2.mo"
394 File "%binaries%/src/wx/mo/pt_PT/libdcpomatic2-wx.mo"
395 File "%binaries%/src/tools/mo/pt_PT/dcpomatic2.mo"
396 SetOutPath "$INSTDIR\\locale\\pt_BR\\LC_MESSAGES"
397 File "%binaries%/src/lib/mo/pt_BR/libdcpomatic2.mo"
398 File "%binaries%/src/wx/mo/pt_BR/libdcpomatic2-wx.mo"
399 File "%binaries%/src/tools/mo/pt_BR/dcpomatic2.mo"
400 SetOutPath "$INSTDIR\\locale\\sk\\LC_MESSAGES"
401 File "%binaries%/src/lib/mo/sk_SK/libdcpomatic2.mo"
402 File "%binaries%/src/wx/mo/sk_SK/libdcpomatic2-wx.mo"
403 File "%binaries%/src/tools/mo/sk_SK/dcpomatic2.mo"
404 SetOutPath "$INSTDIR\\locale\\cs\\LC_MESSAGES"
405 File "%binaries%/src/lib/mo/cs_CZ/libdcpomatic2.mo"
406 File "%binaries%/src/wx/mo/cs_CZ/libdcpomatic2-wx.mo"
407 File "%binaries%/src/tools/mo/cs_CZ/dcpomatic2.mo"
408 File "%static_deps%/share/locale/cs/LC_MESSAGES/wxstd.mo"
409 SetOutPath "$INSTDIR\\locale\\uk\\LC_MESSAGES"
410 File "%binaries%/src/lib/mo/uk_UA/libdcpomatic2.mo"
411 File "%binaries%/src/wx/mo/uk_UA/libdcpomatic2-wx.mo"
412 File "%binaries%/src/tools/mo/uk_UA/dcpomatic2.mo"
413 SetOutPath "$INSTDIR\\locale\\zh_cn\\LC_MESSAGES"
414 File "%binaries%/src/lib/mo/zh_CN/libdcpomatic2.mo"
415 File "%binaries%/src/wx/mo/zh_CN/libdcpomatic2-wx.mo"
416 File "%binaries%/src/tools/mo/zh_CN/dcpomatic2.mo"
417 SetOutPath "$INSTDIR\\locale\\tr_tr\\LC_MESSAGES"
418 File "%binaries%/src/lib/mo/tr_TR/libdcpomatic2.mo"
419 File "%binaries%/src/wx/mo/tr_TR/libdcpomatic2-wx.mo"
420 File "%binaries%/src/tools/mo/tr_TR/dcpomatic2.mo"
421 SetOutPath "$INSTDIR\\locale\\sl_si\\LC_MESSAGES"
422 File "%binaries%/src/lib/mo/sl_SI/libdcpomatic2.mo"
423 File "%binaries%/src/wx/mo/sl_SI/libdcpomatic2-wx.mo"
424 File "%binaries%/src/tools/mo/sl_SI/dcpomatic2.mo"
425 SetOutPath "$INSTDIR\\locale\\hu_hu\\LC_MESSAGES"
426 File "%binaries%/src/lib/mo/hu_HU/libdcpomatic2.mo"
427 File "%binaries%/src/wx/mo/hu_HU/libdcpomatic2-wx.mo"
428 File "%binaries%/src/tools/mo/hu_HU/dcpomatic2.mo"
429
430 SetOutPath "$INSTDIR"
431 File "%resources%/../../fonts/LiberationSans-Regular.ttf"
432 File "%resources%/../../fonts/LiberationSans-Italic.ttf"
433 File "%resources%/../../fonts/LiberationSans-Bold.ttf"
434 File /oname=fonts.conf "%resources%/../../fonts/fonts.conf.windows"
435 File "%graphics%/splash.png"
436 File "%graphics%/zoom_white.png"
437 File "%graphics%/zoom_black.png"
438 File "%graphics%/zoom_all_white.png"
439 File "%graphics%/zoom_all_black.png"
440 File "%graphics%/select_white.png"
441 File "%graphics%/select_black.png"
442 File "%graphics%/snap_white.png"
443 File "%graphics%/snap_black.png"
444 File "%graphics%/sequence_white.png"
445 File "%graphics%/sequence_black.png"
446 File "%graphics%/me.jpg"
447 File "%graphics%/tick.png"
448 File "%graphics%/no_tick.png"
449 File "%graphics%/link.png"
450 SetOutPath "$INSTDIR\\xsd"
451 File "%cdist_deps%/share/libdcp/xsd/DCDMSubtitle-2010.xsd"
452 File "%cdist_deps%/share/libdcp/xsd/DCSubtitle.v1.mattsson.xsd"
453 File "%cdist_deps%/share/libdcp/xsd/Dolby-2012-AD.xsd"
454 File "%cdist_deps%/share/libdcp/xsd/isdcf-mca.xsd"
455 File "%cdist_deps%/share/libdcp/xsd/Main-Stereo-Picture-CPL.xsd"
456 File "%cdist_deps%/share/libdcp/xsd/PROTO-ASDCP-AM-20040311.xsd"
457 File "%cdist_deps%/share/libdcp/xsd/PROTO-ASDCP-CC-CPL-20070926.xsd"
458 File "%cdist_deps%/share/libdcp/xsd/PROTO-ASDCP-CPL-20040511.xsd"
459 File "%cdist_deps%/share/libdcp/xsd/PROTO-ASDCP-PKL-20040311.xsd"
460 File "%cdist_deps%/share/libdcp/xsd/SMPTE-335-2012.xsd"
461 File "%cdist_deps%/share/libdcp/xsd/SMPTE-395-2014-13-1-aaf.xsd"
462 File "%cdist_deps%/share/libdcp/xsd/SMPTE-429-10-2008.xsd"
463 File "%cdist_deps%/share/libdcp/xsd/SMPTE-429-12-2008.xsd"
464 File "%cdist_deps%/share/libdcp/xsd/SMPTE-429-16.xsd"
465 File "%cdist_deps%/share/libdcp/xsd/SMPTE-429-7-2006-CPL.xsd"
466 File "%cdist_deps%/share/libdcp/xsd/SMPTE-429-8-2006-PKL.xsd"
467 File "%cdist_deps%/share/libdcp/xsd/SMPTE-429-9-2007-AM.xsd"
468 File "%cdist_deps%/share/libdcp/xsd/xlink.xsd"
469 File "%cdist_deps%/share/libdcp/xsd/xmldsig-core-schema.xsd"
470 File "%cdist_deps%/share/libdcp/xsd/XMLSchema.dtd"
471 File "%cdist_deps%/share/libdcp/xsd/XMLSchema.xsd"
472 File "%cdist_deps%/share/libdcp/xsd/xml.xsd"
473 SetOutPath "$INSTDIR\\tags"
474 File "%cdist_deps%/share/libdcp/tags/extlang"
475 File "%cdist_deps%/share/libdcp/tags/language"
476 File "%cdist_deps%/share/libdcp/tags/region"
477 File "%cdist_deps%/share/libdcp/tags/script"
478 File "%cdist_deps%/share/libdcp/tags/variant"
479 File "%cdist_deps%/share/libdcp/tags/dcnc"
480 SetOutPath "$INSTDIR"
481 File "%cdist_deps%/share/libdcp/ratings"
482
483 SectionEnd
484     """, file=f)
485
486     if debug:
487         print('Section "DCP-o-matic 2 debug" SEC_MASTER', file=f)
488     else:
489         print('Section "DCP-o-matic 2" SEC_MASTER', file=f)
490
491     print('SetOutPath "$INSTDIR\\bin"', file=f)
492
493     if debug:
494         print('CreateDirectory "$SMPROGRAMS\\DCP-o-matic 2 debug"', file=f)
495     else:
496         print('CreateDirectory "$SMPROGRAMS\\DCP-o-matic 2"', file=f)
497
498     print('File "%binaries%/src/tools/dcpomatic2.exe"', file=f)
499     for s, l in tools:
500         print('File "%%binaries%%/src/tools/dcpomatic2_%s.exe"' % s, file=f)
501
502     if disk:
503         print("""
504 File "%binaries%/src/tools/dcpomatic2_disk_writer.exe"
505 File "%resources%/dcpomatic2_disk_writer.exe.manifest"
506     """, file=f)
507
508     if debug:
509         print('CreateShortCut "$SMPROGRAMS\\DCP-o-matic 2 debug\\DCP-o-matic 2 debug.lnk" "$INSTDIR\\bin\\dcpomatic2_debug.bat"', file=f)
510         for s, l in tools:
511             print('CreateShortCut "$SMPROGRAMS\\DCP-o-matic 2 debug\\DCP-o-matic 2 %s debug.lnk" "$INSTDIR\\bin\\dcpomatic2_%s_debug.bat" ""' % (l, s), file=f)
512         print('CreateShortCut "$SMPROGRAMS\\DCP-o-matic 2 debug\\Uninstall DCP-o-matic 2 debug.lnk" "$INSTDIR\\Uninstall.exe"', file=f)
513         print('WriteRegStr HKLM "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\DCP-o-matic 2 debug" "DisplayName" "DCP-o-matic 2 debug (remove only)"', file=f)
514         print('WriteRegStr HKLM "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\DCP-o-matic 2 debug" "UninstallString" "$INSTDIR\\Uninstall.exe"', file=f)
515     else:
516         print('CreateShortCut "$SMPROGRAMS\\DCP-o-matic 2\\DCP-o-matic 2.lnk" "$INSTDIR\\bin\\dcpomatic2.exe"', file=f)
517         for s, l in tools:
518             print('CreateShortCut "$SMPROGRAMS\\DCP-o-matic 2\\DCP-o-matic 2 %s.lnk" "$INSTDIR\\bin\\dcpomatic2_%s.exe"' % (l, s), file=f)
519         print('CreateShortCut "$SMPROGRAMS\\DCP-o-matic 2\\Uninstall DCP-o-matic 2.lnk" "$INSTDIR\\Uninstall.exe"', file=f)
520         print('WriteRegStr HKLM "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\DCP-o-matic2" "DisplayName" "DCP-o-matic 2 (remove only)"', file=f)
521         print('WriteRegStr HKLM "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\DCP-o-matic2" "UninstallString" "$INSTDIR\\Uninstall.exe"', file=f)
522
523     print("SectionEnd", file=f)
524
525     if debug:
526         print('Section "DCP-o-matic 2 debug desktop shortcuts" SEC_MASTER_DESKTOP', file=f)
527         print('CreateShortCut "$DESKTOP\\DCP-o-matic 2 debug.lnk" "$INSTDIR\\bin\\dcpomatic2_debug.bat" ""', file=f)
528         for s, l in tools:
529             print('CreateShortCut "$DESKTOP\\DCP-o-matic 2 %s debug.lnk" "$INSTDIR\\bin\\dcpomatic2_%s_debug.bat" ""' % (l, s), file=f)
530     else:
531         print('Section "DCP-o-matic 2 desktop shortcuts" SEC_MASTER_DESKTOP', file=f)
532         print('CreateShortCut "$DESKTOP\\DCP-o-matic 2.lnk" "$INSTDIR\\bin\\dcpomatic2.exe" ""', file=f)
533         for s, l in tools:
534             print('CreateShortCut "$DESKTOP\\DCP-o-matic 2 %s.lnk" "$INSTDIR\\bin\\dcpomatic2_%s.exe"' % (l, s), file=f)
535
536     print("SectionEnd", file=f)
537
538     print("""
539 Section "Encode server" SEC_SERVER
540 SetOutPath "$INSTDIR\\bin"
541 CreateDirectory "$SMPROGRAMS\\DCP-o-matic 2"
542 File "%binaries%/src/tools/dcpomatic2_server_cli.exe"
543 File "%binaries%/src/tools/dcpomatic2_server.exe"
544 CreateShortCut "$SMPROGRAMS\\DCP-o-matic 2\\DCP-o-matic 2 Encode Server.lnk" "$INSTDIR\\bin\\dcpomatic2_server.exe" "" "$INSTDIR\\bin\\dcpomatic2_server.exe" 0
545 CreateShortCut "$SMPROGRAMS\\DCP-o-matic 2\\Uninstall DCP-o-matic 2.lnk" "$INSTDIR\\Uninstall.exe" "" "$INSTDIR\\Uninstall.exe" 0
546 SectionEnd
547 Section "Encode server desktop shortcuts" SEC_SERVER_DESKTOP
548 CreateShortCut "$DESKTOP\\DCP-o-matic 2 Encode Server.lnk" "$INSTDIR\\bin\\dcpomatic2_server.exe" ""
549 SectionEnd
550     """, file=f)
551
552     if debug:
553         print('LangString DESC_SEC_MASTER ${LANG_ENGLISH} "DCP-o-matic 2 debug"', file=f)
554         print('LangString DESC_SEC_MASTER_DESKTOP ${LANG_ENGLISH} "DCP-o-matic 2 debug desktop shortcuts"', file=f)
555     else:
556         print('LangString DESC_SEC_MASTER ${LANG_ENGLISH} "DCP-o-matic 2"', file=f)
557         print('LangString DESC_SEC_MASTER_DESKTOP ${LANG_ENGLISH} "DCP-o-matic 2 desktop shortcuts"', file=f)
558         print('LangString DESC_SEC_SERVER ${LANG_ENGLISH} "DCP-o-matic 2 Encode Server"', file=f)
559         print('LangString DESC_SEC_SERVER_DESKTOP ${LANG_ENGLISH} "DCP-o-matic 2 Encode Server desktop shortcuts"', file=f)
560
561     print("""
562 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
563 !insertmacro MUI_DESCRIPTION_TEXT ${SEC_MASTER} $(DESC_SEC_MASTER)
564 !insertmacro MUI_DESCRIPTION_TEXT ${SEC_MASTER_DESKTOP} $(DESC_SEC_MASTER_DESKTOP)
565 !insertmacro MUI_DESCRIPTION_TEXT ${SEC_SERVER} $(DESC_SEC_SERVER)
566 !insertmacro MUI_DESCRIPTION_TEXT ${SEC_SERVER_DESKTOP} $(DESC_SEC_SERVER_DESKTOP)
567 !insertmacro MUI_FUNCTION_DESCRIPTION_END
568
569 !insertmacro MUI_PAGE_INSTFILES
570 !insertmacro MUI_PAGE_FINISH
571
572 !insertmacro MUI_UNPAGE_WELCOME
573 !insertmacro MUI_UNPAGE_CONFIRM
574 !insertmacro MUI_UNPAGE_INSTFILES
575 !insertmacro MUI_UNPAGE_FINISH
576 !insertmacro MUI_LANGUAGE "English"
577     """, file=f)
578
579     if debug:
580         print("""
581 Section "Uninstall"
582 RMDir /r "$INSTDIR\\*.*"
583 RMDir "$INSTDIR"
584 Delete "$DESKTOP\\DCP-o-matic 2 debug.lnk"
585         """, file=f)
586
587         for s, l in tools:
588             print('Delete "$DESKTOP\\DCP-o-matic 2 %s debug.lnk"' % l, file=f)
589
590         print("""
591 Delete "$SMPROGRAMS\\DCP-o-matic 2 debug\\*.*"
592 RmDir  "$SMPROGRAMS\\DCP-o-matic 2 debug"
593 DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\\DCP-o-matic 2 debug"
594 DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\DCP-o-matic 2 debug"
595  SectionEnd
596         """, file=f)
597     else:
598         print("""
599 Section "Uninstall"
600 RMDir /r "$INSTDIR\\*.*"
601 RMDir "$INSTDIR"
602 Delete "$DESKTOP\\DCP-o-matic 2.lnk"
603         """, file=f)
604
605         for s, l in tools:
606             print('Delete "$DESKTOP\\DCP-o-matic 2 %s.lnk"' % l)
607
608         print("""
609 Delete "$SMPROGRAMS\\DCP-o-matic 2\\*.*"
610 RmDir  "$SMPROGRAMS\\DCP-o-matic 2"
611 DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\\DCP-o-matic 2"
612 DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\DCP-o-matic 2"
613  SectionEnd
614     """, file=f)
615
616
617 def build(bld):
618     write_installer(32, bld.env.VERSION, bld.env.DEBUG, bld.env.ENABLE_DISK)
619     write_installer(64, bld.env.VERSION, bld.env.DEBUG, bld.env.ENABLE_DISK)