summaryrefslogtreecommitdiff
path: root/src/mongo/installer
diff options
context:
space:
mode:
authorHenrik Edin <henrik.edin@mongodb.com>2018-12-04 15:10:09 -0500
committerHenrik Edin <henrik.edin@mongodb.com>2018-12-06 14:46:01 -0500
commit3c86b9ebf64469430e80a3c70fb41abde389430c (patch)
treee9ea4b97ad81c420b10734ad805c4f8e51d75179 /src/mongo/installer
parent963710b5c75e454d7217fda41d9ed98908d2b753 (diff)
downloadmongo-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/SConscript28
-rw-r--r--src/mongo/installer/msi/wxs/BinaryFragment.wxs2
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 ?>