diff options
author | Kevin Smith <git@kismith.co.uk> | 2011-10-23 11:29:44 (GMT) |
---|---|---|
committer | Kevin Smith <git@kismith.co.uk> | 2011-11-26 15:45:48 (GMT) |
commit | 81a7776d5ab523894a7c4745baee3988ad9f1ef9 (patch) | |
tree | 7e6e7a46abb69ac61884c4a5ca81fa76f51c3c2f /BuildTools | |
parent | 0a8486091b4cbcce1df883f4be1e65a4628c539b (diff) | |
download | swift-81a7776d5ab523894a7c4745baee3988ad9f1ef9.zip swift-81a7776d5ab523894a7c4745baee3988ad9f1ef9.tar.bz2 |
Initial support for WiX installer.
dist=1 on Windows now generates .msi instead, as long as wix_bindir
is set to the path of \bin\ for WiX.
nsis is no longer used
Diffstat (limited to 'BuildTools')
-rw-r--r-- | BuildTools/SCons/SConscript.boot | 2 | ||||
-rw-r--r-- | BuildTools/SCons/Tools/wix.py | 52 |
2 files changed, 54 insertions, 0 deletions
diff --git a/BuildTools/SCons/SConscript.boot b/BuildTools/SCons/SConscript.boot index 24a8b67..2463d6c 100644 --- a/BuildTools/SCons/SConscript.boot +++ b/BuildTools/SCons/SConscript.boot @@ -32,6 +32,8 @@ if os.name == "mac" or (os.name == "posix" and os.uname()[0] == "Darwin"): if os.name == "nt" : vars.Add(PathVariable("vcredist", "MSVC redistributable dir", "", PathVariable.PathAccept)) if os.name == "nt" : + vars.Add(PathVariable("wix_bindir", "Path to WiX binaries", "", PathVariable.PathAccept)) +if os.name == "nt" : vars.Add(PackageVariable("bonjour", "Bonjour SDK location", "yes")) vars.Add(PackageVariable("openssl", "OpenSSL location", "yes")) vars.Add(PathVariable("boost_includedir", "Boost headers location", None, PathVariable.PathAccept)) diff --git a/BuildTools/SCons/Tools/wix.py b/BuildTools/SCons/Tools/wix.py new file mode 100644 index 0000000..2c5904b --- /dev/null +++ b/BuildTools/SCons/Tools/wix.py @@ -0,0 +1,52 @@ +import re, os +import SCons.Util +from subprocess import call + +def generate(env) : + print "Adding WiX to environment" + wixPath = env.get("wix_bindir", "") + if len(wixPath) > 0 and wixPath[-1] != "\\": + wixPath += "\\" + env['WIX_HEAT'] = wixPath + 'heat.exe' + env['WIX_HEAT_OPTIONS'] = '-gg -sfrag -suid -template fragment -dr ProgramFilesFolder' + env['WIX_CANDLE'] = wixPath + 'candle.exe' + env['WIX_CANDLE_OPTIONS'] = '' + env['WIX_LIGHT'] = wixPath + 'light.exe' + env['WIX_LIGHT_OPTIONS'] = '-ext WixUIExtension' + + def WiX_IncludeScanner(source, env, path, arg): + wixIncludeRegexp = re.compile(r'^\s*\<\?include (\S+.wxs)\s*\?\>\S*', re.M) + contents = source.get_contents() + includes = wixIncludeRegexp.findall(contents) + return [ "" + include for include in includes ] + + heat_builder = SCons.Builder.Builder( + action = '"$WIX_HEAT" dir Swift\\QtUI\\Swift -cg Files $WIX_HEAT_OPTIONS -o ${TARGET} -t Swift\\Packaging\\WiX\\include.xslt', + suffix = '.wxi') + + + candle_scanner = env.Scanner(name = 'wixincludefile', + function = WiX_IncludeScanner, + argument = None, + skeys = ['.wxs']) + + candle_builder = SCons.Builder.Builder( + action = '"$WIX_CANDLE" $WIX_CANDLE_OPTIONS ${SOURCES} -o ${TARGET}', + src_suffix = '.wxs', + suffix = '.wixobj', + source_scanner = candle_scanner, + src_builder = heat_builder) + + + light_builder = SCons.Builder.Builder( + action = '"$WIX_LIGHT" $WIX_LIGHT_OPTIONS -b Swift\\QtUI\\Swift ${SOURCES} -o ${TARGET}', + src_suffix = '.wixobj', + src_builder = candle_builder) + + env['BUILDERS']['WiX_Heat'] = heat_builder + env['BUILDERS']['WiX_Candle'] = candle_builder + env['BUILDERS']['WiX_Light'] = light_builder + +def exists(env) : + return True + |