def _get_visualstudio_install_path(): from distutils.version import StrictVersion global _is_64bit if _is_64bit: path = "HKLM:\\SOFTWARE\\Wow6432Node\\Microsoft\\VisualStudio" else: path = "HKLM:\\SOFTWARE\\Microsoft\\VisualStudio" vsversions = ezwinreg.subkeys(path) r = re.compile("^[0-9.]+$") vsversions = list(filter(r.match, vsversions)) vsversions.sort(key=StrictVersion) for ver in vsversions[::-1]: key = ezwinreg.get("%s\\%s" % (path, ver), "InstallDir") if key: return key return None
def _set_environ(): global _fw_version, _fw_architecture, _is_64bit if not _fw_version: raise ConfigError if not _fw_architecture: _fw_architecture = FwArchitecture.x64 if _is_64bit else FwArchitecture.x86 include_dirs = list() if _fw_version["build_tools_version"]: for tools_ver in _fw_version["build_tools_version"]: include_dirs.append(ezwinreg.get("HKLM:\\SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions\\%s" % tools_ver, _fw_architecture["build_tools_key"])) vsinstalldir = _get_visualstudio_install_path() if vsinstalldir: include_dirs.append(vsinstalldir) for ver in _fw_version["versions"]: include_dirs.append("%s\\Microsoft.NET\\%s\\%s" % (os.environ["WINDIR"], _fw_architecture["bitness"], ver)) for directory in include_dirs: if not os.path.exists(directory): raise ConfigError os.environ["PATH"] = ";".join(include_dirs) + ";" + os.environ["PATH"]