bpo-39930: Ensure vcruntime140.dll is included in all Windows packages (GH-18918)
Also adds GitHub CI test for Windows installer changes
(cherry picked from commit 2dd41740c9
)
Co-authored-by: Steve Dower <steve.dower@python.org>
This commit is contained in:
parent
6ce36ed4a7
commit
d01c5507e5
|
@ -0,0 +1,34 @@
|
||||||
|
name: TestsMSI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- 3.8
|
||||||
|
- 3.7
|
||||||
|
paths:
|
||||||
|
- 'Tools/msi/**'
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- 3.8
|
||||||
|
- 3.7
|
||||||
|
paths:
|
||||||
|
- 'Tools/msi/**'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build_win32:
|
||||||
|
name: 'Windows (x86) Installer'
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: Build CPython installer
|
||||||
|
run: .\Tools\msi\build.bat -x86
|
||||||
|
|
||||||
|
build_win_amd64:
|
||||||
|
name: 'Windows (x64) Installer'
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: Build CPython installer
|
||||||
|
run: .\Tools\msi\build.bat -x64
|
|
@ -0,0 +1,2 @@
|
||||||
|
Ensures the required :file:`vcruntime140.dll` is included in install
|
||||||
|
packages.
|
|
@ -200,4 +200,25 @@ public override bool Execute() {
|
||||||
<Error Text="Unable to locate signtool.exe. Set /p:SignToolPath and rebuild" Condition="'$(_SignCommand)' == ''" />
|
<Error Text="Unable to locate signtool.exe. Set /p:SignToolPath and rebuild" Condition="'$(_SignCommand)' == ''" />
|
||||||
<Exec Command='$(_SignCommand) "$(TargetPath)" || $(_SignCommand) "$(TargetPath)" || $(_SignCommand) "$(TargetPath)"' ContinueOnError="false" />
|
<Exec Command='$(_SignCommand) "$(TargetPath)" || $(_SignCommand) "$(TargetPath)" || $(_SignCommand) "$(TargetPath)"' ContinueOnError="false" />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
|
|
||||||
|
<Target Name="FindVCRuntime" Returns="VCRuntimeDLL">
|
||||||
|
<PropertyGroup Condition="$(PlatformToolset) != 'v140'">
|
||||||
|
<VCRedistDir>$(VCInstallDir)\Redist\MSVC\$(VCToolsRedistVersion)\</VCRedistDir>
|
||||||
|
<VCRedistDir Condition="$(Platform) == 'Win32'">$(VCRedistDir)x86\</VCRedistDir>
|
||||||
|
<VCRedistDir Condition="$(Platform) != 'Win32'">$(VCRedistDir)$(Platform)\</VCRedistDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="$(PlatformToolset) == 'v140'">
|
||||||
|
<VCRedistDir>$(VCInstallDir)\redist\</VCRedistDir>
|
||||||
|
<VCRedistDir Condition="$(Platform) == 'Win32'">$(VCRedistDir)x86\</VCRedistDir>
|
||||||
|
<VCRedistDir Condition="$(Platform) != 'Win32'">$(VCRedistDir)$(Platform)\</VCRedistDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup Condition="$(VCInstallDir) != ''">
|
||||||
|
<VCRuntimeDLL Include="$(VCRedistDir)\Microsoft.VC*.CRT\vcruntime*.dll" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Error Text="vcruntime14*.dll not found under $(VCInstallDir)" Condition="@(VCRuntimeDLL) == ''" />
|
||||||
|
<Message Text="VCRuntimeDLL: @(VCRuntimeDLL)" Importance="high" />
|
||||||
|
</Target>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -519,15 +519,7 @@
|
||||||
<Warning Text="Not including zlib is not a supported configuration." />
|
<Warning Text="Not including zlib is not a supported configuration." />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<PropertyGroup>
|
<Target Name="_CopyVCRuntime" AfterTargets="Build" Inputs="@(VCRuntimeDLL)" Outputs="$(OutDir)%(Filename)%(Extension)" DependsOnTargets="FindVCRuntime">
|
||||||
<VCRedistDir>$(VCInstallDir)\Redist\MSVC\$(VCToolsRedistVersion)\</VCRedistDir>
|
|
||||||
<VCRedistDir Condition="$(Platform) == 'Win32'">$(VCRedistDir)x86\</VCRedistDir>
|
|
||||||
<VCRedistDir Condition="$(Platform) != 'Win32'">$(VCRedistDir)$(Platform)\</VCRedistDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup Condition="$(VCInstallDir) != ''">
|
|
||||||
<VCRuntimeDLL Include="$(VCRedistDir)\**\vcruntime*.dll" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Target Name="_CopyVCRuntime" AfterTargets="Build" Inputs="@(VCRuntimeDLL)" Outputs="$(OutDir)%(Filename)%(Extension)">
|
|
||||||
<!-- bpo-38597: When we switch to another VCRuntime DLL, include vcruntime140.dll as well -->
|
<!-- bpo-38597: When we switch to another VCRuntime DLL, include vcruntime140.dll as well -->
|
||||||
<Warning Text="A copy of vcruntime140.dll is also required" Condition="!$(VCToolsRedistVersion.StartsWith(`14.`))" />
|
<Warning Text="A copy of vcruntime140.dll is also required" Condition="!$(VCToolsRedistVersion.StartsWith(`14.`))" />
|
||||||
<Copy SourceFiles="%(VCRuntimeDLL.FullPath)" DestinationFolder="$(OutDir)" />
|
<Copy SourceFiles="%(VCRuntimeDLL.FullPath)" DestinationFolder="$(OutDir)" />
|
||||||
|
|
|
@ -11,6 +11,9 @@
|
||||||
<SuppressICEs>ICE43</SuppressICEs>
|
<SuppressICEs>ICE43</SuppressICEs>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="..\msi.props" />
|
<Import Project="..\msi.props" />
|
||||||
|
<PropertyGroup Condition="exists('$(BuildPath)vcruntime140_1.dll')">
|
||||||
|
<DefineConstants>$(DefineConstants);Include_Vcruntime140_1_dll=1</DefineConstants>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="exe.wxs" />
|
<Compile Include="exe.wxs" />
|
||||||
<Compile Include="exe_files.wxs" />
|
<Compile Include="exe_files.wxs" />
|
||||||
|
|
|
@ -30,8 +30,13 @@
|
||||||
</RegistryKey>
|
</RegistryKey>
|
||||||
</Component>
|
</Component>
|
||||||
<Component Id="vcruntime140.dll" Directory="InstallDirectory" Guid="*">
|
<Component Id="vcruntime140.dll" Directory="InstallDirectory" Guid="*">
|
||||||
<File Name="vcruntime140.dll" Source="!(bindpath.redist)vcruntime140.dll" KeyPath="yes" />
|
<File Name="vcruntime140.dll" Source="vcruntime140.dll" KeyPath="yes" />
|
||||||
</Component>
|
</Component>
|
||||||
|
<?ifdef Include_Vcruntime140_1_dll ?>
|
||||||
|
<Component Id="vcruntime140_1.dll" Directory="InstallDirectory" Guid="*">
|
||||||
|
<File Name="vcruntime140_1.dll" Source="vcruntime140_1.dll" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<?endif ?>
|
||||||
</ComponentGroup>
|
</ComponentGroup>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue