blob: c6cf5d92f76a51c65c34c07307061c5e89aa96d5 [file] [log] [blame]
Steve Dowerbb240872015-02-05 22:08:48 -08001'''
2Downloads and extracts WiX to a local directory
3'''
4
5__author__ = 'Steve Dower <steve.dower@microsoft.com>'
6
7import io
8import os
9import sys
10
11from pathlib import Path
12from subprocess import Popen
13from zipfile import ZipFile
14
15EXTERNALS_DIR = None
16for p in Path(__file__).parents:
17 if any(p.glob("PCBuild/*.vcxproj")):
18 EXTERNALS_DIR = p / "externals"
19 break
20
21if not EXTERNALS_DIR:
22 print("Cannot find project root")
23 sys.exit(1)
24
Steve Dowere9ae8342015-03-20 22:05:33 -070025WIX_BINARIES_ZIP = 'http://wixtoolset.org/downloads/v3.10.0.1519/wix310-binaries.zip'
Steve Dowerbb240872015-02-05 22:08:48 -080026TARGET_BIN_ZIP = EXTERNALS_DIR / "wix.zip"
27TARGET_BIN_DIR = EXTERNALS_DIR / "wix"
28
29POWERSHELL_COMMAND = "[IO.File]::WriteAllBytes('{}', (Invoke-WebRequest {} -UseBasicParsing).Content)"
30
31if __name__ == '__main__':
32 if TARGET_BIN_DIR.exists() and any(TARGET_BIN_DIR.glob("*")):
33 print('WiX is already installed')
34 sys.exit(0)
35
36 try:
37 TARGET_BIN_DIR.mkdir()
38 except FileExistsError:
39 pass
40
41 print('Downloading WiX to', TARGET_BIN_ZIP)
42 p = Popen(["powershell.exe", "-Command", POWERSHELL_COMMAND.format(TARGET_BIN_ZIP, WIX_BINARIES_ZIP)])
43 p.wait()
44 print('Extracting WiX to', TARGET_BIN_DIR)
45 with ZipFile(str(TARGET_BIN_ZIP)) as z:
46 z.extractall(str(TARGET_BIN_DIR))
47 TARGET_BIN_ZIP.unlink()
48
49 print('Extracted WiX')