Issue #25027: Reverts partial-static build options and adds vcruntime140.dll to Windows installation.
diff --git a/Tools/msi/build.bat b/Tools/msi/build.bat
index 5ae512f..008c937 100644
--- a/Tools/msi/build.bat
+++ b/Tools/msi/build.bat
@@ -20,15 +20,15 @@
 call "%PCBUILD%env.bat" x86

 

 if defined BUILDX86 (

-    call "%PCBUILD%build.bat" -d

+    call "%PCBUILD%build.bat" -d -e

     if errorlevel 1 goto :eof

-    call "%PCBUILD%build.bat"

+    call "%PCBUILD%build.bat" -e

     if errorlevel 1 goto :eof

 )

 if defined BUILDX64 (

-    call "%PCBUILD%build.bat" -p x64 -d

+    call "%PCBUILD%build.bat" -p x64 -d -e

     if errorlevel 1 goto :eof

-    call "%PCBUILD%build.bat" -p x64

+    call "%PCBUILD%build.bat" -p x64 -e

     if errorlevel 1 goto :eof

 )

 

diff --git a/Tools/msi/buildrelease.bat b/Tools/msi/buildrelease.bat
index 2e73f8f..d22ba10 100644
--- a/Tools/msi/buildrelease.bat
+++ b/Tools/msi/buildrelease.bat
@@ -121,7 +121,7 @@
 if not "%SKIPBUILD%" EQU "1" (

     call "%PCBUILD%build.bat" -e -p %BUILD_PLAT% -d -t %TARGET% %CERTOPTS%

     if errorlevel 1 exit /B

-    call "%PCBUILD%build.bat" -p %BUILD_PLAT% -t %TARGET% %CERTOPTS%

+    call "%PCBUILD%build.bat" -e -p %BUILD_PLAT% -t %TARGET% %CERTOPTS%

     if errorlevel 1 exit /B

     @rem build.bat turns echo back on, so we disable it again

     @echo off

diff --git a/Tools/msi/exe/exe_files.wxs b/Tools/msi/exe/exe_files.wxs
index 3b5fce4..9e47b5d 100644
--- a/Tools/msi/exe/exe_files.wxs
+++ b/Tools/msi/exe/exe_files.wxs
@@ -29,6 +29,9 @@
             <Component Id="pythonw.exe" Directory="InstallDirectory" Guid="$(var.PythonwExeComponentGuid)">
                 <File Name="pythonw.exe" KeyPath="yes" />
             </Component>
+            <Component Id="vcruntime140.dll" Directory="InstallDirectory" Guid="*">
+                <File Name="vcruntime140.dll" Source="!(bindpath.redist)vcruntime140.dll" KeyPath="yes" />
+            </Component>
         </ComponentGroup>
     </Fragment>
 
diff --git a/Tools/msi/make_zip.proj b/Tools/msi/make_zip.proj
index 2f16032..766fe85 100644
--- a/Tools/msi/make_zip.proj
+++ b/Tools/msi/make_zip.proj
@@ -16,7 +16,8 @@
         <TargetPath>$(OutputPath)\en-us\$(TargetName)$(TargetExt)</TargetPath>
         <Arguments>"$(PythonExe)" "$(MSBuildThisFileDirectory)\make_zip.py"</Arguments>
         <Arguments>$(Arguments) -e -o "$(TargetPath)" -t "$(IntermediateOutputPath)\zip_$(ArchName)" -a $(ArchName)</Arguments>
-        <Environment>set DOC_FILENAME=python$(PythonVersion).chm</Environment>
+        <Environment>set DOC_FILENAME=python$(PythonVersion).chm
+set VCREDIST_PATH=$(VS140COMNTOOLS)\..\..\VC\redist\$(Platform)\Microsoft.VC140.CRT</Environment>
     </PropertyGroup>
 
     <Target Name="_Build">
diff --git a/Tools/msi/make_zip.py b/Tools/msi/make_zip.py
index ba711c4..09ee491 100644
--- a/Tools/msi/make_zip.py
+++ b/Tools/msi/make_zip.py
@@ -64,9 +64,6 @@
     ('Tools/', 'Tools', '**/*', include_in_tools),
 ]
 
-if os.getenv('DOC_FILENAME'):
-    FULL_LAYOUT.append(('Doc/', 'Doc/build/htmlhelp', os.getenv('DOC_FILENAME'), None))
-
 EMBED_LAYOUT = [
     ('/', 'PCBuild/$arch', 'python*.exe', is_not_debug),
     ('/', 'PCBuild/$arch', '*.pyd', is_not_debug),
@@ -74,6 +71,12 @@
     ('python35.zip', 'Lib', '**/*', include_in_lib),
 ]
 
+if os.getenv('DOC_FILENAME'):
+    FULL_LAYOUT.append(('Doc/', 'Doc/build/htmlhelp', os.getenv('DOC_FILENAME'), None))
+if os.getenv('VCREDIST_PATH'):
+    FULL_LAYOUT.append(('/', os.getenv('VCREDIST_PATH'), 'vcruntime*.dll', None))
+    EMBED_LAYOUT.append(('/', os.getenv('VCREDIST_PATH'), 'vcruntime*.dll', None))
+
 def copy_to_layout(target, rel_sources):
     count = 0
 
diff --git a/Tools/msi/msi.props b/Tools/msi/msi.props
index 29be129..cc52c7a 100644
--- a/Tools/msi/msi.props
+++ b/Tools/msi/msi.props
@@ -118,6 +118,9 @@
         <LinkerBindInputPaths Include="$(CRTRedist)" Condition="'$(CRTRedist)' != ''">
             <BindName>redist</BindName>
         </LinkerBindInputPaths>
+        <LinkerBindInputPaths Include="$(VS140COMNTOOLS)\..\..\VC\redist\$(Platform)\Microsoft.VC140.CRT">
+            <BindName>redist</BindName>
+        </LinkerBindInputPaths>
     </ItemGroup>
 
     <Target Name="_ValidateMsiProps" BeforeTargets="PrepareForBuild">