ctdb-daemon: Use ctdb_parse_node_address() in ctdbd
[samba4-gss.git] / third_party / waf / waflib / extras / wix.py
blobd87bfbb1ec892a245e3aae674e3a699647ae44b4
1 #!/usr/bin/python
2 # encoding: utf-8
3 # vim: tabstop=4 noexpandtab
5 """
6 Windows Installer XML Tool (WiX)
8 .wxs --- candle ---> .wxobj --- light ---> .msi
10 bld(features='wix', some.wxs, gen='some.msi', candleflags=[..], lightflags=[..])
12 bld(features='wix', source=['bundle.wxs','WixBalExtension'], gen='setup.exe', candleflags=[..])
13 """
15 import os, copy
16 from waflib import TaskGen
17 from waflib import Task
18 from waflib.Utils import winreg
20 class candle(Task.Task):
21 run_str = '${CANDLE} -nologo ${CANDLEFLAGS} -out ${TGT} ${SRC[0].abspath()}',
23 class light(Task.Task):
24 run_str = "${LIGHT} -nologo -b ${SRC[0].parent.abspath()} ${LIGHTFLAGS} -out ${TGT} ${SRC[0].abspath()}"
26 @TaskGen.feature('wix')
27 @TaskGen.before_method('process_source')
28 def wix(self):
29 #X.wxs -> ${SRC} for CANDLE
30 #X.wxobj -> ${SRC} for LIGHT
31 #X.dll -> -ext X in ${LIGHTFLAGS}
32 #X.wxl -> wixui.wixlib -loc X.wxl in ${LIGHTFLAGS}
33 wxobj = []
34 wxs = []
35 exts = []
36 wxl = []
37 rest = []
38 for x in self.source:
39 if x.endswith('.wxobj'):
40 wxobj.append(x)
41 elif x.endswith('.wxs'):
42 wxobj.append(self.path.find_or_declare(x[:-4]+'.wxobj'))
43 wxs.append(x)
44 elif x.endswith('.dll'):
45 exts.append(x[:-4])
46 elif '.' not in x:
47 exts.append(x)
48 elif x.endswith('.wxl'):
49 wxl.append(x)
50 else:
51 rest.append(x)
52 self.source = self.to_nodes(rest) #.wxs
54 cndl = self.create_task('candle', self.to_nodes(wxs), self.to_nodes(wxobj))
55 lght = self.create_task('light', self.to_nodes(wxobj), self.path.find_or_declare(self.gen))
57 cndl.env.CANDLEFLAGS = copy.copy(getattr(self,'candleflags',[]))
58 lght.env.LIGHTFLAGS = copy.copy(getattr(self,'lightflags',[]))
60 for x in wxl:
61 lght.env.append_value('LIGHTFLAGS','wixui.wixlib')
62 lght.env.append_value('LIGHTFLAGS','-loc')
63 lght.env.append_value('LIGHTFLAGS',x)
64 for x in exts:
65 cndl.env.append_value('CANDLEFLAGS','-ext')
66 cndl.env.append_value('CANDLEFLAGS',x)
67 lght.env.append_value('LIGHTFLAGS','-ext')
68 lght.env.append_value('LIGHTFLAGS',x)
70 #wix_bin_path()
71 def wix_bin_path():
72 basekey = r"SOFTWARE\Microsoft\.NETFramework\AssemblyFolders"
73 query = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, basekey)
74 cnt=winreg.QueryInfoKey(query)[0]
75 thiskey = r'C:\Program Files (x86)\WiX Toolset v3.10\SDK'
76 for i in range(cnt-1,-1,-1):
77 thiskey = winreg.EnumKey(query,i)
78 if 'WiX' in thiskey:
79 break
80 winreg.CloseKey(query)
81 return os.path.normpath(winreg.QueryValue(winreg.HKEY_LOCAL_MACHINE, basekey+r'\\'+thiskey)+'..\\bin')
83 def configure(ctx):
84 path_list=[wix_bin_path()]
85 ctx.find_program('candle', var='CANDLE', mandatory=True, path_list = path_list)
86 ctx.find_program('light', var='LIGHT', mandatory=True, path_list = path_list)