2015-02-06 02:08:48 -04:00
|
|
|
'''
|
|
|
|
Downloads and extracts WiX to a local directory
|
|
|
|
'''
|
|
|
|
|
|
|
|
__author__ = 'Steve Dower <steve.dower@microsoft.com>'
|
|
|
|
|
|
|
|
import io
|
|
|
|
import os
|
|
|
|
import sys
|
|
|
|
|
|
|
|
from pathlib import Path
|
|
|
|
from subprocess import Popen
|
|
|
|
from zipfile import ZipFile
|
|
|
|
|
|
|
|
EXTERNALS_DIR = None
|
|
|
|
for p in Path(__file__).parents:
|
|
|
|
if any(p.glob("PCBuild/*.vcxproj")):
|
|
|
|
EXTERNALS_DIR = p / "externals"
|
|
|
|
break
|
|
|
|
|
|
|
|
if not EXTERNALS_DIR:
|
|
|
|
print("Cannot find project root")
|
|
|
|
sys.exit(1)
|
|
|
|
|
2015-02-07 19:42:53 -04:00
|
|
|
WIX_BINARIES_ZIP = 'http://wixtoolset.org/downloads/v3.10.0.1403/wix310-binaries.zip'
|
2015-02-06 02:08:48 -04:00
|
|
|
TARGET_BIN_ZIP = EXTERNALS_DIR / "wix.zip"
|
|
|
|
TARGET_BIN_DIR = EXTERNALS_DIR / "wix"
|
|
|
|
|
|
|
|
POWERSHELL_COMMAND = "[IO.File]::WriteAllBytes('{}', (Invoke-WebRequest {} -UseBasicParsing).Content)"
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
if TARGET_BIN_DIR.exists() and any(TARGET_BIN_DIR.glob("*")):
|
|
|
|
print('WiX is already installed')
|
|
|
|
sys.exit(0)
|
|
|
|
|
|
|
|
try:
|
|
|
|
TARGET_BIN_DIR.mkdir()
|
|
|
|
except FileExistsError:
|
|
|
|
pass
|
|
|
|
|
|
|
|
print('Downloading WiX to', TARGET_BIN_ZIP)
|
|
|
|
p = Popen(["powershell.exe", "-Command", POWERSHELL_COMMAND.format(TARGET_BIN_ZIP, WIX_BINARIES_ZIP)])
|
|
|
|
p.wait()
|
|
|
|
print('Extracting WiX to', TARGET_BIN_DIR)
|
|
|
|
with ZipFile(str(TARGET_BIN_ZIP)) as z:
|
|
|
|
z.extractall(str(TARGET_BIN_DIR))
|
|
|
|
TARGET_BIN_ZIP.unlink()
|
|
|
|
|
|
|
|
print('Extracted WiX')
|