| <?xml version="1.0" encoding="utf-8"?> | 
 | <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | 
 |  | 
 |     <Target Name="ProcessInstallFiles" | 
 |             AfterTargets="PrepareForBuild" | 
 |             DependsOnTargets="FindPythonForBuild" | 
 |             Condition="@(InstallFiles) != ''"> | 
 |         <PropertyGroup> | 
 |             <_FileListTarget>$(IntermediateOutputPath)$(MSBuildProjectName).g.csv</_FileListTarget> | 
 |             <_InstallFilesTarget>$(IntermediateOutputPath)$(MSBuildProjectName).g.wxs</_InstallFilesTarget> | 
 |         </PropertyGroup> | 
 |          | 
 |         <ItemGroup> | 
 |             <InstallFiles> | 
 |                 <_Source>%(Source)$([msbuild]::MakeRelative(%(SourceBase), %(FullPath)))</_Source> | 
 |                 <_Target>%(Target_)$([msbuild]::MakeRelative(%(TargetBase), %(FullPath)))</_Target> | 
 |             </InstallFiles> | 
 |              | 
 |             <_CatalogFiles Include="@(InstallFiles)" Condition="%(InstallFiles.IncludeInCat) and ''!=$([System.IO.File]::ReadAllText(%(InstallFiles.FullPath)))" /> | 
 |         </ItemGroup> | 
 |  | 
 |         <WriteLinesToFile File="$(_FileListTarget)" Lines="@(InstallFiles->'"%(_Source)","%(_Target)","%(Group)","%(DiskId)","%(Condition)"')" Overwrite="true" /> | 
 |         <Exec Command='$(PythonForBuild) csv_to_wxs.py "$(_FileListTarget)" "$(_InstallFilesTarget)"' | 
 |               WorkingDirectory="$(MSBuildThisFileDirectory)" /> | 
 |  | 
 |         <ItemGroup> | 
 |             <FileWrites Include="$(_FileListTarget);$(_InstallFilesTarget)" /> | 
 |             <Compile Include="$(_InstallFilesTarget)" /> | 
 |         </ItemGroup> | 
 |     </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->'<HASH>%(Filename)%(Extension)=%(FullPath)',' | 
 | ') | 
 | </_CatFile> | 
 |         </PropertyGroup> | 
 |  | 
 |         <WriteLinesToFile File="$(_CatFileSourceTarget)" Lines="$(_CatFile)" Overwrite="true" /> | 
 |         <Exec Command='$(_MakeCatCommand) "$(_CatFileSourceTarget)"' WorkingDirectory="$(MSBuildThisFileDirectory)" /> | 
 |         <Exec Command='$(_SignCommand) "$(_CatFileTarget)" || $(_SignCommand) "$(_CatFileTarget)" || $(_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"> | 
 |         <PropertyGroup Condition="'@(WxlTemplate)' != ''"> | 
 |             <_Content>$([System.IO.File]::ReadAllText(%(WxlTemplate.FullPath)).Replace(`{{ShortVersion}}`, `$(MajorVersionNumber).$(MinorVersionNumber)$(PyTestExt)`).Replace(`{{LongVersion}}`, `$(PythonVersion)$(PyTestExt)`).Replace(`{{Bitness}}`, `$(Bitness)`))</_Content> | 
 |             <_ExistingContent Condition="Exists('$(IntermediateOutputPath)%(WxlTemplate.Filename).wxl')">$([System.IO.File]::ReadAllText($(IntermediateOutputPath)%(WxlTemplate.Filename).wxl))</_ExistingContent> | 
 |         </PropertyGroup> | 
 |          | 
 |         <WriteLinesToFile File="$(IntermediateOutputPath)%(WxlTemplate.Filename).wxl" | 
 |                           Lines="$(_Content)" | 
 |                           Overwrite="true" | 
 |                           Condition="$(_Content) != $(_ExistingContent)" /> | 
 |          | 
 |         <ItemGroup Condition="'@(WxlTemplate)' != ''"> | 
 |             <EmbeddedResource Include="$(IntermediateOutputPath)%(WxlTemplate.Filename).wxl" /> | 
 |             <FileWrites Include="$(IntermediateOutputPath)%(WxlTemplate.Filename).wxl" /> | 
 |         </ItemGroup> | 
 |     </Target> | 
 |  | 
 |     <Import Project="$(WixTargetsPath)" /> | 
 |  | 
 |     <Target Name="SignCabs"> | 
 |         <Error Text="Unable to locate signtool.exe. Set /p:SignToolPath and rebuild" Condition="'$(_SignCommand)' == ''" /> | 
 |         <Exec Command="$(_SignCommand) @(SignCabs->'"%(FullPath)"',' ') || $(_SignCommand) @(SignCabs->'"%(FullPath)"',' ') || $(_SignCommand) @(SignCabs->'"%(FullPath)"',' ')" ContinueOnError="false" /> | 
 |     </Target> | 
 |     <Target Name="SignMsi"> | 
 |         <Error Text="Unable to locate signtool.exe. Set /p:SignToolPath and rebuild" Condition="'$(_SignCommand)' == ''" /> | 
 |         <Exec Command="$(_SignCommand) @(SignMsi->'"%(FullPath)"',' ') || $(_SignCommand) @(SignMsi->'"%(FullPath)"',' ') || $(_SignCommand) @(SignMsi->'"%(FullPath)"',' ')" ContinueOnError="false" /> | 
 |     </Target> | 
 |     <Target Name="SignBundleEngine"> | 
 |         <Error Text="Unable to locate signtool.exe. Set /p:SignToolPath and rebuild" Condition="'$(_SignCommand)' == ''" /> | 
 |         <Exec Command="$(_SignCommand) @(SignBundleEngine->'"%(FullPath)"',' ') || $(_SignCommand) @(SignBundleEngine->'"%(FullPath)"',' ') || $(_SignCommand) @(SignBundleEngine->'"%(FullPath)"',' ')" ContinueOnError="false" /> | 
 |     </Target> | 
 |     <Target Name="SignBundle"> | 
 |         <Error Text="Unable to locate signtool.exe. Set /p:SignToolPath and rebuild" Condition="'$(_SignCommand)' == ''" /> | 
 |         <Exec Command="$(_SignCommand) @(SignBundle->'"%(FullPath)"',' ') || $(_SignCommand) @(SignBundle->'"%(FullPath)"',' ') || $(_SignCommand) @(SignBundle->'"%(FullPath)"',' ')" ContinueOnError="false" /> | 
 |     </Target> | 
 | </Project> |