mirror of
https://github.com/python/cpython.git
synced 2024-12-01 11:15:56 +01:00
494374922c
Rather than using Burn "Persisted" variables we now add registry keys for each added feature. These can be detected by the installer regardless of which version installed them, and we use this for Modify and Upgrade. In particular, Upgrades can't access the Persisted variables, but can find well-known registry keys. There are also some changes to the bootstrap app to properly handle upgrades. Finally, a few minor improvements to the Windows build to keep things tidier.
160 lines
7.5 KiB
XML
160 lines
7.5 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" TreatAsLocalProperty="ReleaseUri">
|
|
<PropertyGroup>
|
|
<TargetName>$(OutputName)</TargetName>
|
|
<DefineSolutionProperties>false</DefineSolutionProperties>
|
|
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
|
<SuppressIces>$(SuppressIces);ICE03;ICE57;ICE61</SuppressIces>
|
|
<CompilerSuppressSpecificWarnings>1026</CompilerSuppressSpecificWarnings>
|
|
<BuildForRelease Condition="'$(BuildForRelease)' == ''">false</BuildForRelease>
|
|
<SignOutput Condition="'$(SigningCertificate)' != ''">true</SignOutput>
|
|
<Configuration Condition="'$(Configuration)' == ''">Release</Configuration>
|
|
<Platform Condition="'$(Platform)' == ''">x86</Platform>
|
|
<InstallScope Condition="'$(InstallScope)' != 'perMachine'">perUser</InstallScope>
|
|
<!--
|
|
This URI is used to generate the various GUIDs used by the installer.
|
|
Installers built with the same URI will upgrade each other or block
|
|
when attempting to downgrade.
|
|
|
|
By default, this is the local computer name, which will produce
|
|
installers that do not interfere with other installers. Products
|
|
that intend to bundle Python should rebuild these modules with their
|
|
own URI to avoid conflicting with the official releases.
|
|
|
|
The official releases are built with http://www.python.org/.
|
|
|
|
This is not the same as the DownloadUrl property used in the bundle
|
|
projects.
|
|
-->
|
|
<ReleaseUri Condition="'$(ReleaseUri)' == ''">$(ComputerName)</ReleaseUri>
|
|
<ReleaseUri Condition="!$(ReleaseUri.EndsWith(`/`))">$(ReleaseUri)/</ReleaseUri>
|
|
</PropertyGroup>
|
|
|
|
<Import Project="wix.props" />
|
|
<Import Project="..\..\PCBuild\tcltk.props" />
|
|
|
|
<ItemGroup>
|
|
<Compile Include="$(MSBuildThisFileDirectory)common.wxs" />
|
|
<WxlTemplate Include="$(MSBuildThisFileDirectory)\*.wxl_template" />
|
|
<WixExtension Include="WixUtilExtension">
|
|
<HintPath>WixUtilExtension</HintPath>
|
|
<Name>WixUtilExtension</Name>
|
|
</WixExtension>
|
|
</ItemGroup>
|
|
|
|
<PropertyGroup>
|
|
<IntermediateOutputPath>$(PySourcePath)PCBuild\obj\$(Configuration)_$(Platform)_Setup\$(OutputName)</IntermediateOutputPath>
|
|
<IntermediateOutputPath Condition="'$(OutputSuffix)' != ''">$(IntermediateOutputPath)_$(OutputSuffix)</IntermediateOutputPath>
|
|
<OutputPath Condition="'$(OutputPath)' == ''">$(BuildPath)</OutputPath>
|
|
<OutputPath Condition="!HasTrailingSlash($(OutputPath))">$(OutputPath)\</OutputPath>
|
|
<OutDir>$(OutputPath)</OutDir>
|
|
<ReuseCabinetCache>true</ReuseCabinetCache>
|
|
<CRTRedist Condition="'$(CRTRedist)' == ''">$(ExternalsDir)\redist</CRTRedist>
|
|
<CRTRedist Condition="!Exists($(CRTRedist))"></CRTRedist>
|
|
<DocFilename>python$(MajorVersionNumber)$(MinorVersionNumber)$(MicroVersionNumber)$(ReleaseLevelName).chm</DocFilename>
|
|
|
|
<RevisionNumber>$(ReleaseLevelNumber)</RevisionNumber>
|
|
<RevisionNumber Condition="!$(BuildForRelease)">$([System.Math]::Floor($([System.DateTime]::Now.Subtract($([System.DateTime]::new(2001, 1, 1))).TotalDays)))</RevisionNumber>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<Bitness>32-bit</Bitness>
|
|
<Bitness Condition="$(Platform) == 'x64'">64-bit</Bitness>
|
|
<DefineConstants>
|
|
$(DefineConstants);
|
|
Version=$(MajorVersionNumber).$(MinorVersionNumber).$(Field3Value).0;
|
|
ShortVersion=$(MajorVersionNumber).$(MinorVersionNumber);
|
|
LongVersion=$(PythonVersion);
|
|
MajorVersionNumber=$(MajorVersionNumber);
|
|
MinorVersionNumber=$(MinorVersionNumber);
|
|
UpgradeMinimumVersion=$(MajorVersionNumber).$(MinorVersionNumber).0.0;
|
|
NextMajorVersionNumber=$(MajorVersionNumber).$([msbuild]::Add($(MinorVersionNumber), 1)).0.0;
|
|
Bitness=$(Bitness);
|
|
PyDebugExt=$(PyDebugExt);
|
|
OptionalFeatureName=$(OutputName);
|
|
</DefineConstants>
|
|
<DefineConstants Condition="'$(CRTRedist)' != ''">
|
|
$(DefineConstants);CRTRedist=$(CRTRedist);
|
|
</DefineConstants>
|
|
<DefineConstants Condition="$(Configuration) != 'Debug'">
|
|
$(DefineConstants);TestPrefix=;FileExtension=py;
|
|
</DefineConstants>
|
|
<DefineConstants Condition="$(Configuration) == 'Debug'">
|
|
$(DefineConstants);TestPrefix=x;FileExtension=px;
|
|
</DefineConstants>
|
|
<DefineConstants Condition="$(Platform) != 'x64'">
|
|
$(DefineConstants);Suffix32=-32;
|
|
</DefineConstants>
|
|
<DefineConstants Condition="$(Platform) == 'x64'">
|
|
$(DefineConstants);Suffix32=;
|
|
</DefineConstants>
|
|
</PropertyGroup>
|
|
|
|
<ItemDefinitionGroup>
|
|
<InstallFiles>
|
|
<Group>generated_filelist</Group>
|
|
<Condition></Condition>
|
|
<DiskId></DiskId>
|
|
</InstallFiles>
|
|
<LinkerBindInputPaths>
|
|
<Visible>false</Visible>
|
|
</LinkerBindInputPaths>
|
|
</ItemDefinitionGroup>
|
|
<ItemGroup>
|
|
<LinkerBindInputPaths Include="$(BuildPath);$(PySourcePath)Doc\build\htmlhelp">
|
|
<BindName></BindName>
|
|
</LinkerBindInputPaths>
|
|
<LinkerBindInputPaths Include="$(PySourcePath)">
|
|
<BindName>src</BindName>
|
|
</LinkerBindInputPaths>
|
|
<LinkerBindInputPaths Include="$(tcltkDir)">
|
|
<BindName>tcltk</BindName>
|
|
</LinkerBindInputPaths>
|
|
<LinkerBindInputPaths Include="$(CRTRedist)" Condition="'$(CRTRedist)' != ''">
|
|
<BindName>redist</BindName>
|
|
</LinkerBindInputPaths>
|
|
</ItemGroup>
|
|
|
|
<Target Name="_ValidateMsiProps" BeforeTargets="PrepareForBuild">
|
|
<Error Text="Platform '$(Platform)' is not supported. Use 'x86' or 'x64'." Condition="$(Platform) != 'x86' and $(Platform) != 'x64'" />
|
|
</Target>
|
|
|
|
<ItemGroup>
|
|
<_Uuid Include="CoreUpgradeCode">
|
|
<Uri>upgradecode</Uri>
|
|
</_Uuid>
|
|
<_Uuid Include="UpgradeCode">
|
|
<Uri>upgradecode/$(OutputName)</Uri>
|
|
</_Uuid>
|
|
<_Uuid Include="InstallDirectoryGuidSeed">
|
|
<Uri>installdirectoryseed</Uri>
|
|
</_Uuid>
|
|
<_Uuid Include="PythonExeComponentGuid">
|
|
<Uri>python.exe</Uri>
|
|
</_Uuid>
|
|
<_Uuid Include="PythonwExeComponentGuid">
|
|
<Uri>pythonw.exe</Uri>
|
|
</_Uuid>
|
|
<_Uuid Include="RemoveLib2to3PickleComponentGuid">
|
|
<Uri>lib2to3/pickles</Uri>
|
|
</_Uuid>
|
|
</ItemGroup>
|
|
<Target Name="_GenerateGuids" AfterTargets="PrepareForBuild">
|
|
<PropertyGroup>
|
|
<_Uuids>@(_Uuid->'("%(Identity)", "$(MajorVersionNumber).$(MinorVersionNumber)/%(Uri)")',',')</_Uuids>
|
|
<_GenerateCommand>import uuid; print('\n'.join('{}={}'.format(i, uuid.uuid5(uuid.UUID('c8d9733e-a70c-43ff-ab0c-e26456f11083'), '$(ReleaseUri)' + j)) for i,j in [$(_Uuids.Replace(`"`,`'`))]))</_GenerateCommand>
|
|
</PropertyGroup>
|
|
|
|
<Exec Command='"$(PythonExe)" -c "$(_GenerateCommand)" > "$(IntermediateOutputPath)$(OutputName)guids.txt"'
|
|
WorkingDirectory="$(MSBuildThisFileDirectory)"
|
|
IgnoreExitCode="false" />
|
|
|
|
<ReadLinesFromFile File="$(IntermediateOutputPath)$(OutputName)guids.txt">
|
|
<Output TaskParameter="Lines" ItemName="_UuidValue" />
|
|
</ReadLinesFromFile>
|
|
|
|
<PropertyGroup>
|
|
<DefineConstants>$(DefineConstants);@(_UuidValue,';');</DefineConstants>
|
|
</PropertyGroup>
|
|
</Target>
|
|
</Project> |