Skip to content

Commit a273336

Browse files
committed
List installed Win10 SDK's when looking for windows sdk tool
1 parent 4919915 commit a273336

File tree

1 file changed

+27
-2
lines changed

1 file changed

+27
-2
lines changed

setup.py

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
kits_root = "SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots"
4040
kits_suffix = os.path.join("bin", ARCH)
4141

42-
WIN_SDK_KEYS = (
42+
WIN_SDK_KEYS = [
4343
RegKey(sdk_name="Windows Kit 10.0", key=kits_root,
4444
value_name="KitsRoot10", suffix=os.path.join("bin", "10.0.16299.0", ARCH)),
4545

@@ -69,7 +69,7 @@
6969

7070
RegKey(sdk_name="Windows SDK 6.0A", key=sdks_root.format("6.0A\\WinSDK"),
7171
value_name="InstallationFolder", suffix=""),
72-
)
72+
]
7373

7474
VS_KEYS = (
7575
RegKey(sdk_name="MSBuild 15", key=vs_root.format("15.0"),
@@ -145,6 +145,29 @@ def _update_xlat_devtools():
145145
elif DEVTOOLS == "Mono":
146146
DEVTOOLS = "dotnet"
147147

148+
def _collect_installed_windows_kits_v10(winreg):
149+
"""Adds the installed Windows 10 kits to WIN_SDK_KEYS """
150+
global WIN_SDK_KEYS
151+
installed_kits = []
152+
153+
with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, kits_root, 0, winreg.KEY_READ) as key:
154+
i = 0
155+
while True:
156+
try:
157+
installed_kits.append(winreg.EnumKey(key, i))
158+
i += 1
159+
except WindowsError:
160+
break
161+
162+
def make_reg_key(version):
163+
return RegKey(sdk_name="Windows Kit 10.0", key=kits_root,
164+
value_name="KitsRoot10", suffix=os.path.join("bin", version, ARCH))
165+
166+
WIN_SDK_KEYS += [make_reg_key(e) for e in installed_kits if e.startswith('10.')]
167+
168+
# Make sure this function won't be called again
169+
_collect_installed_windows_kits_v10 = (lambda:None)
170+
148171
class BuildExtPythonnet(build_ext.build_ext):
149172
user_options = build_ext.build_ext.user_options + [
150173
('xplat', None, None)
@@ -367,6 +390,8 @@ def _find_msbuild_tool(self, tool="msbuild.exe", use_windows_sdk=False):
367390
except ImportError: # PY3
368391
import winreg
369392

393+
_collect_installed_windows_kits_v10(winreg)
394+
370395
keys_to_check = WIN_SDK_KEYS if use_windows_sdk else VS_KEYS
371396
hklm = winreg.HKEY_LOCAL_MACHINE
372397
for rkey in keys_to_check:

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy