diff options
author | Henrik Edin <henrik.edin@mongodb.com> | 2018-12-04 15:10:09 -0500 |
---|---|---|
committer | Henrik Edin <henrik.edin@mongodb.com> | 2018-12-06 14:46:01 -0500 |
commit | 3c86b9ebf64469430e80a3c70fb41abde389430c (patch) | |
tree | e9ea4b97ad81c420b10734ad805c4f8e51d75179 /src/mongo/installer | |
parent | 963710b5c75e454d7217fda41d9ed98908d2b753 (diff) | |
download | mongo-3c86b9ebf64469430e80a3c70fb41abde389430c.tar.gz |
SERVER-38249 All Windows evergreen builders should use Visual Studio 2017
Diffstat (limited to 'src/mongo/installer')
-rw-r--r-- | src/mongo/installer/msi/SConscript | 28 | ||||
-rw-r--r-- | src/mongo/installer/msi/wxs/BinaryFragment.wxs | 2 |
2 files changed, 25 insertions, 5 deletions
diff --git a/src/mongo/installer/msi/SConscript b/src/mongo/installer/msi/SConscript index f57b42f08e8..3380047bc4b 100644 --- a/src/mongo/installer/msi/SConscript +++ b/src/mongo/installer/msi/SConscript @@ -6,6 +6,13 @@ Import("env") Import("get_option")
Import("has_option")
+if not env.TargetOSIs('windows'):
+ Return()
+
+import re
+import subprocess
+import _winreg
+
env = env.Clone()
env.SConscript(
@@ -24,10 +31,23 @@ env['WIXCANDLE'] = r'$WIXPATH\candle.exe' env['WIXLIGHT'] = r'$WIXPATH\light.exe'
env['WIXUIEXT'] = r'$WIXPATH\WixUIExtension.dll'
env['WIXUTILEXT'] = r'$WIXPATH\WixUtilExtension.dll'
-env['MERGEMODULESBASEPATH'] = os.environ.get('MERGEMODULESBASEPATH')
-if env['MERGEMODULESBASEPATH'] == None and os.environ.get('ProgramFiles(x86)') != None:
- env['MERGEMODULESBASEPATH'] = (os.environ.get('ProgramFiles(x86)') +
- r"\Common Files\Merge Modules")
+
+# How to locate the Merge Modules path is described in https://docs.microsoft.com/en-us/cpp/ide/redistributing-visual-cpp-files?view=vs-2017
+
+# When we run this on evergreen, the environment is broken, fall back to hard coded C:\Program Files (x86)
+programfilesx86 = os.environ.get('ProgramFiles(x86)')
+if programfilesx86 is None:
+ programfilesx86 = "C:\\Program Files (x86)"
+
+# Use vswhere (it has a fixed stable path) to query where Visual Studio is installed.
+vsinstall_path = subprocess.check_output([os.path.join(programfilesx86, "Microsoft Visual Studio", "Installer", "vswhere.exe"), "-version", "[15.0,16.0)", "-property", "installationPath", "-nologo"]).strip()
+
+# Check the registry key that has the runtime lib version
+vsruntime_key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, "SOFTWARE\\WOW6432Node\\Microsoft\\VisualStudio\\14.0\\VC\\Runtimes\\x64")
+vslib_version,vslib_version_type = _winreg.QueryValueEx(vsruntime_key, "Version")
+
+# Combine and set the full merge module path
+env['MERGEMODULESBASEPATH'] = os.path.join(vsinstall_path, "VC", "Redist", "MSVC", re.match("v(\d+\.\d+\.\d+)\.\d+", vslib_version).group(1), "MergeModules")
sourcesList = [ "BinaryFragment.wxs",
"FeatureFragment.wxs",
diff --git a/src/mongo/installer/msi/wxs/BinaryFragment.wxs b/src/mongo/installer/msi/wxs/BinaryFragment.wxs index b4b80c0e9ce..5a6194cacf1 100644 --- a/src/mongo/installer/msi/wxs/BinaryFragment.wxs +++ b/src/mongo/installer/msi/wxs/BinaryFragment.wxs @@ -166,7 +166,7 @@ <?if $(var.Edition) = Enterprise or $(var.Edition) = SSL ?>
<DirectoryRef Id="TARGETDIR">
- <Merge Id="m_vcredist" SourceFile="$(var.MergeModulesBasePath)\Microsoft_VC140_CRT_x64.msm" DiskId="1" Language="0"/>
+ <Merge Id="m_vcredist" SourceFile="$(var.MergeModulesBasePath)\Microsoft_VC141_CRT_x64.msm" DiskId="1" Language="0"/>
</DirectoryRef>
<?endif ?>
|