cpython/Tools/msi/get_wix.py

50 lines
1.3 KiB
Python

'''
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.cwd() / __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)
WIX_BINARIES_ZIP = 'http://wixtoolset.org/downloads/v3.10.0.1823/wix310-binaries.zip'
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')