Issue #28402: Adds signed catalog files for stdlib on Windows.

This commit is contained in:
Steve Dower 2016-10-09 20:18:52 -07:00
parent b1321fba53
commit 425ec150ea
11 changed files with 64 additions and 7 deletions

View File

@ -226,6 +226,8 @@ Library
Windows Windows
------- -------
- Issue #28402: Adds signed catalog files for stdlib on Windows.
- Issue #28333: Enables Unicode for ps1/ps2 and input() prompts. (Patch by - Issue #28333: Enables Unicode for ps1/ps2 and input() prompts. (Patch by
Eryk Sun) Eryk Sun)

View File

@ -147,11 +147,13 @@ foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcesses
Targets="CleanAll" /> Targets="CleanAll" />
</Target> </Target>
<PropertyGroup Condition="'$(SigningCertificate)' != '' and $(SupportSigning)"> <PropertyGroup>
<SignToolPath Condition="'$(SignToolPath)' == '' or !Exists($(SignToolPath))">$(registry:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Kits\Installed Roots@KitsRoot81)\bin\x86\signtool.exe</SignToolPath> <SdkBinPath Condition="'$(SdkBinPath)' == '' or !Exists($(SdkBinPath))">$(registry:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Kits\Installed Roots@KitsRoot10)\bin\x86</SdkBinPath>
<SignToolPath Condition="!Exists($(SignToolPath))">$(registry:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Kits\Installed Roots@KitsRoot)\bin\x86\signtool.exe</SignToolPath> <SdkBinPath Condition="!Exists($(SdkBinPath))">$(registry:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Kits\Installed Roots@KitsRoot81)\bin\x86</SdkBinPath>
<SignToolPath Condition="!Exists($(SignToolPath))">$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1A@InstallationFolder)\Bin\signtool.exe</SignToolPath> <SdkBinPath Condition="!Exists($(SdkBinPath))">$(registry:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Kits\Installed Roots@KitsRoot)\bin\x86</SdkBinPath>
<_SignCommand Condition="Exists($(SignToolPath))">"$(SignToolPath)" sign /q /n "$(SigningCertificate)" /fd sha256 /t http://timestamp.verisign.com/scripts/timestamp.dll /d "Python $(PythonVersion)"</_SignCommand> <SdkBinPath Condition="!Exists($(SdkBinPath))">$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1A@InstallationFolder)\Bin\</SdkBinPath>
<_SignCommand Condition="Exists($(SdkBinPath)) and '$(SigningCertificate)' != '' and $(SupportSigning)">"$(SdkBinPath)\signtool.exe" sign /q /n "$(SigningCertificate)" /fd sha256 /t http://timestamp.verisign.com/scripts/timestamp.dll /d "Python $(PythonVersion)"</_SignCommand>
<_MakeCatCommand Condition="Exists($(SdkBinPath))">"$(SdkBinPath)\makecat.exe"</_MakeCatCommand>
</PropertyGroup> </PropertyGroup>
<Target Name="_SignBuild" AfterTargets="AfterBuild" Condition="'$(SigningCertificate)' != '' and $(SupportSigning)"> <Target Name="_SignBuild" AfterTargets="AfterBuild" Condition="'$(SigningCertificate)' != '' and $(SupportSigning)">

View File

@ -63,7 +63,9 @@
<!-- Top-level directories --> <!-- Top-level directories -->
<Fragment> <Fragment>
<DirectoryRef Id="InstallDirectory"> <DirectoryRef Id="InstallDirectory">
<Directory Id="DLLs" Name="DLLs" /> <Directory Id="DLLs" Name="DLLs">
<Directory Id="Catalogs" />
</Directory>
</DirectoryRef> </DirectoryRef>
</Fragment> </Fragment>

View File

@ -27,6 +27,7 @@
<TargetBase>$(PySourcePath)Lib</TargetBase> <TargetBase>$(PySourcePath)Lib</TargetBase>
<Target_>Lib\</Target_> <Target_>Lib\</Target_>
<Group>lib_py</Group> <Group>lib_py</Group>
<IncludeInCat>true</IncludeInCat>
</InstallFiles> </InstallFiles>
</ItemGroup> </ItemGroup>

View File

@ -11,6 +11,7 @@
<ComponentGroupRef Id="lib_py" /> <ComponentGroupRef Id="lib_py" />
<ComponentGroupRef Id="lib_files" /> <ComponentGroupRef Id="lib_files" />
<ComponentGroupRef Id="lib_extensions" /> <ComponentGroupRef Id="lib_extensions" />
<ComponentGroupRef Id="lib_cat" />
<ComponentRef Id="OptionalFeature" /> <ComponentRef Id="OptionalFeature" />
</Feature> </Feature>
</Product> </Product>

View File

@ -70,4 +70,11 @@
</Component> </Component>
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>
<Fragment>
<ComponentGroup Id="lib_cat">
<Component Id="lib_cat" Directory="Catalogs" Guid="*">
<File Name="python_lib.cat" KeyPath="yes" />
</Component>
</ComponentGroup>
</Fragment>
</Wix> </Wix>

View File

@ -11,6 +11,7 @@
<Configuration Condition="'$(Configuration)' == ''">Release</Configuration> <Configuration Condition="'$(Configuration)' == ''">Release</Configuration>
<Platform Condition="'$(Platform)' == ''">x86</Platform> <Platform Condition="'$(Platform)' == ''">x86</Platform>
<InstallScope Condition="'$(InstallScope)' != 'perMachine'">perUser</InstallScope> <InstallScope Condition="'$(InstallScope)' != 'perMachine'">perUser</InstallScope>
<_MakeCatCommand Condition="'$(_MakeCatCommand)' == ''">makecat</_MakeCatCommand>
</PropertyGroup> </PropertyGroup>
<Import Project="wix.props" /> <Import Project="wix.props" />
@ -103,6 +104,7 @@
<Group>generated_filelist</Group> <Group>generated_filelist</Group>
<Condition></Condition> <Condition></Condition>
<DiskId></DiskId> <DiskId></DiskId>
<IncludeInCat>false</IncludeInCat>
</InstallFiles> </InstallFiles>
<LinkerBindInputPaths> <LinkerBindInputPaths>
<Visible>false</Visible> <Visible>false</Visible>

View File

@ -12,6 +12,8 @@
<_Source>%(Source)$([msbuild]::MakeRelative(%(SourceBase), %(FullPath)))</_Source> <_Source>%(Source)$([msbuild]::MakeRelative(%(SourceBase), %(FullPath)))</_Source>
<_Target>%(Target_)$([msbuild]::MakeRelative(%(TargetBase), %(FullPath)))</_Target> <_Target>%(Target_)$([msbuild]::MakeRelative(%(TargetBase), %(FullPath)))</_Target>
</InstallFiles> </InstallFiles>
<_CatalogFiles Include="@(InstallFiles)" Condition="%(InstallFiles.IncludeInCat) and ''!=$([System.IO.File]::ReadAllText(%(InstallFiles.FullPath)))" />
</ItemGroup> </ItemGroup>
<WriteLinesToFile File="$(_FileListTarget)" Lines="@(InstallFiles->'&quot;%(_Source)&quot;,&quot;%(_Target)&quot;,&quot;%(Group)&quot;,&quot;%(DiskId)&quot;,&quot;%(Condition)&quot;')" Overwrite="true" /> <WriteLinesToFile File="$(_FileListTarget)" Lines="@(InstallFiles->'&quot;%(_Source)&quot;,&quot;%(_Target)&quot;,&quot;%(Group)&quot;,&quot;%(DiskId)&quot;,&quot;%(Condition)&quot;')" Overwrite="true" />
@ -24,6 +26,35 @@
</ItemGroup> </ItemGroup>
</Target> </Target>
<Target Name="GenerateCatalog" AfterTargets="ProcessInstallFiles" Condition="'@(_CatalogFiles)' != ''">
<PropertyGroup>
<_CatFileSourceTarget>$(IntermediateOutputPath)$(MSBuildProjectName).cdf</_CatFileSourceTarget>
<_CatFileTarget>$(IntermediateOutputPath)python_$(MSBuildProjectName).cat</_CatFileTarget>
<_CatFile>[CatalogHeader]
Name=$([System.IO.Path]::GetFileName($(_CatFileTarget)))
ResultDir=$([System.IO.Path]::GetDirectoryName($(_CatFileTarget)))
PublicVersion=1
CatalogVersion=2
HashAlgorithms=SHA256
PageHashes=false
EncodingType=
[CatalogFiles]
@(_CatalogFiles->'&lt;HASH&gt;%(Filename)%(Extension)=%(FullPath)','
')
</_CatFile>
</PropertyGroup>
<WriteLinesToFile File="$(_CatFileSourceTarget)" Lines="$(_CatFile)" Overwrite="true" />
<Exec Command='$(_MakeCatCommand) "$(_CatFileSourceTarget)"' WorkingDirectory="$(MSBuildThisFileDirectory)" />
<Exec Command='$(_SignCommand) "$(_CatFileTarget)"' WorkingDirectory="$(MSBuildThisFileDirectory)"
Condition="Exists($(_CatFileTarget)) and '$(_SignCommand)' != ''" />
<ItemGroup>
<FileWrites Include="$(_CatFileSourceTarget);$(_CatFileTarget)" />
</ItemGroup>
</Target>
<Target Name="_TransformWxlTemplates" AfterTargets="PrepareForBuild" Inputs="@(WxlTemplate);$(PySourcePath)include\patchlevel.h" Outputs="$(IntermediateOutputPath)%(Filename).wxl"> <Target Name="_TransformWxlTemplates" AfterTargets="PrepareForBuild" Inputs="@(WxlTemplate);$(PySourcePath)include\patchlevel.h" Outputs="$(IntermediateOutputPath)%(Filename).wxl">
<PropertyGroup Condition="'@(WxlTemplate)' != ''"> <PropertyGroup Condition="'@(WxlTemplate)' != ''">
<_Content>$([System.IO.File]::ReadAllText(%(WxlTemplate.FullPath)).Replace(`{{ShortVersion}}`, `$(MajorVersionNumber).$(MinorVersionNumber)$(PyTestExt)`).Replace(`{{LongVersion}}`, `$(PythonVersion)$(PyTestExt)`).Replace(`{{Bitness}}`, `$(Bitness)`))</_Content> <_Content>$([System.IO.File]::ReadAllText(%(WxlTemplate.FullPath)).Replace(`{{ShortVersion}}`, `$(MajorVersionNumber).$(MinorVersionNumber)$(PyTestExt)`).Replace(`{{LongVersion}}`, `$(PythonVersion)$(PyTestExt)`).Replace(`{{Bitness}}`, `$(Bitness)`))</_Content>

View File

@ -36,6 +36,7 @@
<TargetBase>$(PySourcePath)</TargetBase> <TargetBase>$(PySourcePath)</TargetBase>
<Target_></Target_> <Target_></Target_>
<Group>tools_py</Group> <Group>tools_py</Group>
<IncludeInCat>true</IncludeInCat>
</InstallFiles> </InstallFiles>
</ItemGroup> </ItemGroup>

View File

@ -9,6 +9,7 @@
<Feature Id="DefaultFeature" AllowAdvertise="no" Title="!(loc.Title)" Description="!(loc.Description)"> <Feature Id="DefaultFeature" AllowAdvertise="no" Title="!(loc.Title)" Description="!(loc.Description)">
<ComponentGroupRef Id="tools_py" /> <ComponentGroupRef Id="tools_py" />
<ComponentGroupRef Id="tools_scripts" /> <ComponentGroupRef Id="tools_scripts" />
<ComponentGroupRef Id="tools_cat" />
<ComponentRef Id="OptionalFeature" /> <ComponentRef Id="OptionalFeature" />
</Feature> </Feature>
</Product> </Product>

View File

@ -13,4 +13,11 @@
</Component> </Component>
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>
<Fragment>
<ComponentGroup Id="tools_cat">
<Component Id="tools_cat" Directory="Catalogs" Guid="*">
<File Name="python_tools.cat" KeyPath="yes" />
</Component>
</ComponentGroup>
</Fragment>
</Wix> </Wix>