def install(self, environ, version, strict=False, locally=True): if not self.found: version, ms_id, name = get_msvc_version() if ms_id: import webbrowser website = ('http://www.microsoft.com/en-us/download/', 'details.aspx?id=' + ms_id) sys.stdout.write('Manually download and install (from ' + website[0] + ')\nthe ' + name + '.\n' + 'Opening a browser to confirm download ...\n') webbrowser.open(''.join(website)) # pylint: disable=W0141 input('Press any key once the redistributable ' + 'package is installed') else: raise Exception('MSVC runtime included as part of the OS, ' + 'but not found.')
def is_installed(self, environ, version, strict=False): options.set_debug(self.debug) if 'MINGW_CC' in environ: raise Exception('MS Visual C *and* MinGW both specified ' + 'as the chosen compiler.') version, _, _ = get_msvc_version() dot_ver = '.'.join(version) vcvars = None nmake = None msvc = None msvc_dirs = [] limit = False if 'MSVC' in environ and environ['MSVC']: msvc_dirs.append(os.path.dirname(environ['MSVC'])) limit = True if not limit: for d in programfiles_directories(): msvc_dirs.append(os.path.join(d, 'Microsoft Visual Studio ' + dot_ver, 'VC')) try: vcvars = find_program('vcvarsall', msvc_dirs, limit=limit) nmake = find_program('nmake', msvc_dirs, limit=limit) msvc = find_program('cl', msvc_dirs, limit=limit) self.found = True except ConfigError: if self.debug: print(sys.exc_info()[1]) return self.found self.environment['MSVC_VARS'] = vcvars self.environment['NMAKE'] = nmake self.environment['MSVC'] = msvc return self.found
def is_installed(self, environ, version=None, strict=False): options.set_debug(self.debug) msvcr_rel_dirs = [] msvcr_dbg_dirs = [] limit = False if 'MSVCRT_DIR' in environ and environ['MSVCRT_DIR']: msvcr_rel_dirs.append(environ['MSVCRT_DIR']) limit = True if 'MSVCRT_DEBUG_DIR' in environ and environ['MSVCRT_DEBUG_DIR']: msvcr_dbg_dirs.append(environ['MSVCRT_DEBUG_DIR']) version, _, _ = get_msvc_version() dot_ver = '.'.join(version) ver = ''.join(version) msvs_present = False if not limit: for d in programfiles_directories(): msvcr_rel_dirs.append( os.path.join(d, 'Microsoft Visual Studio ' + dot_ver, 'VC', 'redist', 'x86', 'Microsoft.VC' + ver + '.CRT')) msvcr_dbg_dirs.append( os.path.join(d, 'Microsoft Visual Studio ' + dot_ver, 'VC', 'redist', 'Debug_NonRedist', 'x86', 'Microsoft.VC' + ver + '.DebugCRT')) if os.path.exists( os.path.join(d, 'Microsoft Visual Studio ' + dot_ver)): msvs_present = True if not msvs_present: try: msvcr_rel_dirs.append(os.environ['MSVCRT_DIR']) except KeyError: pass try: msvcr_rel_dirs.append(os.environ['SYSTEM']) except KeyError: pass try: msvcr_rel_dirs.append(os.environ['WINDIR']) except KeyError: pass release_dir = None debug_dir = None try: # Just the DLLs release_dir, _ = find_library('msvcr' + ver, msvcr_rel_dirs, limit=limit) if msvs_present: debug_dir, _ = find_library('msvcr' + ver, msvcr_dbg_dirs, limit=limit) self.found = True except ConfigError: if self.debug: print(sys.exc_info()[1]) return self.found self.environment['MSVCRT_DIR'] = release_dir if msvs_present: self.environment['MSVCRT_DEBUG_DIR'] = debug_dir self.environment['MSVCRT_LIBRARIES'] = ['msvcr' + ver, 'msvcp' + ver] return self.found