blob: 3f14501446a15a9970532bbafccdac98ed137345 [file] [log] [blame]
Steve Dowerbb240872015-02-05 22:08:48 -08001<?xml version="1.0" encoding="utf-8"?>
2<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" TreatAsLocalProperty="ReleaseUri">
3 <PropertyGroup>
Steve Dowere4969f52015-02-28 19:53:50 -08004 <TargetName>$(OutputName)</TargetName>
Steve Dowerbb240872015-02-05 22:08:48 -08005 <DefineSolutionProperties>false</DefineSolutionProperties>
6 <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
7 <SuppressIces>$(SuppressIces);ICE03;ICE57;ICE61</SuppressIces>
8 <CompilerSuppressSpecificWarnings>1026</CompilerSuppressSpecificWarnings>
9 <BuildForRelease Condition="'$(BuildForRelease)' == ''">false</BuildForRelease>
10 <SignOutput Condition="'$(SigningCertificate)' != ''">true</SignOutput>
11 <Configuration Condition="'$(Configuration)' == ''">Release</Configuration>
12 <Platform Condition="'$(Platform)' == ''">x86</Platform>
13 <InstallScope Condition="'$(InstallScope)' != 'perMachine'">perUser</InstallScope>
Steve Dower425ec152016-10-09 20:18:52 -070014 <_MakeCatCommand Condition="'$(_MakeCatCommand)' == ''">makecat</_MakeCatCommand>
Steve Dowerc4b76002015-10-01 15:18:53 -070015 </PropertyGroup>
16
17 <Import Project="wix.props" />
Stefan Grönkef1502d02017-09-25 18:58:10 +020018 <Import Project="..\..\PCbuild\tcltk.props" />
Steve Dowerc4b76002015-10-01 15:18:53 -070019
20 <PropertyGroup>
Steve Dowerbb240872015-02-05 22:08:48 -080021 <!--
22 This URI is used to generate the various GUIDs used by the installer.
23 Installers built with the same URI will upgrade each other or block
24 when attempting to downgrade.
25
26 By default, this is the local computer name, which will produce
27 installers that do not interfere with other installers. Products
28 that intend to bundle Python should rebuild these modules with their
29 own URI to avoid conflicting with the official releases.
30
Steve Dowerc4b76002015-10-01 15:18:53 -070031 The official releases use "http://www.python.org/$(ArchName)"
Steve Dowerbb240872015-02-05 22:08:48 -080032
33 This is not the same as the DownloadUrl property used in the bundle
34 projects.
35 -->
Steve Dowerc4b76002015-10-01 15:18:53 -070036 <ReleaseUri Condition="'$(ReleaseUri)' == ''">$(ComputerName)/$(ArchName)/</ReleaseUri>
Steve Dowerbb240872015-02-05 22:08:48 -080037 <ReleaseUri Condition="!$(ReleaseUri.EndsWith(`/`))">$(ReleaseUri)/</ReleaseUri>
38 </PropertyGroup>
39
Steve Dowerbb240872015-02-05 22:08:48 -080040
41 <ItemGroup>
42 <Compile Include="$(MSBuildThisFileDirectory)common.wxs" />
Steve Dower49621412016-05-18 15:54:05 -070043 <WxlTemplate Include="$(MSBuildThisFileDirectory)\*.wxl_template" Condition="$(IgnoreCommonWxlTemplates) != 'true'" />
Steve Dowerbb240872015-02-05 22:08:48 -080044 <WixExtension Include="WixUtilExtension">
45 <HintPath>WixUtilExtension</HintPath>
46 <Name>WixUtilExtension</Name>
47 </WixExtension>
48 </ItemGroup>
49
50 <PropertyGroup>
Steve Dower2084b302017-10-05 13:35:36 -070051 <IntermediateOutputPath>$(Py_IntDir)\$(MajorVersionNumber)$(MinorVersionNumber)$(ArchName)_$(Configuration)\msi_$(OutputName)</IntermediateOutputPath>
Steve Dowerbb240872015-02-05 22:08:48 -080052 <IntermediateOutputPath Condition="'$(OutputSuffix)' != ''">$(IntermediateOutputPath)_$(OutputSuffix)</IntermediateOutputPath>
53 <OutputPath Condition="'$(OutputPath)' == ''">$(BuildPath)</OutputPath>
54 <OutputPath Condition="!HasTrailingSlash($(OutputPath))">$(OutputPath)\</OutputPath>
55 <OutDir>$(OutputPath)</OutDir>
56 <ReuseCabinetCache>true</ReuseCabinetCache>
Steve Dowerd135f202018-01-09 19:14:46 +110057 <CRTRedist Condition="'$(CRTRedist)' == ''">$(ExternalsDir)\windows-installer\redist-1\$(Platform)</CRTRedist>
58 <CRTRedist>$([System.IO.Path]::GetFullPath($(CRTRedist)))</CRTRedist>
Steve Dower21a92f82019-06-14 08:29:20 -070059 <TclTkLibraryDir Condition="$(TclTkLibraryDir) == ''">$(tcltkDir)lib</TclTkLibraryDir>
Steve Dower102f72c2015-03-24 21:25:16 -070060 <DocFilename>python$(MajorVersionNumber)$(MinorVersionNumber)$(MicroVersionNumber)$(ReleaseLevelName).chm</DocFilename>
Steve Dowerbb240872015-02-05 22:08:48 -080061
Steve Dowerb85b42752015-07-08 22:43:48 -070062 <InstallerVersion>$(MajorVersionNumber).$(MinorVersionNumber).$(Field3Value).0</InstallerVersion>
63 </PropertyGroup>
64
65 <PropertyGroup Condition="!$(BuildForRelease)">
66 <RevisionNumber Condition="'$(RevisionNumber)' == ''">$([System.Math]::Floor($([System.DateTime]::Now.Subtract($([System.DateTime]::new(2001, 1, 1))).TotalDays)))</RevisionNumber>
67 <PythonVersion>$(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber)dev$(RevisionNumber)</PythonVersion>
68 <InstallerVersion>$(MajorVersionNumber).$(MinorVersionNumber).$(RevisionNumber).0</InstallerVersion>
Steve Dowerbb240872015-02-05 22:08:48 -080069 </PropertyGroup>
70
71 <PropertyGroup>
72 <Bitness>32-bit</Bitness>
73 <Bitness Condition="$(Platform) == 'x64'">64-bit</Bitness>
Steve Dower05338262016-07-24 18:04:29 -070074 <PlatformArchitecture>32bit</PlatformArchitecture>
75 <PlatformArchitecture Condition="$(Platform) == 'x64'">64bit</PlatformArchitecture>
Steve Dowerbb240872015-02-05 22:08:48 -080076 <DefineConstants>
77 $(DefineConstants);
Steve Dowerb85b42752015-07-08 22:43:48 -070078 Version=$(InstallerVersion);
Steve Dowerbb240872015-02-05 22:08:48 -080079 ShortVersion=$(MajorVersionNumber).$(MinorVersionNumber);
80 LongVersion=$(PythonVersion);
81 MajorVersionNumber=$(MajorVersionNumber);
82 MinorVersionNumber=$(MinorVersionNumber);
83 UpgradeMinimumVersion=$(MajorVersionNumber).$(MinorVersionNumber).0.0;
Steve Dowerbb240872015-02-05 22:08:48 -080084 NextMajorVersionNumber=$(MajorVersionNumber).$([msbuild]::Add($(MinorVersionNumber), 1)).0.0;
Steve Dower102f72c2015-03-24 21:25:16 -070085 Bitness=$(Bitness);
Steve Dower05338262016-07-24 18:04:29 -070086 PlatformArchitecture=$(PlatformArchitecture);
Steve Dowerbb240872015-02-05 22:08:48 -080087 PyDebugExt=$(PyDebugExt);
Steve Dower940f6a82015-10-31 12:17:11 -070088 PyArchExt=$(PyArchExt);
89 PyTestExt=$(PyTestExt);
Steve Dower49437492015-07-08 20:18:44 -070090 OptionalFeatureName=$(OutputName);
Steve Dowere0c0c7e2019-06-06 09:06:51 -070091 ssltag=-1_1;
Steve Dowerbb240872015-02-05 22:08:48 -080092 </DefineConstants>
Steve Dowerbb240872015-02-05 22:08:48 -080093 <DefineConstants Condition="'$(CRTRedist)' != ''">
94 $(DefineConstants);CRTRedist=$(CRTRedist);
95 </DefineConstants>
Steve Dowerbb240872015-02-05 22:08:48 -080096 <DefineConstants Condition="$(Platform) != 'x64'">
Steve Dowere0c0c7e2019-06-06 09:06:51 -070097 $(DefineConstants);Suffix32=-32;
Steve Dowerbb240872015-02-05 22:08:48 -080098 </DefineConstants>
99 <DefineConstants Condition="$(Platform) == 'x64'">
Steve Dowere0c0c7e2019-06-06 09:06:51 -0700100 $(DefineConstants);Suffix32=;
Steve Dowerbb240872015-02-05 22:08:48 -0800101 </DefineConstants>
102 </PropertyGroup>
103
104 <ItemDefinitionGroup>
105 <InstallFiles>
106 <Group>generated_filelist</Group>
107 <Condition></Condition>
108 <DiskId></DiskId>
Steve Dower425ec152016-10-09 20:18:52 -0700109 <IncludeInCat>false</IncludeInCat>
Steve Dowerbb240872015-02-05 22:08:48 -0800110 </InstallFiles>
111 <LinkerBindInputPaths>
112 <Visible>false</Visible>
113 </LinkerBindInputPaths>
114 </ItemDefinitionGroup>
115 <ItemGroup>
Steve Dower148827c2015-10-14 10:40:09 -0700116 <LinkerBindInputPaths Include="$(PGOBuildPath);$(BuildPath)">
117 <BindName></BindName>
118 </LinkerBindInputPaths>
119 <LinkerBindInputPaths Include="$(PySourcePath)Doc\build\htmlhelp">
Steve Dowerbb240872015-02-05 22:08:48 -0800120 <BindName></BindName>
121 </LinkerBindInputPaths>
122 <LinkerBindInputPaths Include="$(PySourcePath)">
123 <BindName>src</BindName>
124 </LinkerBindInputPaths>
Steve Dower21a92f82019-06-14 08:29:20 -0700125 <LinkerBindInputPaths Include="$(TclTkLibraryDir)">
Steve Dowerbb240872015-02-05 22:08:48 -0800126 <BindName>tcltk</BindName>
127 </LinkerBindInputPaths>
Steve Dowerd135f202018-01-09 19:14:46 +1100128 <LinkerBindInputPaths Include="$(CRTRedist)">
Steve Dowerfcbe1df2015-09-08 21:39:01 -0700129 <BindName>redist</BindName>
130 </LinkerBindInputPaths>
Steve Dower6fd76bc2016-07-16 16:13:19 -0700131 <LinkerBindInputPaths Include="$(BuildPath32)">
132 <BindName>build32</BindName>
133 </LinkerBindInputPaths>
134 <LinkerBindInputPaths Include="$(BuildPath64)">
135 <BindName>build64</BindName>
136 </LinkerBindInputPaths>
Steve Dowerbb240872015-02-05 22:08:48 -0800137 </ItemGroup>
138
139 <Target Name="_ValidateMsiProps" BeforeTargets="PrepareForBuild">
140 <Error Text="Platform '$(Platform)' is not supported. Use 'x86' or 'x64'." Condition="$(Platform) != 'x86' and $(Platform) != 'x64'" />
141 </Target>
142
143 <ItemGroup>
144 <_Uuid Include="CoreUpgradeCode">
145 <Uri>upgradecode</Uri>
146 </_Uuid>
147 <_Uuid Include="UpgradeCode">
148 <Uri>upgradecode/$(OutputName)</Uri>
149 </_Uuid>
150 <_Uuid Include="InstallDirectoryGuidSeed">
151 <Uri>installdirectoryseed</Uri>
152 </_Uuid>
153 <_Uuid Include="PythonExeComponentGuid">
154 <Uri>python.exe</Uri>
155 </_Uuid>
156 <_Uuid Include="PythonwExeComponentGuid">
157 <Uri>pythonw.exe</Uri>
158 </_Uuid>
159 <_Uuid Include="RemoveLib2to3PickleComponentGuid">
160 <Uri>lib2to3/pickles</Uri>
161 </_Uuid>
Steve Dower05338262016-07-24 18:04:29 -0700162 <_Uuid Include="CommonPythonRegComponentGuid">
163 <Uri>registry</Uri>
164 </_Uuid>
165 <_Uuid Include="PythonRegComponentGuid">
166 <Uri>registry/$(OutputName)</Uri>
167 </_Uuid>
Steve Dowerbb240872015-02-05 22:08:48 -0800168 </ItemGroup>
Steve Dower49621412016-05-18 15:54:05 -0700169 <Target Name="_GenerateGuids" AfterTargets="PrepareForBuild" Condition="$(TargetName) != 'launcher'">
Steve Dowerbb240872015-02-05 22:08:48 -0800170 <PropertyGroup>
Steve Dowerc49de352015-03-08 15:29:39 -0700171 <_Uuids>@(_Uuid->'("%(Identity)", "$(MajorVersionNumber).$(MinorVersionNumber)/%(Uri)")',',')</_Uuids>
Steve Dowerc4b76002015-10-01 15:18:53 -0700172 <_GenerateCommand>import uuid; print('\n'.join('{}={}'.format(i, uuid.uuid5(uuid.UUID('c8d9733e-a70c-43ff-ab0c-e26456f11083'), '$(ReleaseUri.Replace(`{arch}`, `$(ArchName)`))' + j)) for i,j in [$(_Uuids.Replace(`"`,`'`))]))</_GenerateCommand>
Steve Dowerbb240872015-02-05 22:08:48 -0800173 </PropertyGroup>
174
Steve Dower19694ab2015-05-02 15:23:27 -0700175 <Exec Command='"$(PythonExe)" -c "$(_GenerateCommand)" &gt; "$(IntermediateOutputPath)$(OutputName)guids.txt"'
176 WorkingDirectory="$(MSBuildThisFileDirectory)"
177 IgnoreExitCode="false" />
Steve Dowerbb240872015-02-05 22:08:48 -0800178
179 <ReadLinesFromFile File="$(IntermediateOutputPath)$(OutputName)guids.txt">
180 <Output TaskParameter="Lines" ItemName="_UuidValue" />
181 </ReadLinesFromFile>
182
183 <PropertyGroup>
184 <DefineConstants>$(DefineConstants);@(_UuidValue,';');</DefineConstants>
185 </PropertyGroup>
186 </Target>
187</Project>