From a2733369ae81674948a4e965faf44cd47e0ac0ec Mon Sep 17 00:00:00 2001 From: Blue Date: Wed, 3 Apr 2019 00:22:01 +0200 Subject: [PATCH 1/2] List installed Win10 SDK's when looking for windows sdk tool --- setup.py | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 1b6f07ea6..f5690962a 100644 --- a/setup.py +++ b/setup.py @@ -39,7 +39,7 @@ kits_root = "SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots" kits_suffix = os.path.join("bin", ARCH) -WIN_SDK_KEYS = ( +WIN_SDK_KEYS = [ RegKey(sdk_name="Windows Kit 10.0", key=kits_root, value_name="KitsRoot10", suffix=os.path.join("bin", "10.0.16299.0", ARCH)), @@ -69,7 +69,7 @@ RegKey(sdk_name="Windows SDK 6.0A", key=sdks_root.format("6.0A\\WinSDK"), value_name="InstallationFolder", suffix=""), -) +] VS_KEYS = ( RegKey(sdk_name="MSBuild 15", key=vs_root.format("15.0"), @@ -145,6 +145,29 @@ def _update_xlat_devtools(): elif DEVTOOLS == "Mono": DEVTOOLS = "dotnet" +def _collect_installed_windows_kits_v10(winreg): + """Adds the installed Windows 10 kits to WIN_SDK_KEYS """ + global WIN_SDK_KEYS + installed_kits = [] + + with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, kits_root, 0, winreg.KEY_READ) as key: + i = 0 + while True: + try: + installed_kits.append(winreg.EnumKey(key, i)) + i += 1 + except WindowsError: + break + + def make_reg_key(version): + return RegKey(sdk_name="Windows Kit 10.0", key=kits_root, + value_name="KitsRoot10", suffix=os.path.join("bin", version, ARCH)) + + WIN_SDK_KEYS += [make_reg_key(e) for e in installed_kits if e.startswith('10.')] + + # Make sure this function won't be called again + _collect_installed_windows_kits_v10 = (lambda:None) + class BuildExtPythonnet(build_ext.build_ext): user_options = build_ext.build_ext.user_options + [ ('xplat', None, None) @@ -367,6 +390,8 @@ def _find_msbuild_tool(self, tool="msbuild.exe", use_windows_sdk=False): except ImportError: # PY3 import winreg + _collect_installed_windows_kits_v10(winreg) + keys_to_check = WIN_SDK_KEYS if use_windows_sdk else VS_KEYS hklm = winreg.HKEY_LOCAL_MACHINE for rkey in keys_to_check: From a4318e11287bc42d6ad7a8fc567c940308220fbf Mon Sep 17 00:00:00 2001 From: Blue Date: Wed, 3 Apr 2019 00:27:26 +0200 Subject: [PATCH 2/2] Update changelog and authors --- AUTHORS.md | 1 + CHANGELOG.md | 2 ++ 2 files changed, 3 insertions(+) diff --git a/AUTHORS.md b/AUTHORS.md index 53108463e..27aae63f4 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -55,6 +55,7 @@ - ([@civilx64](https://github.com/civilx64)) - ([@GSPP](https://github.com/GSPP)) - ([@omnicognate](https://github.com/omnicognate)) +- ([@OneBlue](https://github.com/OneBlue)) - ([@rico-chet](https://github.com/rico-chet)) - ([@rmadsen-ks](https://github.com/rmadsen-ks)) - ([@stonebig](https://github.com/stonebig)) diff --git a/CHANGELOG.md b/CHANGELOG.md index d611b2656..e863fa3d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ This document follows the conventions laid out in [Keep a CHANGELOG][]. ## [unreleased][] +- Look for installed Windows 10 sdk's during installation instead of relying on specific versions. + ### Added - Added support for embedding python into dotnet core 2.0 (NetStandard 2.0)