Skip to content

Instantly share code, notes, and snippets.

@0017031
Forked from mmozeiko/!README.md
Last active June 25, 2025 06:15
Show Gist options
  • Save 0017031/4a0e6d86cdf23908c147bffc21de2ddc to your computer and use it in GitHub Desktop.
Save 0017031/4a0e6d86cdf23908c147bffc21de2ddc to your computer and use it in GitHub Desktop.
Download MSVC compiler/linker & Windows SDK without installing full Visual Studio

Forked from: https://gist.github.com/mmozeiko/7f3162ec2988e81e56d5c4e22cde9977

This downloads standalone 64-bit MSVC compiler, linker & other tools, also headers/libraries from Windows SDK into portable folder, without installing Visual Studio. Has bare minimum components - no UWP/Store/WindowsRT stuff, just files & tools for 64-bit native desktop app development.

Run python.exe portable-msvc.py and it will download output into msvc folder. By default it will download latest available MSVC & Windows SDK
(MANIFEST_URL = "https://aka.ms/vs/17/release/channel")
(https://learn.microsoft.com/en-us/visualstudio/releases/2022/release-history)

You can list available versions with python.exe portable-msvc.py --show-versions and then pass versions you want with --msvc-version and --sdk-version arguments.

To use cl.exe/link.exe from output folder, first run setup.bat - after that PATH/INCLUDE/LIB env variables will be setup to use all the tools as usual. You can also use clang-cl.exe with these includes & libraries.

To use clang-cl.exe without running setup.bat, pass extra /winsysroot msvc argument (msvc is folder name where output is stored).

# pylint: disable= global-statement, broad-exception-caught, pointless-string-statement,
# pylint: disable= missing-module-docstring, missing-function-docstring,
# pylint: disable= invalid-name, line-too-long, unnecessary-lambda-assignment
# ruff: noqa: E731
import argparse
import collections
import hashlib
import io
import json
import random
import shutil
import subprocess
import sys
import tempfile
import time
import urllib.request
import zipfile
from pathlib import Path
from typing import Tuple
import colorama
import requests
from colorama import Fore
from tqdm import tqdm
colorama.init(autoreset=True)
Total_download_bytes_count = 0
def main():
package_store_dir = Path("packages")
manifest = parse_channel(
"https://aka.ms/vs/17/release/channel",
Path("channel"),
Path("VisualStudio.vsman"),
)
msvc_ver, sdk_pkg_id = parse_manifest(
manifest
) # _ '14.40.17.10', 'microsoft.visualstudio.component.windows11sdk.26100'
out_dir = Path(f"vs2022_{msvc_ver[6:]}") # e.g. msvc_ver[6:] = 17.10
print(f"\nOUTPUT:\n\t{out_dir.resolve()}")
download_msvc(
out_dir, # _ Path('vs2022_17.10')
package_store_dir, # _ Path('packages')
msvc_ver, # _ "14.40.17.10"
manifest,
)
download_sdk(
out_dir, # _ Path('vs2022_17.10')
package_store_dir, # _ Path('packages')
sdk_pkg_id, # _ 'microsoft.visualstudio.component.windows11sdk.26100'
manifest,
)
download_and_place_runtimedebug(
out_dir, package_store_dir / "runtimedebug", manifest
)
download_and_place_msdia140(out_dir, package_store_dir / "dia_sdk", manifest)
for host, target in [("x64", "x64"), ("x86", "x86")]:
write_setup_bat(host, target, out_dir)
cleanup(out_dir) # remove "arm" dirs
print(f"\nTotal downloaded: {Total_download_bytes_count >> 20} MB\nDone!")
sys.exit(0)
def parse_channel(channel_url, channel_file, visual_studio_vsman) -> dict:
print(
f"local channel {channel_file.resolve()}"
if channel_file.exists()
else "downloading remote channel..."
)
channel: dict = json.loads(
channel_file.read_text(encoding="utf-8")
if channel_file.exists() #
else _download(channel_url, channel_file)
)
_vs = _first(
channel["channelItems"],
lambda x: x["id"] == "Microsoft.VisualStudio.Manifests.VisualStudio",
)
manifest_url = _vs["payloads"][0][
"url"
] # manifest_sha256 = _vs["payloads"][0]["sha256"] # ??? wrong sha256 ???
print(
f"local manifest {visual_studio_vsman.resolve()}"
if visual_studio_vsman.exists()
else "downloading remote VisualStudio.vsman"
)
manifest = json.loads(
visual_studio_vsman.read_text(encoding="utf-8")
if visual_studio_vsman.exists()
else _download(manifest_url, visual_studio_vsman)
)
packages = collections.defaultdict(list) # {"id":[]}
for pkg in manifest["packages"]:
packages[pkg["id"].lower()].append(pkg)
return packages
def parse_manifest(manifest):
_vc_pid: str
sdk_pid: str
_vc_pid, sdk_pid = _get_latest(manifest)
print(
f"\nDownloading\n"
f"\t{_vc_pid.replace('microsoft.visualstudio.component.', '')}\n" # _ microsoft.visualstudio.component.vc.14.40.17.10.x86.x64
f"\t{sdk_pid.replace('microsoft.visualstudio.component.', '')}\n"
) # microsoft.visualstudio.component.windows11sdk.26100
vc_ver = ".".join(_vc_pid.split(".")[4:-2]) # e.g. 14.40.17.10
return vc_ver, sdk_pid
def _get_latest(manifest: dict) -> Tuple[str, str]:
vc_dict_ = {} # {pver, pid}, e.g. '14.40' => 'microsoft.visualstudio.component.vc.14.40.17.10.x86.x64'
sdk_dict = {} # {pver, pid}, e.g. '26100' => 'microsoft.visualstudio.component.windows11sdk.26100'
pid: str
for pid in manifest.keys():
if pid.startswith("microsoft.visualstudio.component.vc") and pid.endswith(
".x86.x64"
):
ver = ".".join(pid.split(".")[4:6])
if ver[0].isnumeric():
vc_dict_[ver] = pid
elif pid.startswith(
"microsoft.visualstudio.component.windows10sdk."
) or pid.startswith("microsoft.visualstudio.component.windows11sdk."):
ver = pid.split(".")[-1]
if ver.isnumeric():
sdk_dict[ver] = pid
print(
f"\nAvaliable MSVC versions: (total {len(vc_dict_)})\n\t{' '.join(sorted(vc_dict_.keys()))}"
)
print(
f"Avaliable Windows SDK versions: (total {len(sdk_dict)})\n\t{' '.join(sorted(sdk_dict.keys()))}"
)
max_vc_ver_ = max(sorted(vc_dict_.keys()))
max_sdk_ver = max(sorted(sdk_dict.keys()))
return vc_dict_[max_vc_ver_], sdk_dict[max_sdk_ver]
def download_msvc(
output_dir: Path,
vsix_save_to_dir: Path,
ver: str, # e.g. ver = 14.40.17.10
manifest: dict,
):
global Total_download_bytes_count
output_dir.mkdir(parents=True, exist_ok=True)
vsix_save_to_dir.mkdir(parents=True, exist_ok=True)
print("\n### MSVC")
known_msvc_pkg_ids_to_download = [
# MSVC binaries
f"microsoft.vc.{ver}.tools.hostx86.targetx86.base",
f"microsoft.vc.{ver}.tools.hostx64.targetx86.base",
f"microsoft.vc.{ver}.tools.hostx64.targetx64.base",
f"microsoft.vc.{ver}.tools.hostx86.targetx86.res.base",
f"microsoft.vc.{ver}.tools.hostx64.targetx86.res.base",
f"microsoft.vc.{ver}.tools.hostx64.targetx64.res.base",
# MSVC headers
f"microsoft.vc.{ver}.crt.headers.base",
# MSVC libs
f"microsoft.vc.{ver}.crt.x86.desktop.base",
f"microsoft.vc.{ver}.crt.x64.desktop.base",
f"microsoft.vc.{ver}.crt.x86.store.base",
f"microsoft.vc.{ver}.crt.x64.store.base",
# MSVC runtime source
f"microsoft.vc.{ver}.crt.source.base",
# ASAN
f"microsoft.vc.{ver}.asan.headers.base",
f"microsoft.vc.{ver}.asan.x86.base",
f"microsoft.vc.{ver}.asan.x64.base",
f'microsoft.vc.{ver}.asan.x86.onecore.base.vsix',
# ATL
f"microsoft.vc.{ver}.atl.headers.base",
f"microsoft.vc.{ver}.atl.source.base",
f"microsoft.vc.{ver}.atl.x86.base",
f"microsoft.vc.{ver}.atl.x64.base",
# f"microsoft.vc.{version}.atl.x86.spectre.base",
# f"microsoft.vc.{version}.atl.x64.spectre.base",
# MFC
f"microsoft.vc.{ver}.mfc.headers.base",
f"microsoft.vc.{ver}.mfc.source.base",
f"microsoft.vc.{ver}.mfc.x86.base",
f"microsoft.vc.{ver}.mfc.x64.base",
f"microsoft.vc.{ver}.mfc.x86.debug.base",
f"microsoft.vc.{ver}.mfc.x64.debug.base",
f"microsoft.vc.{ver}.mfc.mbcs.base", # x86 only
f"microsoft.vc.{ver}.mfc.mbcs.debug.base", # x86 only
f"microsoft.vc.{ver}.mfc.mbcs.x64.base", # x64 only
f"microsoft.vc.{ver}.mfc.mbcs.x64.debug.base", # x64 only
# f"microsoft.visualcpp.mfc.redist.x64",
# f"microsoft.visualcpp.mfc.redist.x86",
# f"microsoft.vc.14.40.17.10.mfc.redist.x64.base",
# f"microsoft.vc.14.40.17.10.mfc.redist.x86.base",
f"microsoft.vc.{ver}.mfc.redist.x86.base",
f"microsoft.vc.{ver}.mfc.redist.x64.base",
# REDIST
# f"microsoft.vc.14.40.17.10.crt.redist.x64.base",
# f"microsoft.vc.14.40.17.10.crt.redist.x86.base",
f"microsoft.vc.{ver}.crt.redist.x86.base",
f"microsoft.vc.{ver}.crt.redist.x64.base",
# f"microsoft.visualcpp.crt.redist.x64",
# f"microsoft.visualcpp.crt.redist.x64.onecore.desktop",
# f"microsoft.visualcpp.crt.redist.x86",
# f"microsoft.visualcpp.crt.redist.x86.onecore.desktop",
# Microsoft.VC.14.41.17.11.CRT.x86.OneCore.Desktop.base.vsix
# Microsoft.VC.14.41.17.11.CRT.x64.OneCore.Desktop.base.vsix
f"microsoft.vc.{ver}.crt.x64.onecore.desktop.base",
f"microsoft.vc.{ver}.crt.x86.onecore.desktop.base",
# Contents\Msbuild\Microsoft\VC\v170\Platforms\x64\PlatformToolsets\v143\Toolset.props,targets
#"microsoft.visualstudio.vc.msbuild.v170.x64",
]
for a_msvc_pkg_id in known_msvc_pkg_ids_to_download:
try:
pkg_eng = _first(
manifest[a_msvc_pkg_id], lambda x: x.get("language") in (None, "en-US")
)
except StopIteration:
print(f"!!!{a_msvc_pkg_id=} not found")
continue
for payload in pkg_eng["payloads"]:
vsix_file_save_to = Path(vsix_save_to_dir) / "msvc" / payload["fileName"]
print()
Total_download_bytes_count += len(
_download_with_sha256(
payload["url"], payload["sha256"], vsix_file_save_to
)
)
with zipfile.ZipFile(vsix_file_save_to) as z: # unzip *.vsix files
for name in z.namelist():
if name.startswith("Contents/"):
out = output_dir / Path(name).relative_to("Contents")
# print(f"\t{out}")
out.parent.mkdir(parents=True, exist_ok=True)
out.write_bytes(z.read(name))
def download_sdk(
output_dir: Path,
sdk_save_to_dir: Path,
win_sdk_pkg_id_chosen_by_user: str, # e.g. microsoft.visualstudio.component.windows11sdk.26100
manifest: dict,
):
global Total_download_bytes_count
output_dir.mkdir(parents=True, exist_ok=True)
sdk_save_to_dir.mkdir(parents=True, exist_ok=True)
print("### Windows SDK")
known_win_sdk_pkg_ids_to_download = [ # noqa
# Windows SDK tools (like rc.exe & mt.exe)
f"Windows SDK for Windows Store Apps Tools-x86_en-us.msi",
# Windows SDK headers
f"Windows SDK for Windows Store Apps Headers-x86_en-us.msi",
f"Windows SDK for Windows Store Apps Headers OnecoreUap-x86_en-us.msi",
f"Windows SDK OnecoreUap Headers x64-x64_en-us.msi",
f"Windows SDK OnecoreUap Headers x64-x86_en-us.msi",
f"Windows SDK OnecoreUap Headers x86-x86_en-us.msi",
f"Windows SDK Desktop Headers x64-x64_en-us.msi",
f"Windows SDK Desktop Headers x64-x86_en-us.msi",
f"Windows SDK Desktop Headers x86-x86_en-us.msi",
# Windows SDK libs
f"Windows SDK for Windows Store Apps Libs-x86_en-us.msi",
f"Windows SDK Desktop Libs x64-x64_en-us.msi",
f"Windows SDK Desktop Libs x64-x86_en-us.msi",
f"Windows SDK Desktop Libs x86-x86_en-us.msi",
# CRT headers & libs
f"Universal CRT Headers Libraries and Sources-x86_en-us.msi",
# CRT redist
"Universal CRT Redistributable-x86_en-us.msi",
# Windows Kits\10\UnionMetadata\10.0.26100.0\Facade\windows.winmd
"Windows SDK Facade Windows WinMD Versioned-x86_en-us.msi",
]
_p1_in_mainfest = manifest[win_sdk_pkg_id_chosen_by_user][
0
] # e.g. manifest[26100][0]
_p2_in_mainfest = manifest[
_first(_p1_in_mainfest["dependencies"], lambda x: True).lower()
][0]
msi_xs = []
cabs = []
# download msi files
for a_pkg_id in known_win_sdk_pkg_ids_to_download:
try:
msiINfo_found_in_p2_paylods = _first(
_p2_in_mainfest["payloads"],
lambda x, to_match=a_pkg_id: x["fileName"] == rf"Installers\{to_match}",
)
msi_file_save_to = (
Path(sdk_save_to_dir)
/ "windows_sdk"
/ msiINfo_found_in_p2_paylods["fileName"]
)
print(f'"{msi_file_save_to}"')
print(msiINfo_found_in_p2_paylods["url"])
msi_xs.append(msi_file_save_to)
# find cab files that are referred in msi
cabs += list(
_get_msi_cabs(
(
data := _download_with_sha256(
msiINfo_found_in_p2_paylods["url"],
msiINfo_found_in_p2_paylods["sha256"],
msi_file_save_to,
)
)
)
)
Total_download_bytes_count += len(data)
except StopIteration:
print(f"cannot find {a_pkg_id}")
# download .cab files
for a_cab_id in cabs:
cabInfo_found_in_p2_payloads = _first(
_p2_in_mainfest["payloads"],
lambda x, to_match=a_cab_id: x["fileName"] == rf"Installers\{to_match}",
)
print(a_cab_id)
print(cabInfo_found_in_p2_payloads["url"])
cab_file_save_to = (
Path()
/ sdk_save_to_dir
/ "windows_sdk"
/ cabInfo_found_in_p2_payloads["fileName"]
).absolute()
_download_with_sha256(
cabInfo_found_in_p2_payloads["url"],
cabInfo_found_in_p2_payloads["sha256"],
cab_file_save_to,
)
print("Unpacking msi files...")
for m in msi_xs:
print(m)
print(output_dir.resolve())
msi_extract_cmd = ["lessmsi", "x", f'"{m}"', f'"{str(output_dir)}\\"']
_cmd_str = " ".join(msi_extract_cmd)
subprocess.check_call(
_cmd_str, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL
)
def download_and_place_runtimedebug(
output_dir: Path, msi_save_to_dir: Path, packages: dict
):
# place debug CRT runtime files into MSVC folder (not what real Visual Studio installer does... but is reasonable)
print("\n####", (pkg := "microsoft.visualcpp.runtimedebug.14"))
global Total_download_bytes_count
output_dir.mkdir(parents=True, exist_ok=True)
# msi_save_to_dir.mkdir(parents=True, exist_ok=True)
for host, target in [("x64", "x64"), ("x86", "x86")]:
(save_to_dir := msi_save_to_dir / target).mkdir(parents=True, exist_ok=True)
for payload in (
_first(packages[pkg], lambda p, to_match=target: p["chip"] == to_match)
)["payloads"]: # download payload files: msi and cab
# print('p1')
# print(payload["fileName"])
# print(payload["sha256"])
Total_download_bytes_count += len(
_download_with_sha256(
payload["url"],
payload["sha256"],
save_as=save_to_dir / payload["fileName"],
)
)
with tempfile.TemporaryDirectory() as tmp_msi_extract_dir: # unzip msi file
msi_extract_cmd = [
"lessmsi",
"x",
str((next(save_to_dir.glob("*.msi"))).resolve()),
f"{tmp_msi_extract_dir}\\",
]
subprocess.check_call(
msi_extract_cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL
)
_v = list((output_dir / "VC/Tools/MSVC").glob("*"))[0].name
dst_dir = Path(
output_dir / "VC/Tools/MSVC" / _v / f"bin/Host{host}/{target}"
) # e.g. vs2022_17.10_msvc_14.40_x64\VC\Tools\MSVC\14.40.33807\bin\Hostx64\x64
print(
f"Placing debug CRT runtime files into MSVC folder:\n{Fore.BLUE}{dst_dir}"
)
for src, dst in (
(src_file, dst_dir / src_file.name)
for src_file in Path(tmp_msi_extract_dir).rglob("*.*")
if not src_file.is_dir()
):
_copy_file_with_retry(src, dst)
def download_and_place_msdia140(
output_dir: Path, msi_save_to_dir: Path, packages: dict
) -> None:
# download DIA SDK and put msdia140.dll file into MSVC folder
print(f"\n### {(pkg := 'microsoft.visualc.140.dia.sdk.msi')}")
global Total_download_bytes_count
output_dir.mkdir(parents=True, exist_ok=True)
msi_save_to_dir.mkdir(parents=True, exist_ok=True)
# only one dia msi file, all dll variations included.
_msdia_dict = {
"x86": "msdia140.dll", # _ /SourceDir/Program Files/Microsoft Visual Studio 14.0/DIA SDK/bin/msdia140.dll
"x64": "amd64/msdia140.dll", # /SourceDir/Program Files/Microsoft Visual Studio 14.0/DIA SDK/bin/amd64/msdia140.dll
"arm": "arm/msdia140.dll", # _ /SourceDir/Program Files/Microsoft Visual Studio 14.0/DIA SDK/bin/arm/msdia140.dll
}
for payload in packages[pkg][0]["payloads"]:
print("p2")
print(payload["fileName"])
print(payload["sha256"])
Total_download_bytes_count += len(
_download_with_sha256(
payload["url"],
payload["sha256"],
save_as=msi_save_to_dir / payload["fileName"],
)
)
with tempfile.TemporaryDirectory() as tmp_msi_extract_dir: # unzip msi file
msi_extract_cmd = [
"lessmsi",
"x",
str((next(msi_save_to_dir.glob("*.msi"))).resolve()),
f"{tmp_msi_extract_dir}\\",
]
subprocess.check_call(
msi_extract_cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL
)
for host, target in [("x64", "x64"), ("x86", "x86")]:
src_file = (
next(Path(tmp_msi_extract_dir).rglob("DIA SDK"))
/ "bin"
/ _msdia_dict[host]
)
_v = list((output_dir / "VC/Tools/MSVC").glob("*"))[
0
].name # 14.40.33807, VC\Tools\MSVC\14.40.33807\bin\Hostx64\x86
dst_file = (
output_dir
/ "VC/Tools/MSVC"
/ _v
/ f"bin/Host{host}/{target}"
/ src_file.name
)
print(
f"Download DIA SDK and put msdia140.dll file into MSVC folder:\n{Fore.BLUE}{dst_file.parent}"
)
_copy_file_with_retry(src_file, dst_file)
def write_setup_bat(host: str, target: str, outdir: Path) -> None:
msc_v = list((outdir / "VC/Tools/MSVC").glob("*"))[0].name
sdk_v = list((outdir / "SourceDir" / "Windows Kits/10/bin").glob("*"))[0].name
setup_bat_file_path = outdir / f"{target}_setup.bat"
print(f"{msc_v=}, {sdk_v=}, \n{setup_bat_file_path}")
setup_bat_file_path.write_text(rf"""
@echo off
set ROOT=%~dp0
set MSVC_VERSION={msc_v}
set MSVC_HOST=Host{host}
set MSVC_ARCH={target}
set SDK_VERSION={sdk_v}
set SDK_ARCH={target}
set VSCMD_ARG_HOST_ARCH={host}
set VSCMD_ARG_TGT_ARCH={target}
set MSVC_ROOT=%ROOT%VC\Tools\MSVC\%MSVC_VERSION%
set SDK_INCLUDE=%ROOT%SourceDir\Windows Kits\10\Include\%SDK_VERSION%
set SDK_LIBS=%ROOT%SourceDir\Windows Kits\10\Lib\%SDK_VERSION%
set VCToolsInstallDir=%MSVC_ROOT%\
set path_no_msvc=%path%
set PATH=%MSVC_ROOT%\bin\%MSVC_HOST%\%MSVC_ARCH%;^
%ROOT%SourceDir\Windows Kits\10\bin\%SDK_VERSION%\%SDK_ARCH%;^
%ROOT%SourceDir\Windows Kits\10\bin\%SDK_VERSION%\%SDK_ARCH%\ucrt;^
%PATH%
set INCLUDE=%MSVC_ROOT%\include;^
%MSVC_ROOT%\atlmfc\include;^
%SDK_INCLUDE%\ucrt;^
%SDK_INCLUDE%\shared;^
%SDK_INCLUDE%\um;^
%SDK_INCLUDE%\winrt;^
%SDK_INCLUDE%\cppwinrt
set LIB=%MSVC_ROOT%\lib\%MSVC_ARCH%;^
%MSVC_ROOT%\atlmfc\lib\%MSVC_ARCH%;^
%SDK_LIBS%\ucrt\%SDK_ARCH%;^
%SDK_LIBS%\um\%SDK_ARCH%
REM D:\m3\vs2022_17.10\VC\Tools\MSVC\14.40.33807\atlmfc\lib\x86
echo VCToolsInstallDir=%VCToolsInstallDir%
echo/
echo INCLUDE=
echo %MSVC_ROOT%\include
echo %MSVC_ROOT%\atlmfc\include
echo %SDK_INCLUDE%\ucrt
echo %SDK_INCLUDE%\shared
echo %SDK_INCLUDE%\um
echo %SDK_INCLUDE%\winrt
echo %SDK_INCLUDE%\cppwinrt
echo/
echo LIB=
echo %MSVC_ROOT%\lib\%MSVC_ARCH%
echo %MSVC_ROOT%\atlmfc\lib\%MSVC_ARCH%
echo %SDK_LIBS%\ucrt\%SDK_ARCH%
echo %SDK_LIBS%\um\%SDK_ARCH%
echo/
echo path added:
echo %MSVC_ROOT%\bin\%MSVC_HOST%\%MSVC_ARCH%
echo %ROOT%SourceDir\Windows Kits\10\bin\%SDK_VERSION%\%SDK_ARCH%
echo %ROOT%SourceDir\Windows Kits\10\bin\%SDK_VERSION%\%SDK_ARCH%\ucrt
""")
def _first(items, cond):
return next(item for item in items if cond(item))
def _calculate_sha256(file_path):
hash_sha256 = hashlib.sha256()
with open(file_path, "rb") as f:
for chunk in iter(lambda: f.read(4096), b""):
hash_sha256.update(chunk)
return hash_sha256.hexdigest()
def _download(url: str, dst_file_path_: Path | None = None):
chunk_size = 1024 * 1024
content = io.BytesIO()
with urllib.request.urlopen(url) as res:
total_size = int(res.info().get("Content-Length", 0))
with tqdm(total=total_size, unit="B", unit_scale=True, desc=f"{url}") as pbar:
while True:
chunk = res.read(chunk_size)
if not chunk:
break
content.write(chunk)
pbar.update(len(chunk))
if dst_file_path_ is not None:
Path(dst_file_path_).write_bytes(content.getbuffer())
return content.getvalue()
def _download_with_sha256(url: str, sha256_check: str, save_as: Path):
print(save_as.resolve())
# print(sha256_check)
print(url)
save_as.parent.mkdir(parents=True, exist_ok=True)
dst_checksum = _calculate_sha256(save_as) if save_as.exists() else "None"
if dst_checksum.lower() == sha256_check.lower():
print(f"{Fore.GREEN}{str(save_as).ljust(50)} {Fore.CYAN}OK")
else:
response = requests.get(url, stream=True, timeout=5) # timeout in 5 seconds
total_size_in_bytes = int(response.headers.get("content-length", 0))
block_size = 1024 * 1024
sha256_hash = hashlib.sha256()
with (
tqdm(total=total_size_in_bytes, unit="iB", unit_scale=True) as progress_bar,
open(save_as, "wb") as file,
):
for data_ in response.iter_content(block_size):
file.write(data_)
sha256_hash.update(data_)
progress_bar.update(len(data_))
if total_size_in_bytes != 0 and progress_bar.n != total_size_in_bytes:
print("ERROR, size wrong")
elif sha256_hash.hexdigest().lower() != sha256_check.lower():
print(sha256_check)
print(f"ERROR, SHA256 mismatch: {sha256_hash.hexdigest()}")
else:
# print("Download completed successfully, and SHA256 matched.")
pass
return save_as.read_bytes()
def _get_msi_cabs(
msi_,
): # super crappy msi format parser just to find required .cab files
index = 0
while True:
index = msi_.find(b".cab", index + 4)
if index < 0:
return
yield msi_[index - 32 : index + 4].decode("ascii")
def _parse_my_args():
ap = argparse.ArgumentParser()
ap.add_argument(
"--show-versions",
const=True,
action="store_const",
help="Show available MSVC and Windows SDK versions",
)
ap.add_argument("--msvc-version", help="download specific MSVC version")
ap.add_argument("--sdk-version", help="download specific Windows SDK version")
return ap.parse_args()
def _copy_file_with_retry(src: Path, dst: Path):
print(f"{Fore.GREEN} {src.name.ljust(48)}", end="")
if _calculate_sha256(src) == (_calculate_sha256(dst) if dst.exists() else None):
print(f" {Fore.CYAN}OK")
return
for attempt in range(10):
try:
shutil.copyfile(src, dst)
print(f" {Fore.BLUE}OK (copied, {attempt + 1} try)")
break
except Exception as e:
print(f"Attempt {attempt + 1} failed with error: {e}")
time_to_wait = (
random.randint(500, 1500) / 1000
) # Convert milliseconds to seconds
print(f"Waiting for {time_to_wait} seconds before retrying...")
time.sleep(time_to_wait)
else:
shutil.copyfile(src, (new_file_path := dst.with_name(src.name + ".new")))
print(" Operation failed after 10 attempts.")
print(f"copy {src} as {new_file_path}")
def cleanup(out_dir: Path):
### cleanup
# shutil.rmtree(OUTPUT / "Common7", ignore_errors=True)
# msvcv = list((out_dir / "VC/Tools/MSVC").glob("*"))[0].name
# sdkv = list((out_dir / "SourceDir" / "Windows Kits/10/bin").glob("*"))[0].name
#
# print()
# for f in ["Auxiliary", "lib/x64/store", "lib/x64/uwp", "lib/x86/store", "lib/x86/uwp"]:
# pp = out_dir / "VC/Tools/MSVC" / msvcv / f
# print(pp.exists(), pp)
# # shutil.rmtree(out_dir / "VC/Tools/MSVC" / msvc_ver / f)
#
# # for f in OUTPUT.glob("*.msi"):
# # f.unlink()
#
# print()
# for f in ["Catalogs", "DesignTime", f"bin/{sdkv}/chpe", f"Lib/{sdkv}/ucrt_enclave"]:
# pp = out_dir / "SourceDir" / "Windows Kits/10" / f
# print(pp.exists(), pp)
# # shutil.rmtree(out_dir / "Windows Kits/10" / f, ignore_errors=True)
#
# print()
# for arch in ["arm", "arm64"]:
# pp_xs = [
# out_dir / "SourceDir" / "Windows Kits/10/bin" / sdkv / arch,
# out_dir / "SourceDir" / "Windows Kits/10/Lib" / sdkv / "ucrt" / arch,
# out_dir / "SourceDir" / "Windows Kits/10/Lib" / sdkv / "um" / arch,
# ]
# for pp in pp_xs:
# print(str(pp.exists()).ljust(10), pp)
print("\nAAAAAAA cleanup")
_dir_size = lambda path: sum(
ff.stat().st_size for ff in Path(path).rglob("*") if ff.is_file()
)
_h = lambda size_in_bytes: next(
f"{size_in_bytes / (1024**i):.2f} {unit}"
for i, unit in enumerate(["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"])
if size_in_bytes < 1024 ** (i + 1)
)
for pp in out_dir.rglob("*arm*"):
if pp.is_dir():
# print(_h(dir_size(pp)), pp)
print(f"removing {pp}")
shutil.rmtree(pp)
# shutil.rmtree(out_dir / "VC/Tools/MSVC" / msvcv / f"bin/Host{arch}", ignore_errors=True)
# shutil.rmtree(out_dir / "Windows Kits/10/bin" / sdkv / arch)
# shutil.rmtree(out_dir / "Windows Kits/10/Lib" / sdkv / "ucrt" / arch)
# shutil.rmtree(out_dir / "Windows Kits/10/Lib" / sdkv / "um" / arch)
r"""
rg """ "id" """:.+Win.+SDK VisualStudio.vsman.jsonc
355143: "id": "Microsoft.VisualStudio.Component.Windows10SDK",
355237: "id": "Microsoft.VisualStudio.Component.Windows10SDK.18362",
355331: "id": "Microsoft.VisualStudio.Component.Windows10SDK.19041",
355425: "id": "Microsoft.VisualStudio.Component.Windows10SDK.20348",
355519: "id": "Microsoft.VisualStudio.Component.Windows10SDK.IpOverUsb",
355635: "id": "Microsoft.VisualStudio.Component.Windows11SDK.22000",
355729: "id": "Microsoft.VisualStudio.Component.Windows11SDK.22621",
355823: "id": "Microsoft.VisualStudio.Component.Windows11SDK.26100",
362028: "id": "Microsoft.VisualStudio.ComponentGroup.WindowsAppSDK.Cpp",
362210: "id": "Microsoft.VisualStudio.ComponentGroup.WindowsAppSDK.Cs",
479166: "id": "Microsoft.Windows.SDK.BuildTools_10.0.22621.3233",
479185: "id": "Microsoft.Windows.UniversalCRT.ExtensionSDK.Msi",
479792: "id": "Microsoft.WindowsAppSDK.Cpp.Dev17",
479813: "id": "Microsoft.WindowsAppSDK.Cs.Dev17",
486049: "id": "Win10SDK_10.0.18362",
488547: "id": "Win10SDK_10.0.19041",
491075: "id": "Win10SDK_10.0.20348",
493624: "id": "Win10SDK_IpOverUsb",
493744: "id": "Win11SDK_10.0.22000",
496334: "id": "Win11SDK_10.0.22000",
498924: "id": "Win11SDK_10.0.22000",
501514: "id": "Win11SDK_10.0.22621",
504217: "id": "Win11SDK_10.0.26100",
506670: "id": "Win11SDK_WindowsPerformanceToolkit",
"""
"""
Windows SDK Desktop Headers x86-x86_en-us.msi
Windows SDK Desktop Libs x86-x86_en-us.msi
Windows SDK Desktop Tools x86-x86_en-us.msi
Windows SDK DirectX x86 Remote-x86_en-us.msi
Windows SDK EULA-x86_en-us.msi
Windows SDK Facade Windows WinMD Versioned-x86_en-us.msi
Windows SDK Modern Non-Versioned Developer Tools-x86_en-us.msi
Windows SDK Modern Versioned Developer Tools-x86_en-us.msi
Windows SDK OnecoreUap Headers x86-x86_en-us.msi
Windows SDK Redistributables-x86_en-us.msi
Windows SDK Signing Tools-x86_en-us.msi
Windows SDK for Windows Store Apps Contracts-x86_en-us.msi
Windows SDK for Windows Store Apps DirectX x86 Remote-x86_en-us.msi
Windows SDK for Windows Store Apps Headers OnecoreUap-x86_en-us.msi
Windows SDK for Windows Store Apps Headers-x86_en-us.msi
Windows SDK for Windows Store Apps Legacy Tools-x86_en-us.msi
Windows SDK for Windows Store Apps Libs-x86_en-us.msi
Windows SDK for Windows Store Apps Metadata-x86_en-us.msi
Windows SDK for Windows Store Apps Tools-x86_en-us.msi
Windows SDK for Windows Store Apps-x86_en-us.msi
Windows SDK for Windows Store Managed Apps Libs-x86_en-us.msi
Windows SDK-x86_en-us.msi
Windows SDK Desktop Headers x64-x86_en-us.msi
Windows SDK Desktop Libs x64-x86_en-us.msi
Windows SDK Desktop Tools x64-x86_en-us.msi
Windows SDK DirectX x64 Remote-x64_en-us.msi
Windows SDK OnecoreUap Headers x64-x86_en-us.msi
Windows SDK for Windows Store Apps DirectX x64 Remote-x64_en-us.msi
"""
# args = parse_my_args()
# _msvc_ver = args.msvc_version or max(sorted(msvc_versions.keys()))
# sdk_ver = args.sdk_version or max(sorted(sdk_versions.keys()))
# _msvc_pid = msvc_versions[_msvc_ver]
if __name__ == "__main__":
main()
# Microsoft.VC.14.41.17.11.MFC.Headers.base.vsix
# Microsoft.VC.14.41.17.11.MFC.Headers.vsix
# Microsoft.VC.14.41.17.11.MFC.MBCS.Debug.base.vsix
# Microsoft.VC.14.41.17.11.MFC.MBCS.X64.Debug.base.vsix
# Microsoft.VC.14.41.17.11.MFC.MBCS.X64.base.vsix
# Microsoft.VC.14.41.17.11.MFC.MBCS.X64.vsix
# Microsoft.VC.14.41.17.11.MFC.MBCS.base.vsix
# Microsoft.VC.14.41.17.11.MFC.MBCS.vsix
# Microsoft.VC.14.41.17.11.MFC.Source.base.vsix
# Microsoft.VC.14.41.17.11.MFC.Source.vsix
# Microsoft.VC.14.41.17.11.MFC.X64.Debug.base.vsix
# Microsoft.VC.14.41.17.11.MFC.X64.base.vsix
# Microsoft.VC.14.41.17.11.MFC.X64.vsix
# Microsoft.VC.14.41.17.11.MFC.X86.Debug.base.vsix
# Microsoft.VC.14.41.17.11.MFC.X86.base.vsix
# Microsoft.VC.14.41.17.11.MFC.X86.vsix
# Microsoft.VC.14.41.17.11.Props.ATLMFC.vsix
# Microsoft.VC.14.41.17.11.Servicing.MFC.vsix
# Microsoft.VC.14.41.17.11.MFC.Headers.vsix
# Microsoft.VC.14.41.17.11.MFC.Headers.base.vsix
# Microsoft.VC.14.41.17.11.MFC.MBCS.vsix
# Microsoft.VC.14.41.17.11.MFC.MBCS.base.vsix
# Microsoft.VC.14.41.17.11.MFC.MBCS.Debug.base.vsix
# Microsoft.VC.14.41.17.11.MFC.MBCS.Debug.Spectre.base.vsix
# Microsoft.VC.14.41.17.11.MFC.MBCS.Spectre.vsix
# Microsoft.VC.14.41.17.11.MFC.MBCS.Spectre.base.vsix
# Microsoft.VC.14.41.17.11.MFC.MBCS.X64.vsix
# Microsoft.VC.14.41.17.11.MFC.MBCS.X64.base.vsix
# Microsoft.VC.14.41.17.11.MFC.MBCS.X64.Debug.base.vsix
# Microsoft.VC.14.41.17.11.MFC.MBCS.X64.Debug.Spectre.base.vsix
# Microsoft.VC.14.41.17.11.MFC.MBCS.X64.Spectre.vsix
# Microsoft.VC.14.41.17.11.MFC.MBCS.X64.Spectre.base.vsix
# Microsoft.VC.14.41.17.11.MFC.Source.vsix
# Microsoft.VC.14.41.17.11.MFC.Source.base.vsix
# Microsoft.VC.14.41.17.11.MFC.X64.vsix
# Microsoft.VC.14.41.17.11.MFC.X64.base.vsix
# Microsoft.VC.14.41.17.11.MFC.X64.Debug.base.vsix
# Microsoft.VC.14.41.17.11.MFC.X64.Debug.Spectre.base.vsix
# Microsoft.VC.14.41.17.11.MFC.X64.Spectre.vsix
# Microsoft.VC.14.41.17.11.MFC.X64.Spectre.base.vsix
# Microsoft.VC.14.41.17.11.MFC.X86.vsix
# Microsoft.VC.14.41.17.11.MFC.X86.base.vsix
# Microsoft.VC.14.41.17.11.MFC.X86.Debug.base.vsix
# Microsoft.VC.14.41.17.11.MFC.X86.Debug.Spectre.base.vsix
# Microsoft.VC.14.41.17.11.MFC.X86.Spectre.vsix
# Microsoft.VC.14.41.17.11.MFC.X86.Spectre.base.vsix
# Microsoft.VC.14.41.17.11.Props.ATLMFC.vsix
# Microsoft.VC.14.41.17.11.Servicing.MFC.vsix
r"""
>python portable-msvc.py
downloading remote channel...
https://aka.ms/vs/17/release/channel: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 103k/103k [00:00<00:00, 103MB/s]
downloading remote VisualStudio.vsman
https://download.visualstudio.microsoft.com/download/pr/f73d49f7-22b6-4a11-b980-72f3daae77a6/7bfb5ed8b5186833eecd28b4cebaab96f4dcd7c0fe0459e73da209e2cca351db/VisualStudio.vsman: 100%|█| 16.
Avaliable MSVC versions: (total 13)
14.29 14.30 14.31 14.32 14.33 14.34 14.35 14.36 14.37 14.38 14.39 14.40 14.41
Avaliable Windows SDK versions: (total 6)
18362 19041 20348 22000 22621 26100
Downloading
vc.14.41.17.11.x86.x64
windows11sdk.26100
OUTPUT:
D:\m5\vs2022_17.11
### MSVC
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.Tools.HostX86.TargetX86.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/9856e27972cd6099c7a78ca940ebdfd200a65518326a25cc3238f275550f7f71/Microsoft.VC.14.41.17.11.Tools.HostX86.TargetX86.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 20.0M/20.0M [00:02<00:00, 9.30MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.Tools.HostX64.TargetX86.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/fd2cb90a63bb26e800df366256473c13b5d1ad147d134ba2ffde61ad8ba03e8f/Microsoft.VC.14.41.17.11.Tools.HostX64.TargetX86.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 22.3M/22.3M [00:02<00:00, 9.62MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.Tools.HostX64.TargetX64.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/ddffb2addf762a1e35c1961ac3094b2c8489e72b362cab2e669b989b6300aeef/Microsoft.VC.14.41.17.11.Tools.HostX64.TargetX64.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 21.3M/21.3M [00:02<00:00, 9.77MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.Tools.HostX86.TargetX86.Res.base.enu.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/0b0a39235f258d88f2bf4284d229a6b27cbe3890c3042fd9d08d639568cc7243/Microsoft.VC.14.41.17.11.Tools.HostX86.TargetX86.Res.base.enu.vsix
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 228k/228k [00:00<00:00, 3.31MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.Tools.HostX64.TargetX86.Res.base.enu.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/be735def5b9609f8e6200a0fd2dbc5110958f9256d7c79a3fadd7b41dd4c1e56/Microsoft.VC.14.41.17.11.Tools.HostX64.TargetX86.Res.base.enu.vsix
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 228k/228k [00:00<00:00, 6.01MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.Tools.HostX64.TargetX64.Res.base.enu.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/36553c3ae75c318cec16b02b3d7fab103033a4686fb5e96eeb70cbbc5e316940/Microsoft.VC.14.41.17.11.Tools.HostX64.TargetX64.Res.base.enu.vsix
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 228k/228k [00:00<00:00, 3.17MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.CRT.Headers.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/dac745db754d321d1b9acc051e47207671f455591d38279683c665ba4703f69e/Microsoft.VC.14.41.17.11.CRT.Headers.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2.07M/2.07M [00:00<00:00, 8.42MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.CRT.x86.Desktop.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/82c572931de07ec1a8cd057882a0dae2b1a72bd9dd905e2baf4c658b8139e8cb/Microsoft.VC.14.41.17.11.CRT.x86.Desktop.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 72.6M/72.6M [00:06<00:00, 11.4MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.CRT.x64.Desktop.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/68302474e767c40359da2978609963e260981a25384c9df89c7cad5db7fd9135/Microsoft.VC.14.41.17.11.CRT.x64.Desktop.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50.1M/50.1M [00:05<00:00, 9.90MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.CRT.x86.Store.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/4b9f8868e54b8747bca39bc14ec3ee40ef04a82405c95303005ed69161ae2798/Microsoft.VC.14.41.17.11.CRT.x86.Store.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 25.1M/25.1M [00:02<00:00, 9.93MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.CRT.x64.Store.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/42128d672f2ffb81cd502104801aa772679ead9b76c2ef7cf71e545802944a8f/Microsoft.VC.14.41.17.11.CRT.x64.Store.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 25.6M/25.6M [00:02<00:00, 9.85MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.CRT.Source.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/11144cf6654d1666961e86f97d70d3577fe537147003a9cb7804bbbd3d424469/Microsoft.VC.14.41.17.11.CRT.Source.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1.12M/1.12M [00:00<00:00, 8.32MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.ASAN.Headers.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/e790a09e84762cd60ec955650305cb9f471e75ed3906b64f63920f041a5da6b8/Microsoft.VC.14.41.17.11.ASAN.Headers.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 94.4k/94.4k [00:00<00:00, 2.48MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.ASAN.X86.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/a07adfbba24168c8d9fca5685e504d8f537adc0c862edb41cb4fb16a314ce9fe/Microsoft.VC.14.41.17.11.ASAN.X86.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 71.4M/71.4M [00:06<00:00, 11.3MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.ASAN.X64.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/baf3a2a73ce38d4f2008a7207e520977caa2a950878207d1ad5a8f2041010037/Microsoft.VC.14.41.17.11.ASAN.X64.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 76.9M/76.9M [00:06<00:00, 11.4MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.ATL.Headers.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/6233365ef6a2c60b7273c7e12f03ba758340a8a8566a3c281c7034aeeff4c46f/Microsoft.VC.14.41.17.11.ATL.Headers.base.vsix
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 582k/582k [00:00<00:00, 4.85MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.ATL.Source.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/a0e38e3fa00de7975d711e25bfdd8edec61d7656c9bab6a09c469c085bd6f266/Microsoft.VC.14.41.17.11.ATL.Source.base.vsix
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16.6k/16.6k [00:00<00:00, 202kiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.ATL.X86.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/5765d154e9034c5fc442b0514ed05d786ccf294f14d92343c79d963c1cffbb66/Microsoft.VC.14.41.17.11.ATL.X86.base.vsix
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 859k/859k [00:00<00:00, 7.67MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.ATL.X64.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/b39052c226474351a723639a41bc66114f77ff27db15662ce8aae286db8e9b01/Microsoft.VC.14.41.17.11.ATL.X64.base.vsix
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 824k/824k [00:00<00:00, 4.63MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.MFC.Headers.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/09cee74ae5f629f18b82e0d90be0d8a416b28800ad49082b243ea43a8e8e7083/Microsoft.VC.14.41.17.11.MFC.Headers.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2.40M/2.40M [00:00<00:00, 7.34MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.MFC.Source.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/633c250694a55175523a7f26ccb79b538159386afcd0a40f3459602bb7586522/Microsoft.VC.14.41.17.11.MFC.Source.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2.32M/2.32M [00:00<00:00, 9.16MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.MFC.X86.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/4b7888a24ba86b9483b37bd470b3685c83bbb794d8f4bab97ccc14519c16d6d3/Microsoft.VC.14.41.17.11.MFC.X86.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 30.2M/30.2M [00:03<00:00, 9.82MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.MFC.X64.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/bd671357bfd8d349b051cdcec492e68229e9f343ff873c783f5922195956d01c/Microsoft.VC.14.41.17.11.MFC.X64.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 33.1M/33.1M [00:03<00:00, 9.23MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.MFC.X86.Debug.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/c707e3c94850b198c9a3781aad83c171d3d09755e227ae2170d777687570d761/Microsoft.VC.14.41.17.11.MFC.X86.Debug.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32.1M/32.1M [00:03<00:00, 9.90MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.MFC.X64.Debug.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/56d9fa60869ddb53c23f3db6fa530b40e937affb6a7a6c36871ad7698085282d/Microsoft.VC.14.41.17.11.MFC.X64.Debug.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 35.4M/35.4M [00:04<00:00, 8.74MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.MFC.MBCS.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/4492f3a4187c7123f0650b1cb0542c0b2f3114525317618ec1990e651b8615e7/Microsoft.VC.14.41.17.11.MFC.MBCS.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 27.4M/27.4M [00:05<00:00, 5.29MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.MFC.MBCS.Debug.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/929917c074f22da9094ec7046b6f969753b6cb1af7fa851e49a910c268e5beee/Microsoft.VC.14.41.17.11.MFC.MBCS.Debug.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 29.6M/29.6M [00:03<00:00, 8.39MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.MFC.MBCS.X64.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/c34d4e1735c06da8a6fb42647a10f6e41d75b4cd729ba3124e1e0e160d534be4/Microsoft.VC.14.41.17.11.MFC.MBCS.X64.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 30.4M/30.4M [00:03<00:00, 9.26MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.MFC.MBCS.X64.Debug.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/9c8c11a18dd945c8cf3ea34ff943b0a572822492b13163cea1173caa6e366d0c/Microsoft.VC.14.41.17.11.MFC.MBCS.X64.Debug.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 33.2M/33.2M [00:03<00:00, 8.77MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.40.17.10.MFC.Redist.X64.base.vsix
https://download.visualstudio.microsoft.com/download/pr/23e12d86-3443-42fb-ae40-a7530de1900d/f06640cab0e2a1d773e688899fe7bc8505b1ec812a5a3365379ed78de46a8de1/Microsoft.VC.14.40.17.10.MFC.Redist.X64.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 13.7M/13.7M [00:01<00:00, 9.36MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.40.17.10.MFC.Redist.X86.base.vsix
https://download.visualstudio.microsoft.com/download/pr/23e12d86-3443-42fb-ae40-a7530de1900d/3581d4791f99d5965fec44573576730cd21679660c7623ffff7d644fd2a161b0/Microsoft.VC.14.40.17.10.MFC.Redist.X86.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 13.3M/13.3M [00:01<00:00, 9.98MiB/s]
!!!a_msvc_pkg_id='microsoft.vc.14.41.17.11.mfc.redist.x86.base' not found
!!!a_msvc_pkg_id='microsoft.vc.14.41.17.11.mfc.redist.x64.base' not found
D:\m5\packages\msvc\Microsoft.VC.14.40.17.10.CRT.Redist.X64.base.vsix
https://download.visualstudio.microsoft.com/download/pr/23e12d86-3443-42fb-ae40-a7530de1900d/919eed5505ea7e6c6338ecd74605f663a7d0ce78fbf1ab4f4b3bce602ff00a04/Microsoft.VC.14.40.17.10.CRT.Redist.X64.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 3.42M/3.42M [00:00<00:00, 8.73MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.40.17.10.CRT.Redist.X86.base.vsix
https://download.visualstudio.microsoft.com/download/pr/23e12d86-3443-42fb-ae40-a7530de1900d/d9429faecd7bd2117d1482fa53791c8f0361bee26d5ec0bb8c6f1192d37fb34e/Microsoft.VC.14.40.17.10.CRT.Redist.X86.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 3.08M/3.08M [00:00<00:00, 7.93MiB/s]
!!!a_msvc_pkg_id='microsoft.vc.14.41.17.11.crt.redist.x86.base' not found
!!!a_msvc_pkg_id='microsoft.vc.14.41.17.11.crt.redist.x64.base' not found
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.CRT.x64.OneCore.Desktop.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/dc345f31da64b7e2a1988b010fc3062ca5a76abd674988ad788580bc4482eb04/Microsoft.VC.14.41.17.11.CRT.x64.OneCore.Desktop.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 53.3M/53.3M [00:05<00:00, 9.86MiB/s]
D:\m5\packages\msvc\Microsoft.VC.14.41.17.11.CRT.x86.OneCore.Desktop.base.vsix
https://download.visualstudio.microsoft.com/download/pr/0e2d933f-8bec-4ec6-a095-ffcadd73663a/34df983e49116d701533b03c9625aaf275ff0bee559f45c3b48d39c07780cd80/Microsoft.VC.14.41.17.11.CRT.x86.OneCore.Desktop.base.vsix
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 48.9M/48.9M [00:05<00:00, 9.72MiB/s]
### Windows SDK
"packages\windows_sdk\Installers\Windows SDK for Windows Store Apps Tools-x86_en-us.msi"
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/cefa255a9ede1e71cd1e2c54494553aa/windows%20sdk%20for%20windows%20store%20apps%20tools-x86_en-us.msi
D:\m5\packages\windows_sdk\Installers\Windows SDK for Windows Store Apps Tools-x86_en-us.msi
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/cefa255a9ede1e71cd1e2c54494553aa/windows%20sdk%20for%20windows%20store%20apps%20tools-x86_en-us.msi
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 508k/508k [00:00<00:00, 9.07MiB/s]
"packages\windows_sdk\Installers\Windows SDK for Windows Store Apps Headers-x86_en-us.msi"
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/92833ca536c817e232e6830866e4cb65/windows%20sdk%20for%20windows%20store%20apps%20headers-x86_en-us.msi
D:\m5\packages\windows_sdk\Installers\Windows SDK for Windows Store Apps Headers-x86_en-us.msi
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/92833ca536c817e232e6830866e4cb65/windows%20sdk%20for%20windows%20store%20apps%20headers-x86_en-us.msi
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1.03M/1.03M [00:00<00:00, 10.2MiB/s]
"packages\windows_sdk\Installers\Windows SDK for Windows Store Apps Headers OnecoreUap-x86_en-us.msi"
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/3dded07e9e6da4546077e58eaf5c8c44/windows%20sdk%20for%20windows%20store%20apps%20headers%20onecoreuap-x86_en-us.msi
D:\m5\packages\windows_sdk\Installers\Windows SDK for Windows Store Apps Headers OnecoreUap-x86_en-us.msi
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/3dded07e9e6da4546077e58eaf5c8c44/windows%20sdk%20for%20windows%20store%20apps%20headers%20onecoreuap-x86_en-us.msi
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 463k/463k [00:00<00:00, 7.46MiB/s]
cannot find Windows SDK OnecoreUap Headers x64-x64_en-us.msi
"packages\windows_sdk\Installers\Windows SDK OnecoreUap Headers x64-x86_en-us.msi"
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/10fcff8fbc026c49bd9b15b3dc5dbf7f/windows%20sdk%20onecoreuap%20headers%20x64-x86_en-us.msi
D:\m5\packages\windows_sdk\Installers\Windows SDK OnecoreUap Headers x64-x86_en-us.msi
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/10fcff8fbc026c49bd9b15b3dc5dbf7f/windows%20sdk%20onecoreuap%20headers%20x64-x86_en-us.msi
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 442k/442k [00:00<00:00, 7.90MiB/s]
"packages\windows_sdk\Installers\Windows SDK OnecoreUap Headers x86-x86_en-us.msi"
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/c21df33b30f13ac41784d84b7a0eda35/windows%20sdk%20onecoreuap%20headers%20x86-x86_en-us.msi
D:\m5\packages\windows_sdk\Installers\Windows SDK OnecoreUap Headers x86-x86_en-us.msi
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/c21df33b30f13ac41784d84b7a0eda35/windows%20sdk%20onecoreuap%20headers%20x86-x86_en-us.msi
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 487k/487k [00:00<00:00, 8.26MiB/s]
cannot find Windows SDK Desktop Headers x64-x64_en-us.msi
"packages\windows_sdk\Installers\Windows SDK Desktop Headers x64-x86_en-us.msi"
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/6cf25f4e6488feed7253acc40e625f14/windows%20sdk%20desktop%20headers%20x64-x86_en-us.msi
D:\m5\packages\windows_sdk\Installers\Windows SDK Desktop Headers x64-x86_en-us.msi
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/6cf25f4e6488feed7253acc40e625f14/windows%20sdk%20desktop%20headers%20x64-x86_en-us.msi
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 442k/442k [00:00<00:00, 6.14MiB/s]
"packages\windows_sdk\Installers\Windows SDK Desktop Headers x86-x86_en-us.msi"
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/388ce1b9142842ccee01d5a36a178b0a/windows%20sdk%20desktop%20headers%20x86-x86_en-us.msi
D:\m5\packages\windows_sdk\Installers\Windows SDK Desktop Headers x86-x86_en-us.msi
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/388ce1b9142842ccee01d5a36a178b0a/windows%20sdk%20desktop%20headers%20x86-x86_en-us.msi
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 782k/782k [00:00<00:00, 10.0MiB/s]
"packages\windows_sdk\Installers\Windows SDK for Windows Store Apps Libs-x86_en-us.msi"
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/74720614a4583fdd3c6f757cd31c3167/windows%20sdk%20for%20windows%20store%20apps%20libs-x86_en-us.msi
D:\m5\packages\windows_sdk\Installers\Windows SDK for Windows Store Apps Libs-x86_en-us.msi
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/74720614a4583fdd3c6f757cd31c3167/windows%20sdk%20for%20windows%20store%20apps%20libs-x86_en-us.msi
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 520k/520k [00:00<00:00, 11.3MiB/s]
cannot find Windows SDK Desktop Libs x64-x64_en-us.msi
"packages\windows_sdk\Installers\Windows SDK Desktop Libs x64-x86_en-us.msi"
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/8f3e78d1e384b6ef9da3b9965e241854/windows%20sdk%20desktop%20libs%20x64-x86_en-us.msi
D:\m5\packages\windows_sdk\Installers\Windows SDK Desktop Libs x64-x86_en-us.msi
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/8f3e78d1e384b6ef9da3b9965e241854/windows%20sdk%20desktop%20libs%20x64-x86_en-us.msi
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 520k/520k [00:00<00:00, 7.32MiB/s]
"packages\windows_sdk\Installers\Windows SDK Desktop Libs x86-x86_en-us.msi"
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/9941b66a6764aac3307b9695c0af2f89/windows%20sdk%20desktop%20libs%20x86-x86_en-us.msi
D:\m5\packages\windows_sdk\Installers\Windows SDK Desktop Libs x86-x86_en-us.msi
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/9941b66a6764aac3307b9695c0af2f89/windows%20sdk%20desktop%20libs%20x86-x86_en-us.msi
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 520k/520k [00:00<00:00, 10.4MiB/s]
"packages\windows_sdk\Installers\Universal CRT Headers Libraries and Sources-x86_en-us.msi"
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/0d58cfa584d10b8738cd0bdd93d4f0d8/universal%20crt%20headers%20libraries%20and%20sources-x86_en-us.msi
D:\m5\packages\windows_sdk\Installers\Universal CRT Headers Libraries and Sources-x86_en-us.msi
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/0d58cfa584d10b8738cd0bdd93d4f0d8/universal%20crt%20headers%20libraries%20and%20sources-x86_en-us.msi
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 582k/582k [00:00<00:00, 10.0MiB/s]
"packages\windows_sdk\Installers\Universal CRT Redistributable-x86_en-us.msi"
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/1daf959968087e5b15ddfb386568b545/universal%20crt%20redistributable-x86_en-us.msi
D:\m5\packages\windows_sdk\Installers\Universal CRT Redistributable-x86_en-us.msi
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/1daf959968087e5b15ddfb386568b545/universal%20crt%20redistributable-x86_en-us.msi
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 467k/467k [00:00<00:00, 7.07MiB/s]
2630bae9681db6a9f6722366f47d055c.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/dbe739a2005df684d4d56691110dbab1/2630bae9681db6a9f6722366f47d055c.cab
D:\m5\packages\windows_sdk\Installers\2630bae9681db6a9f6722366f47d055c.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/dbe739a2005df684d4d56691110dbab1/2630bae9681db6a9f6722366f47d055c.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 7.68M/7.68M [00:00<00:00, 11.3MiB/s]
26ea25236f12b23db661acf268a70cfa.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/7b61e6d18defc6bcf6ffb8d3c4464a0c/26ea25236f12b23db661acf268a70cfa.cab
D:\m5\packages\windows_sdk\Installers\26ea25236f12b23db661acf268a70cfa.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/7b61e6d18defc6bcf6ffb8d3c4464a0c/26ea25236f12b23db661acf268a70cfa.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 90.6k/90.6k [00:00<00:00, 10.0MiB/s]
2a30b5d1115d515c6ddd8cd6b5173835.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/d75abb81020b3563525727d3cb28873c/2a30b5d1115d515c6ddd8cd6b5173835.cab
D:\m5\packages\windows_sdk\Installers\2a30b5d1115d515c6ddd8cd6b5173835.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/d75abb81020b3563525727d3cb28873c/2a30b5d1115d515c6ddd8cd6b5173835.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 90.8k/90.8k [00:00<00:00, 12.9MiB/s]
4a4c678668584fc994ead5b99ccf7f03.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/92b1b74ba38279e3fc2260aeab2fe5e1/4a4c678668584fc994ead5b99ccf7f03.cab
D:\m5\packages\windows_sdk\Installers\4a4c678668584fc994ead5b99ccf7f03.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/92b1b74ba38279e3fc2260aeab2fe5e1/4a4c678668584fc994ead5b99ccf7f03.cab
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 431k/431k [00:00<00:00, 10.3MiB/s]
61d57a7a82309cd161a854a6f4619e52.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/11db04f1f91f11f8be00ec0ffe24cb3e/61d57a7a82309cd161a854a6f4619e52.cab
D:\m5\packages\windows_sdk\Installers\61d57a7a82309cd161a854a6f4619e52.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/11db04f1f91f11f8be00ec0ffe24cb3e/61d57a7a82309cd161a854a6f4619e52.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 9.51M/9.51M [00:00<00:00, 10.8MiB/s]
68de71e3e2fb9941ee5b7c77500c0508.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/2c00c71a71ac56133fe382d0072193e6/68de71e3e2fb9941ee5b7c77500c0508.cab
D:\m5\packages\windows_sdk\Installers\68de71e3e2fb9941ee5b7c77500c0508.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/2c00c71a71ac56133fe382d0072193e6/68de71e3e2fb9941ee5b7c77500c0508.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16.7M/16.7M [00:01<00:00, 10.3MiB/s]
69661e20556b3ca9456b946c2c881ddd.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/645c7e4969eda63193bbbbd9f724d0fb/69661e20556b3ca9456b946c2c881ddd.cab
D:\m5\packages\windows_sdk\Installers\69661e20556b3ca9456b946c2c881ddd.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/645c7e4969eda63193bbbbd9f724d0fb/69661e20556b3ca9456b946c2c881ddd.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 18.6M/18.6M [00:01<00:00, 11.2MiB/s]
b82881a61b7477bd4eb5de2cd5037fe2.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/15e983e634368a93ee7505a9925c35e2/b82881a61b7477bd4eb5de2cd5037fe2.cab
D:\m5\packages\windows_sdk\Installers\b82881a61b7477bd4eb5de2cd5037fe2.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/15e983e634368a93ee7505a9925c35e2/b82881a61b7477bd4eb5de2cd5037fe2.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 25.7M/25.7M [00:02<00:00, 11.5MiB/s]
dcfb1aa345e349091a44e86ce1766566.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/39ce36771751595659f10864bd8bd6ed/dcfb1aa345e349091a44e86ce1766566.cab
D:\m5\packages\windows_sdk\Installers\dcfb1aa345e349091a44e86ce1766566.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/39ce36771751595659f10864bd8bd6ed/dcfb1aa345e349091a44e86ce1766566.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 90.8k/90.8k [00:00<00:00, 13.0MiB/s]
e3d1b35aecfccda1b4af6fe5988ac4be.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/8c87ecb82d707c34cbc1ee5b4ef562c6/e3d1b35aecfccda1b4af6fe5988ac4be.cab
D:\m5\packages\windows_sdk\Installers\e3d1b35aecfccda1b4af6fe5988ac4be.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/8c87ecb82d707c34cbc1ee5b4ef562c6/e3d1b35aecfccda1b4af6fe5988ac4be.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 15.4M/15.4M [00:01<00:00, 11.2MiB/s]
766c0ffd568bbb31bf7fb6793383e24a.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/b1769d27daa35a843fcc868fdd90a211/766c0ffd568bbb31bf7fb6793383e24a.cab
D:\m5\packages\windows_sdk\Installers\766c0ffd568bbb31bf7fb6793383e24a.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/b1769d27daa35a843fcc868fdd90a211/766c0ffd568bbb31bf7fb6793383e24a.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 7.97M/7.97M [00:00<00:00, 11.5MiB/s]
8125ee239710f33ea485965f76fae646.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/3b05abf9e6d2a96e0fa2cab93c165ff4/8125ee239710f33ea485965f76fae646.cab
D:\m5\packages\windows_sdk\Installers\8125ee239710f33ea485965f76fae646.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/3b05abf9e6d2a96e0fa2cab93c165ff4/8125ee239710f33ea485965f76fae646.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5.72M/5.72M [00:00<00:00, 11.5MiB/s]
c0aa6d435b0851bf34365aadabd0c20f.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/3457d5226e07261a47b31260e6d3f872/c0aa6d435b0851bf34365aadabd0c20f.cab
D:\m5\packages\windows_sdk\Installers\c0aa6d435b0851bf34365aadabd0c20f.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/3457d5226e07261a47b31260e6d3f872/c0aa6d435b0851bf34365aadabd0c20f.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4.25M/4.25M [00:00<00:00, 10.4MiB/s]
e89e3dcbb016928c7e426238337d69eb.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/17df23046ba7b5d96be7f146cbbd2f0e/e89e3dcbb016928c7e426238337d69eb.cab
D:\m5\packages\windows_sdk\Installers\e89e3dcbb016928c7e426238337d69eb.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/17df23046ba7b5d96be7f146cbbd2f0e/e89e3dcbb016928c7e426238337d69eb.cab
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 905k/905k [00:00<00:00, 10.8MiB/s]
b0656253ef2f688d2982eafa2e73f621.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/3a43e3af4855055a27fd5380201e48b9/b0656253ef2f688d2982eafa2e73f621.cab
D:\m5\packages\windows_sdk\Installers\b0656253ef2f688d2982eafa2e73f621.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/3a43e3af4855055a27fd5380201e48b9/b0656253ef2f688d2982eafa2e73f621.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 30.8k/30.8k [00:00<00:00, 15.4MiB/s]
f2e05dfd38ed343d3de77209cf3ecdae.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/df473fb8b1fa8ae8b13078175e00c0e1/f2e05dfd38ed343d3de77209cf3ecdae.cab
D:\m5\packages\windows_sdk\Installers\f2e05dfd38ed343d3de77209cf3ecdae.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/df473fb8b1fa8ae8b13078175e00c0e1/f2e05dfd38ed343d3de77209cf3ecdae.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1.23M/1.23M [00:00<00:00, 8.41MiB/s]
d1de88680a8e53fe75e01e94dc0ed767.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/20425765f0285147cae64b8d9481167f/d1de88680a8e53fe75e01e94dc0ed767.cab
D:\m5\packages\windows_sdk\Installers\d1de88680a8e53fe75e01e94dc0ed767.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/20425765f0285147cae64b8d9481167f/d1de88680a8e53fe75e01e94dc0ed767.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 20.2k/20.2k [00:00<00:00, 10.1MiB/s]
07a57cdb41ba28cced14005f087267be.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/2ae78b4ebf56e7fb0d181046f5ef6979/07a57cdb41ba28cced14005f087267be.cab
D:\m5\packages\windows_sdk\Installers\07a57cdb41ba28cced14005f087267be.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/2ae78b4ebf56e7fb0d181046f5ef6979/07a57cdb41ba28cced14005f087267be.cab
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 102k/102k [00:00<00:00, 12.7MiB/s]
2e876dd22fa5e6785f137e3422dd50ec.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/f754cffce7ab02e075d7258f32ca565d/2e876dd22fa5e6785f137e3422dd50ec.cab
D:\m5\packages\windows_sdk\Installers\2e876dd22fa5e6785f137e3422dd50ec.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/f754cffce7ab02e075d7258f32ca565d/2e876dd22fa5e6785f137e3422dd50ec.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 9.22M/9.22M [00:00<00:00, 11.0MiB/s]
4fe4c8b88812f5339018c0eef95acdb9.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/f8534daa97f4b086d7a35e6060142e58/4fe4c8b88812f5339018c0eef95acdb9.cab
D:\m5\packages\windows_sdk\Installers\4fe4c8b88812f5339018c0eef95acdb9.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/f8534daa97f4b086d7a35e6060142e58/4fe4c8b88812f5339018c0eef95acdb9.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 24.6k/24.6k [00:00<00:00, 12.3MiB/s]
05047a45609f311645eebcac2739fc4c.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/53217c7d5e390403303a173c3cbc07e9/05047a45609f311645eebcac2739fc4c.cab
D:\m5\packages\windows_sdk\Installers\05047a45609f311645eebcac2739fc4c.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/53217c7d5e390403303a173c3cbc07e9/05047a45609f311645eebcac2739fc4c.cab
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 227k/227k [00:00<00:00, 10.8MiB/s]
13d68b8a7b6678a368e2d13ff4027521.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/5324715962ce1056c62db69e4f0d7d4d/13d68b8a7b6678a368e2d13ff4027521.cab
D:\m5\packages\windows_sdk\Installers\13d68b8a7b6678a368e2d13ff4027521.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/5324715962ce1056c62db69e4f0d7d4d/13d68b8a7b6678a368e2d13ff4027521.cab
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 387k/387k [00:00<00:00, 12.1MiB/s]
463ad1b0783ebda908fd6c16a4abfe93.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/4d0080cf851f67011d3f47d1c2f5325f/463ad1b0783ebda908fd6c16a4abfe93.cab
D:\m5\packages\windows_sdk\Installers\463ad1b0783ebda908fd6c16a4abfe93.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/4d0080cf851f67011d3f47d1c2f5325f/463ad1b0783ebda908fd6c16a4abfe93.cab
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 215k/215k [00:00<00:00, 10.2MiB/s]
5a22e5cde814b041749fb271547f4dd5.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/3fd94eafc2db4fdca359e9ee1a3996d7/5a22e5cde814b041749fb271547f4dd5.cab
D:\m5\packages\windows_sdk\Installers\5a22e5cde814b041749fb271547f4dd5.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/3fd94eafc2db4fdca359e9ee1a3996d7/5a22e5cde814b041749fb271547f4dd5.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 15.2M/15.2M [00:01<00:00, 10.7MiB/s]
e10768bb6e9d0ea730280336b697da66.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/9bbb23e48ad52f6ee04c741045d6f45e/e10768bb6e9d0ea730280336b697da66.cab
D:\m5\packages\windows_sdk\Installers\e10768bb6e9d0ea730280336b697da66.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/9bbb23e48ad52f6ee04c741045d6f45e/e10768bb6e9d0ea730280336b697da66.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 7.21M/7.21M [00:00<00:00, 11.0MiB/s]
f9b24c8280986c0683fbceca5326d806.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/3f748996ba32fba07384b12a343f2d4f/f9b24c8280986c0683fbceca5326d806.cab
D:\m5\packages\windows_sdk\Installers\f9b24c8280986c0683fbceca5326d806.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/3f748996ba32fba07384b12a343f2d4f/f9b24c8280986c0683fbceca5326d806.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 7.12M/7.12M [00:00<00:00, 10.8MiB/s]
58314d0646d7e1a25e97c902166c3155.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/49f3e0150b0c07caeb0c2c068c81918a/58314d0646d7e1a25e97c902166c3155.cab
D:\m5\packages\windows_sdk\Installers\58314d0646d7e1a25e97c902166c3155.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/49f3e0150b0c07caeb0c2c068c81918a/58314d0646d7e1a25e97c902166c3155.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16.3M/16.3M [00:01<00:00, 11.3MiB/s]
53174a8154da07099db041b9caffeaee.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/d3b860330b4b60d4737f92e3d11e2b84/53174a8154da07099db041b9caffeaee.cab
D:\m5\packages\windows_sdk\Installers\53174a8154da07099db041b9caffeaee.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/d3b860330b4b60d4737f92e3d11e2b84/53174a8154da07099db041b9caffeaee.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 15.4M/15.4M [00:01<00:00, 11.2MiB/s]
16ab2ea2187acffa6435e334796c8c89.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/75dd312fee702e7a359919c4a4fb449d/16ab2ea2187acffa6435e334796c8c89.cab
D:\m5\packages\windows_sdk\Installers\16ab2ea2187acffa6435e334796c8c89.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/75dd312fee702e7a359919c4a4fb449d/16ab2ea2187acffa6435e334796c8c89.cab
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 672k/672k [00:00<00:00, 9.33MiB/s]
6ee7bbee8435130a869cf971694fd9e2.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/80379096cb471d514deec91fa44bbb11/6ee7bbee8435130a869cf971694fd9e2.cab
D:\m5\packages\windows_sdk\Installers\6ee7bbee8435130a869cf971694fd9e2.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/80379096cb471d514deec91fa44bbb11/6ee7bbee8435130a869cf971694fd9e2.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 25.4M/25.4M [00:02<00:00, 10.8MiB/s]
78fa3c824c2c48bd4a49ab5969adaaf7.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/f07041a196af7e2575a3b60e6a4768e7/78fa3c824c2c48bd4a49ab5969adaaf7.cab
D:\m5\packages\windows_sdk\Installers\78fa3c824c2c48bd4a49ab5969adaaf7.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/f07041a196af7e2575a3b60e6a4768e7/78fa3c824c2c48bd4a49ab5969adaaf7.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 53.1M/53.1M [00:04<00:00, 10.8MiB/s]
7afc7b670accd8e3cc94cfffd516f5cb.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/af8b2e3ed11fcd89035e669e4ca971fb/7afc7b670accd8e3cc94cfffd516f5cb.cab
D:\m5\packages\windows_sdk\Installers\7afc7b670accd8e3cc94cfffd516f5cb.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/af8b2e3ed11fcd89035e669e4ca971fb/7afc7b670accd8e3cc94cfffd516f5cb.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1.08M/1.08M [00:00<00:00, 8.82MiB/s]
96076045170fe5db6d5dcf14b6f6688e.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/49d752b638aaafde61445ccf38807e86/96076045170fe5db6d5dcf14b6f6688e.cab
D:\m5\packages\windows_sdk\Installers\96076045170fe5db6d5dcf14b6f6688e.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/49d752b638aaafde61445ccf38807e86/96076045170fe5db6d5dcf14b6f6688e.cab
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 675k/675k [00:00<00:00, 8.55MiB/s]
a1e2a83aa8a71c48c742eeaff6e71928.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/b9df59b20cab30b371c8ab9b870fcb5e/a1e2a83aa8a71c48c742eeaff6e71928.cab
D:\m5\packages\windows_sdk\Installers\a1e2a83aa8a71c48c742eeaff6e71928.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/b9df59b20cab30b371c8ab9b870fcb5e/a1e2a83aa8a71c48c742eeaff6e71928.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26.9M/26.9M [00:02<00:00, 10.8MiB/s]
b2f03f34ff83ec013b9e45c7cd8e8a73.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/5b96d5bd6138601154da656d41865dcf/b2f03f34ff83ec013b9e45c7cd8e8a73.cab
D:\m5\packages\windows_sdk\Installers\b2f03f34ff83ec013b9e45c7cd8e8a73.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/5b96d5bd6138601154da656d41865dcf/b2f03f34ff83ec013b9e45c7cd8e8a73.cab
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 153k/153k [00:00<00:00, 12.7MiB/s]
beb5360d2daaa3167dea7ad16c28f996.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/91985a8e4659f0a3864a64c846505a87/beb5360d2daaa3167dea7ad16c28f996.cab
D:\m5\packages\windows_sdk\Installers\beb5360d2daaa3167dea7ad16c28f996.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/91985a8e4659f0a3864a64c846505a87/beb5360d2daaa3167dea7ad16c28f996.cab
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 614k/614k [00:00<00:00, 10.6MiB/s]
d95da93904819b1f7e68adb98b49a9c7.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/021809fd9a93fe18c18ea461c765979a/d95da93904819b1f7e68adb98b49a9c7.cab
D:\m5\packages\windows_sdk\Installers\d95da93904819b1f7e68adb98b49a9c7.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/021809fd9a93fe18c18ea461c765979a/d95da93904819b1f7e68adb98b49a9c7.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 39.9k/39.9k [00:00<00:00, 20.0MiB/s]
eca0aa33de85194cd50ed6e0aae0156f.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/f4de3662d1a73bda9d14c1ff41c2f6b3/eca0aa33de85194cd50ed6e0aae0156f.cab
D:\m5\packages\windows_sdk\Installers\eca0aa33de85194cd50ed6e0aae0156f.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/f4de3662d1a73bda9d14c1ff41c2f6b3/eca0aa33de85194cd50ed6e0aae0156f.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 40.2k/40.2k [00:00<00:00, 20.1MiB/s]
f9ff50431335056fb4fbac05b8268204.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/49683c1d1507f34b48082319b59e5546/f9ff50431335056fb4fbac05b8268204.cab
D:\m5\packages\windows_sdk\Installers\f9ff50431335056fb4fbac05b8268204.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/49683c1d1507f34b48082319b59e5546/f9ff50431335056fb4fbac05b8268204.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 17.3k/17.3k [00:00<00:00, 8.79MiB/s]
15369c02f0856bfd3d570cd8a8107b55.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/17865d1aa43146bf5b3c84a1ff2b6609/15369c02f0856bfd3d570cd8a8107b55.cab
D:\m5\packages\windows_sdk\Installers\15369c02f0856bfd3d570cd8a8107b55.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/17865d1aa43146bf5b3c84a1ff2b6609/15369c02f0856bfd3d570cd8a8107b55.cab
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 910k/910k [00:00<00:00, 10.0MiB/s]
948a611cd2aca64b1e5113ffb7b95d5f.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/d8fa671dca524a9d48bb8c6a1cd3e03d/948a611cd2aca64b1e5113ffb7b95d5f.cab
D:\m5\packages\windows_sdk\Installers\948a611cd2aca64b1e5113ffb7b95d5f.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/d8fa671dca524a9d48bb8c6a1cd3e03d/948a611cd2aca64b1e5113ffb7b95d5f.cab
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 856k/856k [00:00<00:00, 11.1MiB/s]
fef2cfedd6135e0ed85290b83f3682c3.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/54120cc3687f88622eae2bebcc2bf0b5/fef2cfedd6135e0ed85290b83f3682c3.cab
D:\m5\packages\windows_sdk\Installers\fef2cfedd6135e0ed85290b83f3682c3.cab
https://download.visualstudio.microsoft.com/download/pr/e7508e1c-f746-4f1d-a5f0-74020753cca5/54120cc3687f88622eae2bebcc2bf0b5/fef2cfedd6135e0ed85290b83f3682c3.cab
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 728k/728k [00:00<00:00, 8.37MiB/s]
Unpacking msi files...
packages\windows_sdk\Installers\Windows SDK for Windows Store Apps Tools-x86_en-us.msi
D:\m5\vs2022_17.11
packages\windows_sdk\Installers\Windows SDK for Windows Store Apps Headers-x86_en-us.msi
D:\m5\vs2022_17.11
packages\windows_sdk\Installers\Windows SDK for Windows Store Apps Headers OnecoreUap-x86_en-us.msi
D:\m5\vs2022_17.11
packages\windows_sdk\Installers\Windows SDK OnecoreUap Headers x64-x86_en-us.msi
D:\m5\vs2022_17.11
packages\windows_sdk\Installers\Windows SDK OnecoreUap Headers x86-x86_en-us.msi
D:\m5\vs2022_17.11
packages\windows_sdk\Installers\Windows SDK Desktop Headers x64-x86_en-us.msi
D:\m5\vs2022_17.11
packages\windows_sdk\Installers\Windows SDK Desktop Headers x86-x86_en-us.msi
D:\m5\vs2022_17.11
packages\windows_sdk\Installers\Windows SDK for Windows Store Apps Libs-x86_en-us.msi
D:\m5\vs2022_17.11
packages\windows_sdk\Installers\Windows SDK Desktop Libs x64-x86_en-us.msi
D:\m5\vs2022_17.11
packages\windows_sdk\Installers\Windows SDK Desktop Libs x86-x86_en-us.msi
D:\m5\vs2022_17.11
packages\windows_sdk\Installers\Universal CRT Headers Libraries and Sources-x86_en-us.msi
D:\m5\vs2022_17.11
packages\windows_sdk\Installers\Universal CRT Redistributable-x86_en-us.msi
D:\m5\vs2022_17.11
#### microsoft.visualcpp.runtimedebug.14
D:\m5\packages\runtimedebug\x64\vc_RuntimeDebug.msi
https://download.visualstudio.microsoft.com/download/pr/23e12d86-3443-42fb-ae40-a7530de1900d/f840328a76388301d882364748558afa0feb7d47b458440a48afd663ca63e2bd/vc_RuntimeDebug.msi
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 193k/193k [00:00<00:00, 7.13MiB/s]
D:\m5\packages\runtimedebug\x64\cab1.cab
https://download.visualstudio.microsoft.com/download/pr/23e12d86-3443-42fb-ae40-a7530de1900d/c6332bc16fc986709842388f4cfd9fa624e0abd916e543d5aca5c3f4e2d6dce4/cab1.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 10.5M/10.5M [00:00<00:00, 11.4MiB/s]
Placing debug CRT runtime files into MSVC folder:
vs2022_17.11\VC\Tools\MSVC\14.41.34120\bin\Hostx64\x64
concrt140d.dll OK (copied, 1 try)
libomp140.x86_64.dll OK (copied, 1 try)
libomp140d.x86_64.dll OK (copied, 1 try)
mfc140d.dll OK (copied, 1 try)
mfc140ud.dll OK (copied, 1 try)
mfcm140d.dll OK (copied, 1 try)
mfcm140ud.dll OK (copied, 1 try)
msvcp140d.dll OK (copied, 1 try)
msvcp140d_atomic_wait.dll OK (copied, 1 try)
msvcp140d_codecvt_ids.dll OK (copied, 1 try)
msvcp140_1d.dll OK (copied, 1 try)
msvcp140_2d.dll OK (copied, 1 try)
vcamp140d.dll OK (copied, 1 try)
vccorlib140d.dll OK (copied, 1 try)
vcomp140d.dll OK (copied, 1 try)
vcruntime140d.dll OK (copied, 1 try)
vcruntime140_1d.dll OK (copied, 1 try)
vcruntime140_threadsd.dll OK (copied, 1 try)
D:\m5\packages\runtimedebug\x86\vc_RuntimeDebug.msi
https://download.visualstudio.microsoft.com/download/pr/23e12d86-3443-42fb-ae40-a7530de1900d/4d44f80531c453805c59db5dcf4d70df660b0e0ae379cd77d793594188f12478/vc_RuntimeDebug.msi
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184k/184k [00:00<00:00, 10.8MiB/s]
D:\m5\packages\runtimedebug\x86\cab1.cab
https://download.visualstudio.microsoft.com/download/pr/23e12d86-3443-42fb-ae40-a7530de1900d/4428be1a73eb70a06d9dccfac29b85f9e9d594f2c890caf5ec45b128473a570a/cab1.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 10.3M/10.3M [00:00<00:00, 11.5MiB/s]
Placing debug CRT runtime files into MSVC folder:
vs2022_17.11\VC\Tools\MSVC\14.41.34120\bin\Hostx86\x86
concrt140d.dll OK (copied, 1 try)
libomp140.i386.dll OK (copied, 1 try)
libomp140d.i386.dll OK (copied, 1 try)
mfc140d.dll OK (copied, 1 try)
mfc140ud.dll OK (copied, 1 try)
mfcm140d.dll OK (copied, 1 try)
mfcm140ud.dll OK (copied, 1 try)
msvcp140d.dll OK (copied, 1 try)
msvcp140d_atomic_wait.dll OK (copied, 1 try)
msvcp140d_codecvt_ids.dll OK (copied, 1 try)
msvcp140_1d.dll OK (copied, 1 try)
msvcp140_2d.dll OK (copied, 1 try)
vcamp140d.dll OK (copied, 1 try)
vccorlib140d.dll OK (copied, 1 try)
vcomp140d.dll OK (copied, 1 try)
vcruntime140d.dll OK (copied, 1 try)
### microsoft.visualc.140.dia.sdk.msi
p2
VC_diasdk.msi
528625db3675512216b553540561e6e598d7acb98dd67cd2bd33b4df351a641e
D:\m5\packages\dia_sdk\VC_diasdk.msi
https://download.visualstudio.microsoft.com/download/pr/f201226a-54ad-4c5b-b665-49d12a86a848/528625db3675512216b553540561e6e598d7acb98dd67cd2bd33b4df351a641e/VC_diasdk.msi
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 131k/131k [00:00<00:00, 6.90MiB/s]
p2
cab1.cab
35b43a9f44d078803b93c33e3b6298fe43a44d83a5c225e139d71bfd7e80807c
D:\m5\packages\dia_sdk\cab1.cab
https://download.visualstudio.microsoft.com/download/pr/f201226a-54ad-4c5b-b665-49d12a86a848/35b43a9f44d078803b93c33e3b6298fe43a44d83a5c225e139d71bfd7e80807c/cab1.cab
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 3.69M/3.69M [00:00<00:00, 10.6MiB/s]
Download DIA SDK and put msdia140.dll file into MSVC folder:
vs2022_17.11\VC\Tools\MSVC\14.41.34120\bin\Hostx64\x64
msdia140.dll OK (copied, 1 try)
Download DIA SDK and put msdia140.dll file into MSVC folder:
vs2022_17.11\VC\Tools\MSVC\14.41.34120\bin\Hostx86\x86
msdia140.dll OK (copied, 1 try)
msc_v='14.41.34120', sdk_v='10.0.26100.0',
vs2022_17.11\x64_setup.bat
msc_v='14.41.34120', sdk_v='10.0.26100.0',
vs2022_17.11\x86_setup.bat
AAAAAAA
removing vs2022_17.11\SourceDir\Windows Kits\10\bin\10.0.26100.0\arm64
removing vs2022_17.11\SourceDir\Windows Kits\10\Lib\10.0.26100.0\ucrt\arm64
removing vs2022_17.11\SourceDir\Windows Kits\10\Lib\10.0.26100.0\ucrt_enclave\arm64
removing vs2022_17.11\SourceDir\Windows Kits\10\Lib\10.0.26100.0\um\arm64
removing vs2022_17.11\SourceDir\Windows Kits\10\Redist\D3D\arm64
removing vs2022_17.11\SourceDir\Windows Kits\10\Redist\MBN\arm64
removing vs2022_17.11\SourceDir\Windows Kits\10\Redist\10.0.26100.0\ucrt\DLLs\arm64
removing vs2022_17.11\SourceDir\Windows Kits\10\Source\10.0.26100.0\ucrt\string\arm
removing vs2022_17.11\SourceDir\Windows Kits\10\Source\10.0.26100.0\ucrt\string\arm64
removing vs2022_17.11\SourceDir\Windows Kits\10\Source\10.0.26100.0\ucrt\string\arm64ec
Total downloaded: 777 MB
Done!
"""
// cl.exe vswhere.c /link /NODEFAULTLIB /ENTRY:main Kernel32.lib
// #include <windows.h>
#include <stdio.h>
int main() {
const char* xmlBody =
"<?xml version=\"1.0\"?>\n"
"<instances>\n"
" <instance>\n"
" <instanceId>VisualStudio.17.10</instanceId>\n"
" <installationPath>D:\\m3\\vs2022_17.10\\</installationPath>\n"
" <installationVersion>17.10</installationVersion>\n"
" <isPrerelease>0</isPrerelease>\n"
" </instance>\n"
"</instances>\n";
// HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
// DWORD written;
// WriteConsoleA(hStdOut, xmlBody, lstrlenA(xmlBody), &written, NULL);
printf("%s", xmlBody);
return 0;
}
//https://github.com/microsoft/vcpkg-tool
// use vswhere.exe in /vcpkg/ or in PATH
//const Path vswhere_exe = program_files_32_bit / "Microsoft Visual Studio" / "Installer" / "vswhere.exe";
auto vswhere_exe = [&]() {
auto p1 = fs.current_path(IgnoreErrors{})/"vswhere.exe";
if (fs.exists(p1, IgnoreErrors{}))
{
return p1;
}
auto pp = get_environment_variable("PATH");
if (!pp) return Path("");
std::stringstream ss( *pp.get() );
std::string path_dir;
while (std::getline(ss, path_dir, ';'))
{
Path p = path_dir;
p /= "vswhere.exe";
if (fs.exists(p, IgnoreErrors{}))
{
return p;
}
}
return Path("");
}();
# pylint: disable= global-statement, broad-exception-caught, pointless-string-statement,
# pylint: disable= missing-module-docstring, missing-function-docstring,
# pylint: disable= invalid-name, line-too-long, unnecessary-lambda-assignment
# pylint: disable= unused-variable, unreachable
# rruff: noqa: E731, F841
# ruff: noqa: F401
import collections
import hashlib
import io
import itertools
import json
import sys
import threading
import urllib
import zipfile
from pathlib import Path
from typing import Any, Optional
import colorama
import requests
from colorama import Fore
from tqdm import tqdm
import random
import time
colorama.init(autoreset=True)
# 14.44.17.14
Package_store_dir = Path('packages')
Vc_Unpack_Dir = 'VC.14.44.17.14.x86.x64'
Workload_id_set: set[str] = set(( # "Microsoft.VC.14.44.17.14.CRT.x64.Store", mscvrt.lib!!!
# "Microsoft.VC.14.44.17.14.ASAN.X64.base",
'Microsoft.VisualStudio.Component.VC.14.44.17.14.x86.x64',
'Microsoft.VisualStudio.Component.VC.14.44.17.14.MFC',
))
def main():
# payload_dict: collections.defaultdict[str, list[dict[str, Any]]]
_dep_pairs, dep_dict, payload_dict = parse_manifest('https://aka.ms/vs/17/release/channel', Path('channel'), Path('VisualStudio.vsman'))
print(f'{Workload_id_set=}\n')
out_deps = find_deps(Workload_id_set, dep_dict)
out_payloads = find_paloads(out_deps, payload_dict)
# download
for p in out_payloads:
if any(x in str(p.get('id')).lower() for x in ['arm', 'msu', '.shortcuts', 'clickonce']):
continue
if '.res' in str(p.get('id')).lower() and '.enu.' not in str(p.get('fileName')).lower():
continue
_save_path = Path(Package_store_dir) / str(p.get('id')) / p.get('chip', '') / p.get('machineArch', '') / str(p.get('fileName'))
_download_with_sha256(
p['url'],
p['sha256'],
_save_path,
)
# unpack
# for _v in Path(Package_store_dir).rglob('*.vsix'):
# if not _v.is_file():
# continue
# print(f'\nProcessing: {_v}')
# with zipfile.ZipFile(_v) as z: # unzip *.vsix files
# for name in z.namelist():
# if name.startswith('Contents/'):
# out = Path(Vc_Unpack_Dir) / Path(name).relative_to('Contents')
# print(f'\t{out.absolute()}')
# out.parent.mkdir(parents=True, exist_ok=True)
# out.write_bytes(z.read(name))
def _first(items, cond):
return next(item for item in items if cond(item))
def find_deps(ids_to_search: set[str], dict: dict[str, list[str]]):
cnt = 1
out_deps: set[tuple[str, str]] = set()
while ids_to_search:
# print(f'{cnt=}, {len(ids_to_search)=}, {len(out_deps)=}')
cnt += 1
if cnt > 555:
print(f'{Fore.RED}Too many iterations, stopping search\n{ids_to_search=}')
return out_deps
_id = str(ids_to_search.pop()).lower()
dep: list[str] = dict.get(_id, [])
for _k in dep:
out_deps.add((_id, _k))
ids_to_search.add(_k)
# print (f"{out_deps=}")
# print (f"{out_payloads=}")
return out_deps
def find_paloads(s: set[tuple[str, str]], pld_d: collections.defaultdict[str, list[dict[str, Any]]]):
dict_by_sha256 = {d['sha256']: d for d in (itertools.chain.from_iterable(pld_d[p] for p in (itertools.chain(*s)) if p in pld_d))}
return dict_by_sha256.values()
def _calculate_sha256(file_path):
hash_sha256 = hashlib.sha256()
with open(file_path, 'rb') as f:
for chunk in iter(lambda: f.read(4096), b''):
hash_sha256.update(chunk)
return hash_sha256.hexdigest()
def _download_with_sha256(url: str, sha256_check: str, save_as: Path):
print(save_as.resolve())
print(url)
save_as.parent.mkdir(parents=True, exist_ok=True)
dst_checksum = _calculate_sha256(save_as) if save_as.exists() else 'None'
if dst_checksum.lower() == sha256_check.lower():
print(f'{Fore.GREEN}{str(save_as).ljust(50)} {Fore.CYAN}OK')
return
max_retries = 3
for attempt in range(1, max_retries + 1):
response = requests.get(url, stream=True, timeout=5)
total_size_in_bytes = int(response.headers.get('content-length', 0))
block_size = 1024 * 1024
sha256_hash = hashlib.sha256()
with (
tqdm(total=total_size_in_bytes, unit='iB', unit_scale=True) as progress_bar,
open(save_as, 'wb') as file,
):
for data_ in response.iter_content(block_size):
file.write(data_)
sha256_hash.update(data_)
progress_bar.update(len(data_))
if total_size_in_bytes != 0 and progress_bar.n != total_size_in_bytes:
print('ERROR, size wrong')
break
if sha256_hash.hexdigest().lower() == sha256_check.lower():
# print("Download completed successfully, and SHA256 matched.")
print(f'Downloaded, {Fore.GREEN}{str(save_as).ljust(50)}')
break
else:
print(sha256_check)
print(f'ERROR, SHA256 mismatch: {sha256_hash.hexdigest()} (attempt {attempt})')
if attempt < max_retries:
wait_time = random.randint(1, 3)
time.sleep(wait_time)
else:
print(f'{Fore.RED}Failed to download {save_as} after {max_retries} attempts.')
sys.exit(1)
print()
def parse_manifest(channel_url: str, channel_file: Path, vsmn_file: Path):
print(f'local channel:\n\t{channel_file.resolve()}' if channel_file.exists() else 'downloading remote channel...')
channel_json = json.loads(channel_file.read_text() if channel_file.exists() else _download_s(channel_url, channel_file))
vsmn_url: str = _first(channel_json['channelItems'], lambda x: x['id'] == 'Microsoft.VisualStudio.Manifests.VisualStudio')['payloads'][0]['url']
print(f'local manifest:\n\t{vsmn_file.resolve()}' if vsmn_file.exists() else 'downloading remote VisualStudio.vsman')
vsmn_json = json.loads(vsmn_file.read_text() if vsmn_file.exists() else _download_s(vsmn_url, vsmn_file))
dep_pair_xs: list[tuple[str, str]] = []
dep_dict: collections.defaultdict[str, list[str]] = collections.defaultdict(list)
pLd_dict: collections.defaultdict[str, list[dict[str, Any]]] = collections.defaultdict(list)
p_and_d = neither = p_only = d_only = no_pid = 0
for pkg in vsmn_json['packages']:
k: str
d_xs: dict[str, dict] | None
p_xs: list[dict[str, Any]] | None
pkg_id, p_xs, d_xs = pkg['id'], pkg.get('payloads', None), pkg.get('dependencies', None)
chip = pkg.get('chip', '')
machineArch = pkg.get('machineArch', '')
# k = str(pkg_id if chip is None else f'{pkg_id}_chip_{chip}').lower()
k = str(pkg_id).lower()
if d_xs:
for dk in d_xs.keys():
# dv = d_xs[dk]
# dchip = None if isinstance(dv, str) else dv.get('chip', None)
# out_v = str(dk if dchip is None else f'{dk}_chip_{dchip}').lower()
out_v = str(dk).lower()
if out_v != k:
dep_dict[k].append(out_v)
dep_pair_xs.append((k, out_v))
if p_xs:
pLd_dict[k].extend([{**d, 'id': k, 'chip': chip, 'machineArch': machineArch} for d in p_xs])
if p_xs and d_xs:
p_and_d += 1
if not p_xs and not d_xs:
neither += 1
if p_xs and not d_xs:
p_only += 1
if d_xs and not p_xs:
d_only += 1
if not pkg_id:
no_pid += 1
print()
print(f'{p_and_d=}')
print(f'{neither=}')
print(f'{p_only=}')
print(f'{d_only=}')
print(f's1={p_and_d + neither + p_only + d_only}')
print()
print(f'{no_pid=}')
print()
print(f'{Fore.GREEN}Found {len(vsmn_json["packages"])} packages in json_data\n')
print(f'{Fore.YELLOW}{len(dep_pair_xs)=}')
print(f'{Fore.RED}{len(pLd_dict)=}')
print(f'{Fore.BLUE}{len(dep_dict)=}\n')
return dep_pair_xs, dep_dict, pLd_dict
def _download_s(url: str, file_to_write: Optional[Path] = None):
_chunk_size = 1024 * 1024
io_buf = io.BytesIO()
with (
urllib.request.urlopen(url) as res, # type: ignore
tqdm(total=int(res.info().get('Content-Length', 0)), unit='B', unit_scale=True) as pbar,
):
while chunk := res.read(_chunk_size):
io_buf.write(chunk)
pbar.update(len(chunk))
if file_to_write is not None:
threading.Thread(target=lambda: Path(file_to_write).write_bytes(io_buf.getbuffer())).start()
return io_buf.getvalue()
if __name__ == '__main__':
main()
r"""
Microsoft.VisualStudio.VC.MSBuild.v170.Base
Microsoft.VisualStudio.Component.VC.CoreBuildTools\Microsoft.VisualStudio.VC.MSBuild.v170.Base\payload.vsix
{'fileName': 'payload.vsix',
'sha256': 'c8215f5171dd3a1ba5411a2000aa3d4819cb7952039af045adb79766508bd578',
'signer': {'$ref': '1'},
'size': 612399,
'url': 'https://download.visualstudio.microsoft.com/download/pr/13849371-5fcc-4826-952d-69004ca5e215/c8215f5171dd3a1ba5411a2000aa3d4819cb7952039af045adb79766508bd578/payload.vsix'}
"""
# initial_workload_id = "Microsoft.VisualStudio.Component.VC.CoreBuildTools"
# initial_workload_id = "Microsoft.Component.MSBuild"
# Workload_id_set = set((
# # https://learn.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-build-tools?view=vs-2022#desktop-development-with-c
# 'Microsoft.Component.MSBuild',
# 'Microsoft.VisualStudio.Component.Roslyn.Compiler',
# 'Microsoft.VisualStudio.Component.TextTemplating',
# 'Microsoft.VisualStudio.Component.VC.CoreBuildTools',
# 'Microsoft.VisualStudio.Component.VC.CoreIde',
# 'Microsoft.VisualStudio.Component.VC.Redist.14.Latest',
# 'Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core',
# ))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment