bpo-33125: Enables building traditional installer for Windows ARM64 (GH-30885)

Also makes a few general improvements to the build process and removes some dead code.
This commit is contained in:
Steve Dower 2022-01-28 16:48:06 +00:00 committed by GitHub
parent db77bcd609
commit 45faf151c6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
47 changed files with 334 additions and 127 deletions

View file

@ -34,6 +34,10 @@ parameters:
displayName: "Signature description" displayName: "Signature description"
type: string type: string
default: 'Built: $(Build.BuildNumber)' default: 'Built: $(Build.BuildNumber)'
- name: DoARM64
displayName: "Publish ARM64 build"
type: boolean
default: true
- name: DoPGO - name: DoPGO
displayName: "Run PGO" displayName: "Run PGO"
type: boolean type: boolean
@ -64,25 +68,26 @@ parameters:
default: '0' default: '0'
variables: variables:
__RealSigningCertificate: 'Python Software Foundation' __RealSigningCertificate: 'Python Software Foundation'
${{ if ne(parameters.GitRemote, '(Other)') }}: ${{ if ne(parameters.GitRemote, '(Other)') }}:
GitRemote: ${{ parameters.GitRemote }} GitRemote: ${{ parameters.GitRemote }}
${{ else }}: ${{ else }}:
GitRemote: ${{ parameters.GitRemote_Other }} GitRemote: ${{ parameters.GitRemote_Other }}
SourceTag: ${{ parameters.SourceTag }} SourceTag: ${{ parameters.SourceTag }}
DoPGO: ${{ parameters.DoPGO }} DoPGO: ${{ parameters.DoPGO }}
${{ if ne(parameters.SigningCertificate, 'Unsigned') }}: ${{ if ne(parameters.SigningCertificate, 'Unsigned') }}:
SigningCertificate: ${{ parameters.SigningCertificate }} SigningCertificate: ${{ parameters.SigningCertificate }}
SigningDescription: ${{ parameters.SigningDescription }} SigningDescription: ${{ parameters.SigningDescription }}
DoLayout: ${{ parameters.DoLayout }} DoLayout: ${{ parameters.DoLayout }}
DoMSIX: ${{ parameters.DoMSIX }} DoMSIX: ${{ parameters.DoMSIX }}
DoNuget: ${{ parameters.DoNuget }} DoNuget: ${{ parameters.DoNuget }}
DoEmbed: ${{ parameters.DoEmbed }} DoEmbed: ${{ parameters.DoEmbed }}
DoMSI: ${{ parameters.DoMSI }} DoMSI: ${{ parameters.DoMSI }}
DoPublish: ${{ parameters.DoPublish }} DoPublish: ${{ parameters.DoPublish }}
PublishARM64: ${{ parameters.DoARM64 }}
# QUEUE TIME VARIABLES # QUEUE TIME VARIABLES
# PyDotOrgUsername: '' # PyDotOrgUsername: ''
# PyDotOrgServer: '' # PyDotOrgServer: ''
trigger: none trigger: none
pr: none pr: none

View file

@ -45,6 +45,20 @@ steps:
artifactName: bin_amd64_d artifactName: bin_amd64_d
targetPath: $(Build.BinariesDirectory)\amd64 targetPath: $(Build.BinariesDirectory)\amd64
- task: DownloadPipelineArtifact@1
displayName: 'Download artifact: bin_arm64'
condition: and(succeeded(), eq(variables['PublishARM64'], 'true'))
inputs:
artifactName: bin_arm64
targetPath: $(Build.BinariesDirectory)\arm64
- task: DownloadPipelineArtifact@1
displayName: 'Download artifact: bin_arm64_d'
condition: and(succeeded(), eq(variables['PublishARM64'], 'true'))
inputs:
artifactName: bin_arm64_d
targetPath: $(Build.BinariesDirectory)\arm64
- task: DownloadPipelineArtifact@1 - task: DownloadPipelineArtifact@1
displayName: 'Download artifact: tcltk_lib_win32' displayName: 'Download artifact: tcltk_lib_win32'
inputs: inputs:
@ -84,12 +98,12 @@ steps:
- script: | - script: |
%MSBUILD% Tools\msi\bundle\releaselocal.wixproj /t:Rebuild /p:RebuildAll=true %MSBUILD% Tools\msi\bundle\releaselocal.wixproj /t:Rebuild /p:RebuildAll=true
%MSBUILD% Tools\msi\bundle\releaseweb.wixproj /t:Rebuild /p:RebuildAll=false
displayName: 'Build win32 installer' displayName: 'Build win32 installer'
env: env:
Platform: x86 Platform: x86
Py_OutDir: $(Build.BinariesDirectory) Py_OutDir: $(Build.BinariesDirectory)
PYTHON: $(Build.BinariesDirectory)\win32\python.exe PYTHON: $(Build.BinariesDirectory)\win32\python.exe
PythonForBuild: $(Build.BinariesDirectory)\win32\python.exe
PYTHONHOME: $(Build.SourcesDirectory) PYTHONHOME: $(Build.SourcesDirectory)
TclTkLibraryDir: $(Build.BinariesDirectory)\tcltk_lib_win32 TclTkLibraryDir: $(Build.BinariesDirectory)\tcltk_lib_win32
BuildForRelease: true BuildForRelease: true
@ -97,19 +111,32 @@ steps:
- script: | - script: |
%MSBUILD% Tools\msi\bundle\releaselocal.wixproj /t:Rebuild /p:RebuildAll=true %MSBUILD% Tools\msi\bundle\releaselocal.wixproj /t:Rebuild /p:RebuildAll=true
%MSBUILD% Tools\msi\bundle\releaseweb.wixproj /t:Rebuild /p:RebuildAll=false
displayName: 'Build amd64 installer' displayName: 'Build amd64 installer'
env: env:
Platform: x64 Platform: x64
Py_OutDir: $(Build.BinariesDirectory) Py_OutDir: $(Build.BinariesDirectory)
PYTHON: $(Build.BinariesDirectory)\amd64\python.exe PYTHON: $(Build.BinariesDirectory)\amd64\python.exe
PythonForBuild: $(Build.BinariesDirectory)\amd64\python.exe
PYTHONHOME: $(Build.SourcesDirectory) PYTHONHOME: $(Build.SourcesDirectory)
TclTkLibraryDir: $(Build.BinariesDirectory)\tcltk_lib_amd64 TclTkLibraryDir: $(Build.BinariesDirectory)\tcltk_lib_amd64
BuildForRelease: true BuildForRelease: true
SuppressMinGWLib: true SuppressMinGWLib: true
- script: |
%MSBUILD% Tools\msi\bundle\releaselocal.wixproj /t:Rebuild /p:RebuildAll=true
displayName: 'Build arm64 installer'
condition: and(succeeded(), eq(variables['PublishARM64'], 'true'))
env:
Platform: ARM64
Py_OutDir: $(Build.BinariesDirectory)
PYTHON: $(Build.BinariesDirectory)\win32\python.exe
PythonForBuild: $(Build.BinariesDirectory)\win32\python.exe
PYTHONHOME: $(Build.SourcesDirectory)
BuildForRelease: true
SuppressMinGWLib: true
- task: CopyFiles@2 - task: CopyFiles@2
displayName: 'Assemble artifact: msi (1/2)' displayName: 'Assemble artifact: msi (win32)'
inputs: inputs:
sourceFolder: $(Build.BinariesDirectory)\win32\en-us sourceFolder: $(Build.BinariesDirectory)\win32\en-us
targetFolder: $(Build.ArtifactStagingDirectory)\msi\win32 targetFolder: $(Build.ArtifactStagingDirectory)\msi\win32
@ -119,7 +146,7 @@ steps:
*.exe *.exe
- task: CopyFiles@2 - task: CopyFiles@2
displayName: 'Assemble artifact: msi (2/2)' displayName: 'Assemble artifact: msi (amd64)'
inputs: inputs:
sourceFolder: $(Build.BinariesDirectory)\amd64\en-us sourceFolder: $(Build.BinariesDirectory)\amd64\en-us
targetFolder: $(Build.ArtifactStagingDirectory)\msi\amd64 targetFolder: $(Build.ArtifactStagingDirectory)\msi\amd64
@ -128,6 +155,17 @@ steps:
*.cab *.cab
*.exe *.exe
- task: CopyFiles@2
displayName: 'Assemble artifact: msi (arm64)'
condition: and(succeeded(), eq(variables['PublishARM64'], 'true'))
inputs:
sourceFolder: $(Build.BinariesDirectory)\arm64\en-us
targetFolder: $(Build.ArtifactStagingDirectory)\msi\arm64
contents: |
*.msi
*.cab
*.exe
- task: PublishPipelineArtifact@0 - task: PublishPipelineArtifact@0
displayName: 'Publish MSI' displayName: 'Publish MSI'
inputs: inputs:

View file

@ -36,9 +36,9 @@ jobs:
- powershell: 'gci pythonarm*.nupkg | %{ Write-Host "Not publishing: $($_.Name)"; gi $_ } | del' - powershell: 'gci pythonarm*.nupkg | %{ Write-Host "Not publishing: $($_.Name)"; gi $_ } | del'
displayName: 'Prevent publishing ARM/ARM64 packages' displayName: 'Prevent publishing ARM64 packages'
workingDirectory: '$(Build.BinariesDirectory)\nuget' workingDirectory: '$(Build.BinariesDirectory)\nuget'
condition: and(succeeded(), not(variables['PublishArmPackages'])) condition: and(succeeded(), eq(variables['PublishARM64'], 'true'))
- task: NuGetCommand@2 - task: NuGetCommand@2
displayName: Push packages displayName: Push packages

View file

@ -77,10 +77,11 @@ jobs:
downloadPath: $(Build.BinariesDirectory) downloadPath: $(Build.BinariesDirectory)
# Note that ARM64 MSIs are skipped at build when this option is specified
- powershell: 'gci *embed-arm*.zip | %{ Write-Host "Not publishing: $($_.Name)"; gi $_ } | del' - powershell: 'gci *embed-arm*.zip | %{ Write-Host "Not publishing: $($_.Name)"; gi $_ } | del'
displayName: 'Prevent publishing ARM/ARM64 packages' displayName: 'Prevent publishing ARM64 packages'
workingDirectory: '$(Build.BinariesDirectory)\embed' workingDirectory: '$(Build.BinariesDirectory)\embed'
condition: and(succeeded(), not(variables['PublishArmPackages'])) condition: and(succeeded(), eq(variables['PublishARM64'], 'true'))
- template: ./gpg-sign.yml - template: ./gpg-sign.yml

View file

@ -11,19 +11,19 @@ jobs:
strategy: strategy:
matrix: matrix:
win32_User: win32_User:
ExeMatch: 'python-[\dabrc.]+-webinstall\.exe' ExeMatch: 'python-[\dabrc.]+\.exe'
Logs: $(Build.ArtifactStagingDirectory)\logs\win32_User Logs: $(Build.ArtifactStagingDirectory)\logs\win32_User
InstallAllUsers: 0 InstallAllUsers: 0
win32_Machine: win32_Machine:
ExeMatch: 'python-[\dabrc.]+-webinstall\.exe' ExeMatch: 'python-[\dabrc.]+\.exe'
Logs: $(Build.ArtifactStagingDirectory)\logs\win32_Machine Logs: $(Build.ArtifactStagingDirectory)\logs\win32_Machine
InstallAllUsers: 1 InstallAllUsers: 1
amd64_User: amd64_User:
ExeMatch: 'python-[\dabrc.]+-amd64-webinstall\.exe' ExeMatch: 'python-[\dabrc.]+-amd64\.exe'
Logs: $(Build.ArtifactStagingDirectory)\logs\amd64_User Logs: $(Build.ArtifactStagingDirectory)\logs\amd64_User
InstallAllUsers: 0 InstallAllUsers: 0
amd64_Machine: amd64_Machine:
ExeMatch: 'python-[\dabrc.]+-amd64-webinstall\.exe' ExeMatch: 'python-[\dabrc.]+-amd64\.exe'
Logs: $(Build.ArtifactStagingDirectory)\logs\amd64_Machine Logs: $(Build.ArtifactStagingDirectory)\logs\amd64_Machine
InstallAllUsers: 1 InstallAllUsers: 1

View file

@ -37,3 +37,11 @@ jobs:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Build CPython installer - name: Build CPython installer
run: .\Tools\msi\build.bat -x64 run: .\Tools\msi\build.bat -x64
build_win_arm64:
name: 'Windows (ARM64) Installer'
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Build CPython installer
run: .\Tools\msi\build.bat -arm64

View file

@ -0,0 +1,2 @@
The traditional EXE/MSI based installer for Windows is now available for
ARM64

View file

@ -13,6 +13,7 @@
<_DLLSuffix>-1_1</_DLLSuffix> <_DLLSuffix>-1_1</_DLLSuffix>
<_DLLSuffix Condition="$(Platform) == 'ARM'">$(_DLLSuffix)-arm</_DLLSuffix> <_DLLSuffix Condition="$(Platform) == 'ARM'">$(_DLLSuffix)-arm</_DLLSuffix>
<_DLLSuffix Condition="$(Platform) == 'ARM64'">$(_DLLSuffix)-arm64</_DLLSuffix> <_DLLSuffix Condition="$(Platform) == 'ARM64'">$(_DLLSuffix)-arm64</_DLLSuffix>
<OpenSSLDLLSuffix>$(_DLLSuffix)</OpenSSLDLLSuffix>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<_SSLDLL Include="$(opensslOutDir)\libcrypto$(_DLLSuffix).dll" /> <_SSLDLL Include="$(opensslOutDir)\libcrypto$(_DLLSuffix).dll" />
@ -20,10 +21,14 @@
<_SSLDLL Include="$(opensslOutDir)\libssl$(_DLLSuffix).dll" /> <_SSLDLL Include="$(opensslOutDir)\libssl$(_DLLSuffix).dll" />
<_SSLDLL Include="$(opensslOutDir)\libssl$(_DLLSuffix).pdb" /> <_SSLDLL Include="$(opensslOutDir)\libssl$(_DLLSuffix).pdb" />
</ItemGroup> </ItemGroup>
<Target Name="_CopySSLDLL" Inputs="@(_SSLDLL)" Outputs="@(_SSLDLL->'$(OutDir)%(Filename)%(Extension)')" AfterTargets="Build"> <Target Name="_CopySSLDLL"
Inputs="@(_SSLDLL)"
Outputs="@(_SSLDLL->'$(OutDir)%(Filename)%(Extension)')"
Condition="$(SkipCopySSLDLL) == ''"
AfterTargets="Build">
<Copy SourceFiles="@(_SSLDLL)" DestinationFolder="$(OutDir)" /> <Copy SourceFiles="@(_SSLDLL)" DestinationFolder="$(OutDir)" />
</Target> </Target>
<Target Name="_CleanSSLDLL" BeforeTargets="Clean"> <Target Name="_CleanSSLDLL" Condition="$(SkipCopySSLDLL) == ''" BeforeTargets="Clean">
<Delete Files="@(_SSLDLL->'$(OutDir)%(Filename)%(Extension)')" TreatErrorsAsWarnings="true" /> <Delete Files="@(_SSLDLL->'$(OutDir)%(Filename)%(Extension)')" TreatErrorsAsWarnings="true" />
</Target> </Target>
</Project> </Project>

View file

@ -29,6 +29,7 @@
<tcltkLib>$(tcltkDir)lib\tcl$(TclMajorVersion)$(TclMinorVersion)t$(TclDebugExt).lib;$(tcltkDir)lib\tk$(TkMajorVersion)$(TkMinorVersion)t$(TclDebugExt).lib</tcltkLib> <tcltkLib>$(tcltkDir)lib\tcl$(TclMajorVersion)$(TclMinorVersion)t$(TclDebugExt).lib;$(tcltkDir)lib\tk$(TkMajorVersion)$(TkMinorVersion)t$(TclDebugExt).lib</tcltkLib>
<TclMachine>IX86</TclMachine> <TclMachine>IX86</TclMachine>
<TclMachine Condition="'$(Platform)' == 'x64'">AMD64</TclMachine> <TclMachine Condition="'$(Platform)' == 'x64'">AMD64</TclMachine>
<TclMachine Condition="'$(Platform)' == 'ARM64'">ARM64</TclMachine>
<TclVersions>TCL_MAJOR_VERSION=$(TclMajorVersion) TCL_MINOR_VERSION=$(TclMinorVersion) TCL_PATCH_LEVEL=$(TclPatchLevel)</TclVersions> <TclVersions>TCL_MAJOR_VERSION=$(TclMajorVersion) TCL_MINOR_VERSION=$(TclMinorVersion) TCL_PATCH_LEVEL=$(TclPatchLevel)</TclVersions>
<TclShortVersions>TCL_MAJOR=$(TclMajorVersion) TCL_MINOR=$(TclMinorVersion) TCL_PATCH=$(TclPatchLevel)</TclShortVersions> <TclShortVersions>TCL_MAJOR=$(TclMajorVersion) TCL_MINOR=$(TclMinorVersion) TCL_PATCH=$(TclPatchLevel)</TclShortVersions>
<TkVersions>TK_MAJOR_VERSION=$(TkMajorVersion) TK_MINOR_VERSION=$(TkMinorVersion) TK_PATCH_LEVEL=$(TkPatchLevel)</TkVersions> <TkVersions>TK_MAJOR_VERSION=$(TkMajorVersion) TK_MINOR_VERSION=$(TkMinorVersion) TK_PATCH_LEVEL=$(TkPatchLevel)</TkVersions>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />
<PropertyRef Id="REGISTRYKEY" /> <PropertyRef Id="REGISTRYKEY" />

View file

@ -5,6 +5,7 @@ set PCBUILD=%D%..\..\PCbuild\
set BUILDX86= set BUILDX86=
set BUILDX64= set BUILDX64=
set BUILDARM64=
set BUILDDOC= set BUILDDOC=
set BUILDTEST= set BUILDTEST=
set BUILDPACK= set BUILDPACK=
@ -14,22 +15,23 @@ set REBUILD=
if "%~1" EQU "-h" goto Help if "%~1" EQU "-h" goto Help
if "%~1" EQU "-x86" (set BUILDX86=1) && shift && goto CheckOpts if "%~1" EQU "-x86" (set BUILDX86=1) && shift && goto CheckOpts
if "%~1" EQU "-x64" (set BUILDX64=1) && shift && goto CheckOpts if "%~1" EQU "-x64" (set BUILDX64=1) && shift && goto CheckOpts
if "%~1" EQU "-arm64" (set BUILDARM64=1) && shift && goto CheckOpts
if "%~1" EQU "--doc" (set BUILDDOC=1) && shift && goto CheckOpts if "%~1" EQU "--doc" (set BUILDDOC=1) && shift && goto CheckOpts
if "%~1" EQU "--no-test-marker" (set BUILDTEST=) && shift && goto CheckOpts if "%~1" EQU "--no-test-marker" (set BUILDTEST=) && shift && goto CheckOpts
if "%~1" EQU "--test-marker" (set BUILDTEST=--test-marker) && shift && goto CheckOpts if "%~1" EQU "--test-marker" (set BUILDTEST=--test-marker) && shift && goto CheckOpts
if "%~1" EQU "--pack" (set BUILDPACK=1) && shift && goto CheckOpts if "%~1" EQU "--pack" (set BUILDPACK=1) && shift && goto CheckOpts
if "%~1" EQU "-r" (set REBUILD=-r) && shift && goto CheckOpts if "%~1" EQU "-r" (set REBUILD=-r) && shift && goto CheckOpts
if not defined BUILDX86 if not defined BUILDX64 (set BUILDX86=1) && (set BUILDX64=1) if not defined BUILDX86 if not defined BUILDX64 if not defined BUILDARM64 (set BUILDX86=1) && (set BUILDX64=1)
call "%D%get_externals.bat" call "%D%get_externals.bat"
call "%PCBUILD%find_msbuild.bat" %MSBUILD% call "%PCBUILD%find_msbuild.bat" %MSBUILD%
if ERRORLEVEL 1 (echo Cannot locate MSBuild.exe on PATH or as MSBUILD variable & exit /b 2) if ERRORLEVEL 1 (echo Cannot locate MSBuild.exe on PATH or as MSBUILD variable & exit /b 2)
if defined BUILDX86 ( if defined BUILDX86 (
call "%PCBUILD%build.bat" -d -e %REBUILD% %BUILDTEST% call "%PCBUILD%build.bat" -p Win32 -d -e %REBUILD% %BUILDTEST%
if errorlevel 1 goto :eof if errorlevel 1 goto :eof
call "%PCBUILD%build.bat" -e %REBUILD% %BUILDTEST% call "%PCBUILD%build.bat" -p Win32 -e %REBUILD% %BUILDTEST%
if errorlevel 1 goto :eof if errorlevel 1 goto :eof
) )
if defined BUILDX64 ( if defined BUILDX64 (
@ -38,6 +40,12 @@ if defined BUILDX64 (
call "%PCBUILD%build.bat" -p x64 -e %REBUILD% %BUILDTEST% call "%PCBUILD%build.bat" -p x64 -e %REBUILD% %BUILDTEST%
if errorlevel 1 goto :eof if errorlevel 1 goto :eof
) )
if defined BUILDARM64 (
call "%PCBUILD%build.bat" -p ARM64 -d -e %REBUILD% %BUILDTEST%
if errorlevel 1 goto :eof
call "%PCBUILD%build.bat" -p ARM64 -e %REBUILD% %BUILDTEST%
if errorlevel 1 goto :eof
)
if defined BUILDDOC ( if defined BUILDDOC (
call "%PCBUILD%..\Doc\make.bat" htmlhelp call "%PCBUILD%..\Doc\make.bat" htmlhelp
@ -59,21 +67,26 @@ if defined REBUILD (
) )
if defined BUILDX86 ( if defined BUILDX86 (
%MSBUILD% %BUILD_CMD% %MSBUILD% /p:Platform=x86 %BUILD_CMD%
if errorlevel 1 goto :eof if errorlevel 1 goto :eof
) )
if defined BUILDX64 ( if defined BUILDX64 (
%MSBUILD% /p:Platform=x64 %BUILD_CMD% %MSBUILD% /p:Platform=x64 %BUILD_CMD%
if errorlevel 1 goto :eof if errorlevel 1 goto :eof
) )
if defined BUILDARM64 (
%MSBUILD% /p:Platform=ARM64 %BUILD_CMD%
if errorlevel 1 goto :eof
)
exit /B 0 exit /B 0
:Help :Help
echo build.bat [-x86] [-x64] [--doc] [-h] [--test-marker] [--pack] [-r] echo build.bat [-x86] [-x64] [-arm64] [--doc] [-h] [--test-marker] [--pack] [-r]
echo. echo.
echo -x86 Build x86 installers echo -x86 Build x86 installers
echo -x64 Build x64 installers echo -x64 Build x64 installers
echo -ARM64 Build ARM64 installers
echo --doc Build CHM documentation echo --doc Build CHM documentation
echo --test-marker Build with test markers echo --test-marker Build with test markers
echo --no-test-marker Build without test markers (default) echo --no-test-marker Build without test markers (default)

View file

@ -34,6 +34,7 @@ set EXTERNALS=%D%..\..\externals\windows-installer\
set BUILDX86= set BUILDX86=
set BUILDX64= set BUILDX64=
set BUILDARM64=
set TARGET=Rebuild set TARGET=Rebuild
set TESTTARGETDIR= set TESTTARGETDIR=
set PGO=-m test -q --pgo set PGO=-m test -q --pgo
@ -58,6 +59,7 @@ if "%1" EQU "-b" (set TARGET=Build) && shift && goto CheckOpts
if "%1" EQU "--build" (set TARGET=Build) && shift && goto CheckOpts if "%1" EQU "--build" (set TARGET=Build) && shift && goto CheckOpts
if "%1" EQU "-x86" (set BUILDX86=1) && shift && goto CheckOpts if "%1" EQU "-x86" (set BUILDX86=1) && shift && goto CheckOpts
if "%1" EQU "-x64" (set BUILDX64=1) && shift && goto CheckOpts if "%1" EQU "-x64" (set BUILDX64=1) && shift && goto CheckOpts
if "%1" EQU "-arm64" (set BUILDARM64=1) && shift && goto CheckOpts
if "%1" EQU "--pgo" (set PGO=%~2) && shift && shift && goto CheckOpts if "%1" EQU "--pgo" (set PGO=%~2) && shift && shift && goto CheckOpts
if "%1" EQU "--skip-pgo" (set PGO=) && shift && goto CheckOpts if "%1" EQU "--skip-pgo" (set PGO=) && shift && goto CheckOpts
if "%1" EQU "--skip-nuget" (set BUILDNUGET=) && shift && goto CheckOpts if "%1" EQU "--skip-nuget" (set BUILDNUGET=) && shift && goto CheckOpts
@ -66,7 +68,7 @@ if "%1" EQU "--skip-msi" (set BUILDMSI=) && shift && goto CheckOpts
if "%1" NEQ "" echo Invalid option: "%1" && exit /B 1 if "%1" NEQ "" echo Invalid option: "%1" && exit /B 1
if not defined BUILDX86 if not defined BUILDX64 (set BUILDX86=1) && (set BUILDX64=1) if not defined BUILDX86 if not defined BUILDX64 if not defined BUILDARM64 (set BUILDX86=1) && (set BUILDX64=1)
if not exist "%GIT%" where git > "%TEMP%\git.loc" 2> nul && set /P GIT= < "%TEMP%\git.loc" & del "%TEMP%\git.loc" if not exist "%GIT%" where git > "%TEMP%\git.loc" 2> nul && set /P GIT= < "%TEMP%\git.loc" & del "%TEMP%\git.loc"
if not exist "%GIT%" echo Cannot find Git on PATH && exit /B 1 if not exist "%GIT%" echo Cannot find Git on PATH && exit /B 1
@ -83,14 +85,6 @@ call "%D%..\..\doc\make.bat" htmlhelp
if errorlevel 1 goto :eof if errorlevel 1 goto :eof
:skipdoc :skipdoc
where dlltool /q && goto skipdlltoolsearch
set _DLLTOOL_PATH=
where /R "%EXTERNALS%\" dlltool > "%TEMP%\dlltool.loc" 2> nul && set /P _DLLTOOL_PATH= < "%TEMP%\dlltool.loc" & del "%TEMP%\dlltool.loc"
if not exist "%_DLLTOOL_PATH%" echo Cannot find binutils on PATH or in external && exit /B 1
for %%f in (%_DLLTOOL_PATH%) do set PATH=%PATH%;%%~dpf
set _DLLTOOL_PATH=
:skipdlltoolsearch
if defined BUILDX86 ( if defined BUILDX86 (
call :build x86 call :build x86
if errorlevel 1 exit /B if errorlevel 1 exit /B
@ -101,6 +95,11 @@ if defined BUILDX64 (
if errorlevel 1 exit /B if errorlevel 1 exit /B
) )
if defined BUILDARM64 (
call :build ARM64
if errorlevel 1 exit /B
)
if defined TESTTARGETDIR ( if defined TESTTARGETDIR (
call "%D%testrelease.bat" -t "%TESTTARGETDIR%" call "%D%testrelease.bat" -t "%TESTTARGETDIR%"
) )
@ -117,12 +116,21 @@ if "%1" EQU "x86" (
set BUILD_PLAT=Win32 set BUILD_PLAT=Win32
set OUTDIR_PLAT=win32 set OUTDIR_PLAT=win32
set OBJDIR_PLAT=x86 set OBJDIR_PLAT=x86
) else ( ) else if "%1" EQU "x64" (
set BUILD=%Py_OutDir%amd64\ set BUILD=%Py_OutDir%amd64\
set PGO=%~2 set PGO=%~2
set BUILD_PLAT=x64 set BUILD_PLAT=x64
set OUTDIR_PLAT=amd64 set OUTDIR_PLAT=amd64
set OBJDIR_PLAT=x64 set OBJDIR_PLAT=x64
) else if "%1" EQU "ARM64" (
set BUILD=%Py_OutDir%amd64\
set PGO=%~2
set BUILD_PLAT=ARM64
set OUTDIR_PLAT=arm64
set OBJDIR_PLAT=arm64
) else (
echo Unknown platform %1
exit /B 1
) )
if exist "%BUILD%en-us" ( if exist "%BUILD%en-us" (
@ -179,18 +187,24 @@ set BUILDOPTS=/p:Platform=%1 /p:BuildForRelease=true /p:DownloadUrl=%DOWNLOAD_UR
if defined BUILDMSI ( if defined BUILDMSI (
%MSBUILD% "%D%bundle\releaselocal.wixproj" /t:Rebuild %BUILDOPTS% %CERTOPTS% /p:RebuildAll=true %MSBUILD% "%D%bundle\releaselocal.wixproj" /t:Rebuild %BUILDOPTS% %CERTOPTS% /p:RebuildAll=true
if errorlevel 1 exit /B if errorlevel 1 exit /B
%MSBUILD% "%D%bundle\releaseweb.wixproj" /t:Rebuild %BUILDOPTS% %CERTOPTS% /p:RebuildAll=false
if errorlevel 1 exit /B
) )
if defined BUILDZIP ( if defined BUILDZIP (
%MSBUILD% "%D%make_zip.proj" /t:Build %BUILDOPTS% %CERTOPTS% /p:OutputPath="%BUILD%en-us" if "%BUILD_PLAT%" EQU "ARM64" (
if errorlevel 1 exit /B echo Skipping embeddable ZIP generation for ARM64 platform
) else (
%MSBUILD% "%D%make_zip.proj" /t:Build %BUILDOPTS% %CERTOPTS% /p:OutputPath="%BUILD%en-us"
if errorlevel 1 exit /B
)
) )
if defined BUILDNUGET ( if defined BUILDNUGET (
%MSBUILD% "%D%..\nuget\make_pkg.proj" /t:Build /p:Configuration=Release /p:Platform=%1 /p:OutputPath="%BUILD%en-us" if "%BUILD_PLAT%" EQU "ARM64" (
if errorlevel 1 exit /B echo Skipping Nuget package generation for ARM64 platform
) else (
%MSBUILD% "%D%..\nuget\make_pkg.proj" /t:Build /p:Configuration=Release /p:Platform=%1 /p:OutputPath="%BUILD%en-us"
if errorlevel 1 exit /B
)
) )
if not "%OUTDIR%" EQU "" ( if not "%OUTDIR%" EQU "" (
@ -205,7 +219,7 @@ if not "%OUTDIR%" EQU "" (
exit /B 0 exit /B 0
:Help :Help
echo buildrelease.bat [--out DIR] [-x86] [-x64] [--certificate CERTNAME] [--build] [--pgo COMMAND] echo buildrelease.bat [--out DIR] [-x86] [-x64] [-arm64] [--certificate CERTNAME] [--build] [--pgo COMMAND]
echo [--skip-build] [--skip-doc] [--skip-nuget] [--skip-zip] [--skip-pgo] echo [--skip-build] [--skip-doc] [--skip-nuget] [--skip-zip] [--skip-pgo]
echo [--download DOWNLOAD URL] [--test TARGETDIR] echo [--download DOWNLOAD URL] [--test TARGETDIR]
echo [-h] echo [-h]
@ -213,6 +227,7 @@ echo.
echo --out (-o) Specify an additional output directory for installers echo --out (-o) Specify an additional output directory for installers
echo -x86 Build x86 installers echo -x86 Build x86 installers
echo -x64 Build x64 installers echo -x64 Build x64 installers
echo -arm64 Build ARM64 installers
echo --build (-b) Incrementally build Python rather than rebuilding echo --build (-b) Incrementally build Python rather than rebuilding
echo --skip-build (-B) Do not build Python (just do the installers) echo --skip-build (-B) Do not build Python (just do the installers)
echo --skip-doc (-D) Do not build documentation echo --skip-doc (-D) Do not build documentation
@ -231,6 +246,9 @@ echo.
echo For the --pgo option, any Python command line can be used, or 'default' to echo For the --pgo option, any Python command line can be used, or 'default' to
echo use the default task (-m test --pgo). echo use the default task (-m test --pgo).
echo. echo.
echo x86 and ARM64 builds will never use PGO. ARM64 builds will never generate
echo embeddable or Nuget packages.
echo.
echo The following substitutions will be applied to the download URL: echo The following substitutions will be applied to the download URL:
echo Variable Description Example echo Variable Description Example
echo {version} version number 3.5.0 echo {version} version number 3.5.0

View file

@ -0,0 +1,26 @@
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://schemas.microsoft.com/wix/2006/localization">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name()='String' and @Id='InstallButtonNote']">
<String Id="InstallButtonNote">[TargetDir]
Includes pip and documentation
Creates shortcuts but no file associations</String>
</xsl:template>
<xsl:template match="*[local-name()='String' and @Id='Include_launcherHelp']">
<String Id="Include_launcherHelp">(The 'py' launcher is currently unavailable on ARM64.)</String>
</xsl:template>
<xsl:template match="*[local-name()='String' and @Id='Include_tcltkHelpLabel']">
<String Id="Include_tcltkHelpLabel">(tcl/tk and IDLE are currently unavailable on ARM64.)</String>
</xsl:template>
</xsl:stylesheet>

View file

@ -52,16 +52,16 @@
<Text X="185" Y="11" Width="-11" Height="36" FontId="1" DisablePrefix="yes">#(loc.Custom1Header)</Text> <Text X="185" Y="11" Width="-11" Height="36" FontId="1" DisablePrefix="yes">#(loc.Custom1Header)</Text>
<Image X="0" Y="0" Width="178" Height="382" ImageFile="SideBar.png"/> <Image X="0" Y="0" Width="178" Height="382" ImageFile="SideBar.png"/>
<Checkbox Name="Include_doc" X="185" Y="51" Width="-11" Height="24" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.Include_docLabel)</Checkbox> <Checkbox Name="Include_doc" X="185" Y="51" Width="-11" Height="24" TabStop="yes" FontId="3" HideWhenDisabled="no">#(loc.Include_docLabel)</Checkbox>
<Text X="205" Y="76" Width="-11" Height="24" TabStop="no" FontId="5">#(loc.Include_docHelpLabel)</Text> <Text X="205" Y="76" Width="-11" Height="24" TabStop="no" FontId="5">#(loc.Include_docHelpLabel)</Text>
<Checkbox Name="Include_pip" X="185" Y="101" Width="-11" Height="24" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.Include_pipLabel)</Checkbox> <Checkbox Name="Include_pip" X="185" Y="101" Width="-11" Height="24" TabStop="yes" FontId="3" HideWhenDisabled="no">#(loc.Include_pipLabel)</Checkbox>
<Text X="205" Y="126" Width="-11" Height="24" TabStop="no" FontId="5">#(loc.Include_pipHelpLabel)</Text> <Text X="205" Y="126" Width="-11" Height="24" TabStop="no" FontId="5">#(loc.Include_pipHelpLabel)</Text>
<Checkbox Name="Include_tcltk" X="185" Y="151" Width="-11" Height="24" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.Include_tcltkLabel)</Checkbox> <Checkbox Name="Include_tcltk" X="185" Y="151" Width="-11" Height="24" TabStop="yes" FontId="3" HideWhenDisabled="no">#(loc.Include_tcltkLabel)</Checkbox>
<Text X="205" Y="176" Width="-11" Height="24" TabStop="no" FontId="5">#(loc.Include_tcltkHelpLabel)</Text> <Text Name="Include_tcltkLabel" X="205" Y="176" Width="-11" Height="24" TabStop="no" FontId="5">#(loc.Include_tcltkHelpLabel)</Text>
<Checkbox Name="Include_test" X="185" Y="201" Width="-11" Height="24" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.Include_testLabel)</Checkbox> <Checkbox Name="Include_test" X="185" Y="201" Width="-11" Height="24" TabStop="yes" FontId="3" HideWhenDisabled="no">#(loc.Include_testLabel)</Checkbox>
<Text X="205" Y="226" Width="-11" Height="24" TabStop="no" FontId="5">#(loc.Include_testHelpLabel)</Text> <Text X="205" Y="226" Width="-11" Height="24" TabStop="no" FontId="5">#(loc.Include_testHelpLabel)</Text>
<Checkbox Name="Include_launcher" X="185" Y="251" Width="100" Height="24" TabStop="yes" FontId="3" HideWhenDisabled="no">#(loc.Include_launcherLabel)</Checkbox> <Checkbox Name="Include_launcher" X="185" Y="251" Width="100" Height="24" TabStop="yes" FontId="3" HideWhenDisabled="no">#(loc.Include_launcherLabel)</Checkbox>

View file

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization"> <WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<String Id="Caption">[WixBundleName] Setup</String> <String Id="Caption">[WixBundleName] Setup</String>
<String Id="Title">[WixBundleName]</String>
<String Id="Installing">Installing</String> <String Id="Installing">Installing</String>
<String Id="Installation">Setup</String> <String Id="Installation">Setup</String>
<String Id="Modifying">Updating</String> <String Id="Modifying">Updating</String>

View file

@ -1501,6 +1501,9 @@ private:
hr = UpdateUIStrings(_command.action); hr = UpdateUIStrings(_command.action);
BalExitOnFailure(hr, "Failed to load UI strings."); BalExitOnFailure(hr, "Failed to load UI strings.");
hr = FindProgramFilesArm();
BalExitOnFailure(hr, "Fatal error locating Program Files (Arm)");
GetBundleFileVersion(); GetBundleFileVersion();
// don't fail if we couldn't get the version info; best-effort only // don't fail if we couldn't get the version info; best-effort only
LExit: LExit:
@ -2181,6 +2184,37 @@ private:
return hr; return hr;
} }
HRESULT FindProgramFilesArm() {
wchar_t buffer[MAX_PATH + 1];
DWORD bufferLen = MAX_PATH;
LSTATUS res = RegGetValueW(
HKEY_LOCAL_MACHINE,
L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion",
L"ProgramFilesDir (Arm)",
RRF_RT_REG_SZ | RRF_RT_REG_EXPAND_SZ | RRF_SUBKEY_WOW6464KEY,
NULL,
buffer,
&bufferLen
);
if (res != ERROR_SUCCESS) {
// ProgramFilesArmFolder will default to ProgramFilesFolder. We only report
// an error if the value existed, as it will simply just be absent on non-ARM
// devices.
if (res != ERROR_FILE_NOT_FOUND) {
BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Failed to query 'ProgramFilesDir (Arm)': error code %d", res);
}
return S_OK;
}
if (buffer[0]) {
wchar_t *p = &buffer[bufferLen / sizeof(wchar_t) - 1];
while (*p == L'\\' || *p == L'\0') { p -= 1; }
*++p = L'\\';
*++p = L'\0';
_engine->SetVariableString(L"ProgramFilesArmFolder", buffer);
}
return S_OK;
}
// //
// OnPlan - plan the detected changes. // OnPlan - plan the detected changes.
// //

View file

@ -21,11 +21,10 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<Configuration Condition="'$(Configuration)' == ''">Release</Configuration> <Configuration Condition="'$(Configuration)' == ''">Release</Configuration>
<Platform Condition="'$(Platform)' == ''">Win32</Platform> <Platform Condition="'$(Platform)' == ''">Win32</Platform>
<PlatformToolset Condition="'$(PlatformToolset)' == '' and ('$(MSBuildToolsVersion)' == '16.0' or '$(VisualStudioVersion)' == '16.0')">v142</PlatformToolset> <PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(VisualStudioVersion)' == '17.0'">v143</PlatformToolset>
<PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(VisualStudioVersion)' == '16.0'">v142</PlatformToolset>
<PlatformToolset Condition="'$(PlatformToolset)' == '' and ('$(MSBuildToolsVersion)' == '15.0' or '$(VisualStudioVersion)' == '15.0')">v141</PlatformToolset> <PlatformToolset Condition="'$(PlatformToolset)' == '' and ('$(MSBuildToolsVersion)' == '15.0' or '$(VisualStudioVersion)' == '15.0')">v141</PlatformToolset>
<PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(VCTargetsPath14)' != ''">v140</PlatformToolset> <PlatformToolset Condition="'$(PlatformToolset)' == ''">v140</PlatformToolset>
<PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(VCTargetsPath14)' != ''">v140</PlatformToolset>
<PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(VCTargetsPath12)' != ''">v120</PlatformToolset>
<ProjectGuid>{7A09B132-B3EE-499B-A700-A4B2157FEA3D}</ProjectGuid> <ProjectGuid>{7A09B132-B3EE-499B-A700-A4B2157FEA3D}</ProjectGuid>
<TargetName>PythonBA</TargetName> <TargetName>PythonBA</TargetName>
</PropertyGroup> </PropertyGroup>
@ -42,6 +41,7 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<PreprocessorDefinitions Condition="$(BuildForPlatform) == 'ARM64'">ARM64=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_CRT_STDIO_LEGACY_WIDE_SPECIFIERS=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_CRT_STDIO_LEGACY_WIDE_SPECIFIERS=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(WixInstallPath)sdk\inc</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(WixInstallPath)sdk\inc</AdditionalIncludeDirectories>
<PrecompiledHeader>Use</PrecompiledHeader> <PrecompiledHeader>Use</PrecompiledHeader>
@ -50,8 +50,7 @@
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>comctl32.lib;gdiplus.lib;msimg32.lib;shlwapi.lib;wininet.lib;dutil.lib;balutil.lib;version.lib;uxtheme.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>comctl32.lib;gdiplus.lib;msimg32.lib;shlwapi.lib;wininet.lib;dutil.lib;balutil.lib;version.lib;uxtheme.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories Condition="'$(PlatformToolset)' == 'v142'">$(WixInstallPath)sdk\vs2017\lib\x86</AdditionalLibraryDirectories> <AdditionalLibraryDirectories Condition="$(PlatformToolset.StartsWith(`v14`))">$(WixInstallPath)sdk\vs2017\lib\x86</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories Condition="'$(PlatformToolset)' == 'v141'">$(WixInstallPath)sdk\vs2017\lib\x86</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories Condition="'$(PlatformToolset)' == 'v140'">$(WixInstallPath)sdk\vs2015\lib\x86</AdditionalLibraryDirectories> <AdditionalLibraryDirectories Condition="'$(PlatformToolset)' == 'v140'">$(WixInstallPath)sdk\vs2015\lib\x86</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories Condition="'$(PlatformToolset)' == 'v120'">$(WixInstallPath)sdk\vs2013\lib\x86</AdditionalLibraryDirectories> <AdditionalLibraryDirectories Condition="'$(PlatformToolset)' == 'v120'">$(WixInstallPath)sdk\vs2013\lib\x86</AdditionalLibraryDirectories>
<ModuleDefinitionFile>pythonba.def</ModuleDefinitionFile> <ModuleDefinitionFile>pythonba.def</ModuleDefinitionFile>

View file

@ -3,25 +3,26 @@
<PropertyGroup> <PropertyGroup>
<SchemaVersion>2.0</SchemaVersion> <SchemaVersion>2.0</SchemaVersion>
<OutputType>Bundle</OutputType> <OutputType>Bundle</OutputType>
<BootstrapConfiguration Condition="'$(BootstrapConfiguration)' == ''">Release</BootstrapConfiguration> <BootstrapConfiguration Condition="'$(BootstrapConfiguration)' == ''">Release</BootstrapConfiguration>
<LinkerSuppressSpecificWarnings>1132;1135;1140</LinkerSuppressSpecificWarnings> <LinkerSuppressSpecificWarnings>1132;1135;1140</LinkerSuppressSpecificWarnings>
<OutputName Condition="$(BuildForRelease)">$(OutputName)-$(PythonVersion)</OutputName> <OutputName Condition="$(BuildForRelease)">$(OutputName)-$(PythonVersion)</OutputName>
<OutputName Condition="!$(BuildForRelease)">$(OutputName)-$(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber).$(RevisionNumber)</OutputName> <OutputName Condition="!$(BuildForRelease)">$(OutputName)-$(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber).$(RevisionNumber)</OutputName>
<OutputName Condition="$(Platform) == 'x64'">$(OutputName)-amd64</OutputName> <OutputName Condition="$(Platform) == 'x64'">$(OutputName)-amd64</OutputName>
<OutputName Condition="$(Platform) == 'ARM64'">$(OutputName)-arm64</OutputName>
<OutputName Condition="'$(OutputSuffix)' != ''">$(OutputName)-$(OutputSuffix)</OutputName> <OutputName Condition="'$(OutputSuffix)' != ''">$(OutputName)-$(OutputSuffix)</OutputName>
<OutputName Condition="'$(Configuration)' == 'Debug'">$(OutputName)-d</OutputName> <OutputName Condition="'$(Configuration)' == 'Debug'">$(OutputName)-d</OutputName>
<TargetName>$(OutputName)</TargetName> <TargetName>$(OutputName)</TargetName>
<OutputPath>$(OutputPath)en-us\</OutputPath> <OutputPath>$(OutputPath)en-us\</OutputPath>
<OutDir>$(OutputPath)</OutDir> <OutDir>$(OutputPath)</OutDir>
<!-- See Tools/msi/buildrelease.bat for help on configuring the download URL --> <!-- See Tools/msi/buildrelease.bat for help on configuring the download URL -->
<DownloadUrl Condition="'$(DownloadUrl)' == '' and '$(DownloadUrlBase)' != ''">$(DownloadUrlBase.TrimEnd(`/`))/{version}/{arch}{releasename}/{msi}</DownloadUrl> <DownloadUrl Condition="'$(DownloadUrl)' == '' and '$(DownloadUrlBase)' != ''">$(DownloadUrlBase.TrimEnd(`/`))/{version}/{arch}{releasename}/{msi}</DownloadUrl>
<DefineConstants Condition="'$(DownloadUrl)' != ''">$(DefineConstants);DownloadUrl=$(DownloadUrl.Replace(`{version}`, `$(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber)`).Replace(`{arch}`, `$(ArchName)`).Replace(`{releasename}`, `$(ReleaseLevelName)`).Replace(`{msi}`, `{2}`))</DefineConstants> <DefineConstants Condition="'$(DownloadUrl)' != ''">$(DefineConstants);DownloadUrl=$(DownloadUrl.Replace(`{version}`, `$(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber)`).Replace(`{arch}`, `$(ArchName)`).Replace(`{releasename}`, `$(ReleaseLevelName)`).Replace(`{msi}`, `{2}`))</DefineConstants>
<DefineConstants Condition="'$(DownloadUrl)' == ''">$(DefineConstants);DownloadUrl={2}</DefineConstants> <DefineConstants Condition="'$(DownloadUrl)' == ''">$(DefineConstants);DownloadUrl={2}</DefineConstants>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<WixExtension Include="WixUtilExtension"> <WixExtension Include="WixUtilExtension">
<HintPath>WixUtilExtension</HintPath> <HintPath>WixUtilExtension</HintPath>
@ -42,7 +43,6 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="Default.thm" /> <Content Include="Default.thm" />
<Content Include="Default.wxl" />
<Content Include="SideBar.png" /> <Content Include="SideBar.png" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@ -54,7 +54,7 @@
<BindName></BindName> <BindName></BindName>
</LinkerBindInputPaths> </LinkerBindInputPaths>
</ItemGroup> </ItemGroup>
<ItemDefinitionGroup> <ItemDefinitionGroup>
<Package> <Package>
<Properties>BuildForRelease=$(BuildForRelease)</Properties> <Properties>BuildForRelease=$(BuildForRelease)</Properties>
@ -69,40 +69,61 @@
<Package Include="..\path\path*.wixproj" /> <Package Include="..\path\path*.wixproj" />
<Package Include="..\appendpath\appendpath*.wixproj" /> <Package Include="..\appendpath\appendpath*.wixproj" />
<Package Include="..\pip\pip*.wixproj" /> <Package Include="..\pip\pip*.wixproj" />
<Package Include="..\tcltk\tcltk*.wixproj" /> <Package Include="..\tcltk\tcltk*.wixproj" Condition="$(Platform) != 'ARM64'" />
<Package Include="..\test\test*.wixproj" /> <Package Include="..\test\test*.wixproj" />
<Package Include="..\tools\tools*.wixproj" /> <Package Include="..\tools\tools*.wixproj" />
<Package Include="..\ucrt\ucrt*.wixproj" /> <Package Include="..\ucrt\ucrt*.wixproj" Condition="$(Platform) != 'ARM64'" />
</ItemGroup> </ItemGroup>
<PropertyGroup> <PropertyGroup>
<BuildPackagesTargets>Build</BuildPackagesTargets> <BuildPackagesTargets>Build</BuildPackagesTargets>
</PropertyGroup> </PropertyGroup>
<Target Name="_SetRebuildTarget" BeforeTargets="BeforeRebuild"> <Target Name="_SetRebuildTarget" BeforeTargets="BeforeRebuild">
<PropertyGroup> <PropertyGroup>
<BuildPackagesTargets>Rebuild</BuildPackagesTargets> <BuildPackagesTargets>Rebuild</BuildPackagesTargets>
</PropertyGroup> </PropertyGroup>
</Target> </Target>
<Target Name="BuildPackages" BeforeTargets="BeforeBuild" Condition="'$(RebuildAll)' != 'false'"> <Target Name="BuildPackages" BeforeTargets="BeforeBuild" Condition="'$(RebuildAll)' != 'false'">
<MSBuild Projects="@(Package)" Targets="$(BuildPackagesTargets)" BuildInParallel="true" /> <MSBuild Projects="@(Package)" Targets="$(BuildPackagesTargets)" BuildInParallel="true" />
</Target> </Target>
<Target Name="BuildBootstrapApplication" BeforeTargets="BeforeBuild"> <Target Name="BuildBootstrapApplication" BeforeTargets="BeforeBuild">
<Message Text="Building bootstrap app" Importance="high" /> <Message Text="Building bootstrap app" Importance="high" />
<MSBuild Projects="bootstrap\pythonba.vcxproj" <MSBuild Projects="bootstrap\pythonba.vcxproj"
Targets="Build;GetNativeTargetPath" Targets="Build;GetNativeTargetPath"
UseResultsCache="true" UseResultsCache="true"
Properties="Configuration=$(BootstrapConfiguration);Platform=Win32"> Properties="Configuration=$(BootstrapConfiguration);Platform=Win32;BuildForPlatform=$(Platform)">
<Output TaskParameter="TargetOutputs" PropertyName="BootstrapAppPath" /> <Output TaskParameter="TargetOutputs" PropertyName="BootstrapAppPath" />
</MSBuild> </MSBuild>
<PropertyGroup> <PropertyGroup>
<DefineConstants>$(DefineConstants);BootstrapApp=$(BootstrapAppPath)</DefineConstants> <DefineConstants>$(DefineConstants);BootstrapApp=$(BootstrapAppPath)</DefineConstants>
</PropertyGroup> </PropertyGroup>
</Target> </Target>
<Target Name="AddDefaultWxl" AfterTargets="PrepareForBuild" Condition="!Exists('Default.$(Platform).xsl')">
<ItemGroup>
<EmbeddedResource Include="Default.wxl" />
</ItemGroup>
<PropertyGroup>
<DefineConstants>$(DefineConstants);DefaultWxl=Default.wxl</DefineConstants>
</PropertyGroup>
</Target>
<Target Name="AddUpdatedDefaultWxl" AfterTargets="PrepareForBuild" Condition="Exists('Default.$(Platform).xsl')">
<XslTransformation XmlInputPaths="Default.wxl"
OutputPaths="$(IntermediateOutputPath)Default.wxl"
XslInputPath="Default.$(Platform).xsl"
UseTrustedSettings="true" />
<ItemGroup>
<EmbeddedResource Include="$(IntermediateOutputPath)Default.wxl" />
</ItemGroup>
<PropertyGroup>
<DefineConstants>$(DefineConstants);DefaultWxl=$(IntermediateOutputPath)Default.wxl</DefineConstants>
</PropertyGroup>
</Target>
<Import Project="..\msi.targets" /> <Import Project="..\msi.targets" />
</Project> </Project>

View file

@ -12,7 +12,7 @@
dep:ProviderKey="CPython-$(var.MajorVersionNumber).$(var.MinorVersionNumber)$(var.PyArchExt)$(var.PyTestExt)"> dep:ProviderKey="CPython-$(var.MajorVersionNumber).$(var.MinorVersionNumber)$(var.PyArchExt)$(var.PyTestExt)">
<BootstrapperApplication Id="PythonBA" SourceFile="$(var.BootstrapApp)"> <BootstrapperApplication Id="PythonBA" SourceFile="$(var.BootstrapApp)">
<Payload Compressed='yes' SourceFile='Default.thm' /> <Payload Compressed='yes' SourceFile='Default.thm' />
<Payload Compressed='yes' SourceFile='Default.wxl' /> <Payload Compressed='yes' SourceFile='$(var.DefaultWxl)' />
<Payload Compressed='yes' SourceFile='SideBar.png' /> <Payload Compressed='yes' SourceFile='SideBar.png' />
</BootstrapperApplication> </BootstrapperApplication>
@ -26,6 +26,9 @@
<Variable Name="WinVer" Value="$(var.MajorVersionNumber).$(var.MinorVersionNumber)$(var.PyArchExt)$(var.PyTestExt)" /> <Variable Name="WinVer" Value="$(var.MajorVersionNumber).$(var.MinorVersionNumber)$(var.PyArchExt)$(var.PyTestExt)" />
<Variable Name="WinVerNoDot" Value="$(var.MajorVersionNumber)$(var.MinorVersionNumber)$(var.PyArchExt)$(var.PyTestExt)" /> <Variable Name="WinVerNoDot" Value="$(var.MajorVersionNumber)$(var.MinorVersionNumber)$(var.PyArchExt)$(var.PyTestExt)" />
<!-- A more accurate value may be calculated by the bootstrapper -->
<Variable Name="ProgramFilesArmFolder" Value="[ProgramFilesFolder]" bal:Overridable="yes" />
<Variable Name="InstallAllUsers" Value="0" bal:Overridable="yes" /> <Variable Name="InstallAllUsers" Value="0" bal:Overridable="yes" />
<?if "$(var.PyTestExt)"="" ?> <?if "$(var.PyTestExt)"="" ?>
<Variable Name="InstallLauncherAllUsers" Value="1" bal:Overridable="yes" /> <Variable Name="InstallLauncherAllUsers" Value="1" bal:Overridable="yes" />
@ -36,6 +39,9 @@
<?if $(var.Platform)~="x64" ?> <?if $(var.Platform)~="x64" ?>
<Variable Name="DefaultAllUsersTargetDir" Value="[ProgramFiles64Folder]Python[WinVerNoDot]" bal:Overridable="yes" /> <Variable Name="DefaultAllUsersTargetDir" Value="[ProgramFiles64Folder]Python[WinVerNoDot]" bal:Overridable="yes" />
<Variable Name="TargetPlatform" Value="x64" /> <Variable Name="TargetPlatform" Value="x64" />
<?elseif $(var.Platform)~="ARM64" ?>
<Variable Name="DefaultAllUsersTargetDir" Value="[ProgramFilesArmFolder]Python[WinVerNoDot]" bal:Overridable="yes" />
<Variable Name="TargetPlatform" Value="ARM64" />
<?else ?> <?else ?>
<Variable Name="DefaultAllUsersTargetDir" Value="[ProgramFilesFolder]Python[WinVerNoDot]" bal:Overridable="yes" /> <Variable Name="DefaultAllUsersTargetDir" Value="[ProgramFilesFolder]Python[WinVerNoDot]" bal:Overridable="yes" />
<Variable Name="TargetPlatform" Value="x86" /> <Variable Name="TargetPlatform" Value="x86" />
@ -43,7 +49,7 @@
<Variable Name="DefaultJustForMeTargetDir" Value="[LocalAppDataFolder]Programs\Python\Python[WinVerNoDot]" bal:Overridable="yes" /> <Variable Name="DefaultJustForMeTargetDir" Value="[LocalAppDataFolder]Programs\Python\Python[WinVerNoDot]" bal:Overridable="yes" />
<Variable Name="OptionalFeaturesRegistryKey" Value="Software\Python\PythonCore\[WinVer]\InstalledFeatures" /> <Variable Name="OptionalFeaturesRegistryKey" Value="Software\Python\PythonCore\[WinVer]\InstalledFeatures" />
<Variable Name="TargetDirRegistryKey" Value="Software\Python\PythonCore\[WinVer]\InstallPath" /> <Variable Name="TargetDirRegistryKey" Value="Software\Python\PythonCore\[WinVer]\InstallPath" />
<!-- <!--
An empty string will use the other defaults based on InstallAllUsers An empty string will use the other defaults based on InstallAllUsers
(and switch dynamically in the UI). To get the old default, pass (and switch dynamically in the UI). To get the old default, pass
@ -53,7 +59,9 @@
<Variable Name="DefaultCustomTargetDir" Value="" bal:Overridable="yes" /> <Variable Name="DefaultCustomTargetDir" Value="" bal:Overridable="yes" />
<Variable Name="InstallAllUsersState" Value="enabled" bal:Overridable="yes" /> <Variable Name="InstallAllUsersState" Value="enabled" bal:Overridable="yes" />
<?if "$(var.PyTestExt)"="" ?> <?if "$(var.Platform)"~="ARM64" ?>
<Variable Name="InstallLauncherAllUsersState" Value="hide" bal:Overridable="yes" />
<?elseif "$(var.PyTestExt)"="" ?>
<Variable Name="InstallLauncherAllUsersState" Value="enabled" bal:Overridable="yes" /> <Variable Name="InstallLauncherAllUsersState" Value="enabled" bal:Overridable="yes" />
<?else ?> <?else ?>
<Variable Name="InstallLauncherAllUsersState" Value="disable" bal:Overridable="yes" /> <Variable Name="InstallLauncherAllUsersState" Value="disable" bal:Overridable="yes" />
@ -69,32 +77,44 @@
<Variable Name="Include_test" Value="1" bal:Overridable="yes" /> <Variable Name="Include_test" Value="1" bal:Overridable="yes" />
<Variable Name="Include_doc" Value="1" bal:Overridable="yes" /> <Variable Name="Include_doc" Value="1" bal:Overridable="yes" />
<Variable Name="Include_tools" Value="1" bal:Overridable="yes" /> <Variable Name="Include_tools" Value="1" bal:Overridable="yes" />
<?if $(var.Platform)~="ARM64" ?>
<Variable Name="Include_tcltk" Value="0" />
<Variable Name="Include_tcltkState" Value="disable" />
<?else ?>
<Variable Name="Include_tcltk" Value="1" bal:Overridable="yes" /> <Variable Name="Include_tcltk" Value="1" bal:Overridable="yes" />
<?endif ?>
<Variable Name="Include_pip" Value="1" bal:Overridable="yes" /> <Variable Name="Include_pip" Value="1" bal:Overridable="yes" />
<?if $(var.Platform)~="ARM64" ?>
<Variable Name="Include_launcher" Value="0" bal:Overridable="yes" />
<Variable Name="Include_launcherState" Value="disable" />
<?else ?>
<Variable Name="Include_launcher" Value="-1" bal:Overridable="yes" /> <Variable Name="Include_launcher" Value="-1" bal:Overridable="yes" />
<?if "$(var.PyTestExt)"="" ?> <?if "$(var.PyTestExt)"="" ?>
<Variable Name="Include_launcherState" Value="enabled" bal:Overridable="yes" /> <Variable Name="Include_launcherState" Value="enabled" bal:Overridable="yes" />
<?else ?> <?else ?>
<Variable Name="Include_launcherState" Value="disable" /> <Variable Name="Include_launcherState" Value="disable" />
<?endif ?> <?endif ?>
<?endif ?>
<Variable Name="Include_symbols" Value="0" bal:Overridable="yes" /> <Variable Name="Include_symbols" Value="0" bal:Overridable="yes" />
<Variable Name="Include_debug" Value="0" bal:Overridable="yes" /> <Variable Name="Include_debug" Value="0" bal:Overridable="yes" />
<Variable Name="LauncherOnly" Value="0" bal:Overridable="yes" /> <Variable Name="LauncherOnly" Value="0" bal:Overridable="yes" />
<Variable Name="DetectedLauncher" Value="0" /> <Variable Name="DetectedLauncher" Value="0" />
<Variable Name="DetectedOldLauncher" Value="0" /> <Variable Name="DetectedOldLauncher" Value="0" />
<Variable Name="AssociateFiles" Value="1" bal:Overridable="yes" /> <Variable Name="AssociateFiles" Value="1" bal:Overridable="yes" />
<Variable Name="Shortcuts" Value="1" bal:Overridable="yes" /> <Variable Name="Shortcuts" Value="1" bal:Overridable="yes" />
<Variable Name="PrependPath" Value="0" bal:Overridable="yes" /> <Variable Name="PrependPath" Value="0" bal:Overridable="yes" />
<Variable Name="AppendPath" Value="0" bal:Overridable="yes" /> <Variable Name="AppendPath" Value="0" bal:Overridable="yes" />
<Variable Name="CompileAll" Value="0" bal:Overridable="yes" /> <Variable Name="CompileAll" Value="0" bal:Overridable="yes" />
<Variable Name="SimpleInstall" Value="0" bal:Overridable="yes" /> <Variable Name="SimpleInstall" Value="0" bal:Overridable="yes" />
<Variable Name="SimpleInstallDescription" Value="" bal:Overridable="yes" /> <Variable Name="SimpleInstallDescription" Value="" bal:Overridable="yes" />
<Chain ParallelCache="yes"> <Chain ParallelCache="yes">
<?if $(var.Platform)!="ARM64" ?>
<PackageGroupRef Id="crt" /> <PackageGroupRef Id="crt" />
<?endif ?>
<PackageGroupRef Id="core" /> <PackageGroupRef Id="core" />
<PackageGroupRef Id="dev" /> <PackageGroupRef Id="dev" />
<PackageGroupRef Id="exe" /> <PackageGroupRef Id="exe" />
@ -102,8 +122,10 @@
<PackageGroupRef Id="test" /> <PackageGroupRef Id="test" />
<PackageGroupRef Id="doc" /> <PackageGroupRef Id="doc" />
<PackageGroupRef Id="tools" /> <PackageGroupRef Id="tools" />
<?if $(var.Platform)!="ARM64" ?>
<PackageGroupRef Id="tcltk" /> <PackageGroupRef Id="tcltk" />
<PackageGroupRef Id="launcher" /> <PackageGroupRef Id="launcher" />
<?endif ?>
<PackageGroupRef Id="pip" /> <PackageGroupRef Id="pip" />
<PackageGroupRef Id="packageinstall" /> <PackageGroupRef Id="packageinstall" />
<PackageGroupRef Id="postinstall" /> <PackageGroupRef Id="postinstall" />

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title_d)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title_d)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.TitlePdb)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.TitlePdb)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title_d)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title_d)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title_d)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title_d)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.TitlePdb)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.TitlePdb)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />

View file

@ -56,7 +56,7 @@ set binaries=%binaries% gpg
set binaries=%binaries% htmlhelp set binaries=%binaries% htmlhelp
set binaries=%binaries% nuget set binaries=%binaries% nuget
set binaries=%binaries% redist-1 set binaries=%binaries% redist-1
set binaries=%binaries% wix set binaries=%binaries% wix-314
for %%b in (%binaries%) do ( for %%b in (%binaries%) do (
if exist "%EXTERNALS_DIR%\%%b" ( if exist "%EXTERNALS_DIR%\%%b" (

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<Property Id="Suppress_TARGETDIR_Check" Value="1" /> <Property Id="Suppress_TARGETDIR_Check" Value="1" />

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title_d)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title_d)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.TitlePdb)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.TitlePdb)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />

View file

@ -12,9 +12,11 @@
<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> <_MakeCatCommand Condition="'$(_MakeCatCommand)' == ''">makecat</_MakeCatCommand>
<SkipCopySSLDLL>true</SkipCopySSLDLL>
</PropertyGroup> </PropertyGroup>
<Import Project="wix.props" /> <Import Project="wix.props" />
<Import Project="..\..\PCbuild\openssl.props" />
<Import Project="..\..\PCbuild\tcltk.props" /> <Import Project="..\..\PCbuild\tcltk.props" />
<PropertyGroup> <PropertyGroup>
@ -71,8 +73,10 @@
<PropertyGroup> <PropertyGroup>
<Bitness>32-bit</Bitness> <Bitness>32-bit</Bitness>
<Bitness Condition="$(Platform) == 'x64'">64-bit</Bitness> <Bitness Condition="$(Platform) == 'x64'">64-bit</Bitness>
<Bitness Condition="$(Platform) == 'ARM64'">ARM64</Bitness>
<PlatformArchitecture>32bit</PlatformArchitecture> <PlatformArchitecture>32bit</PlatformArchitecture>
<PlatformArchitecture Condition="$(Platform) == 'x64'">64bit</PlatformArchitecture> <PlatformArchitecture Condition="$(Platform) == 'x64'">64bit</PlatformArchitecture>
<PlatformArchitecture Condition="$(Platform) == 'ARM64'">ARM64</PlatformArchitecture>
<DefineConstants> <DefineConstants>
$(DefineConstants); $(DefineConstants);
Version=$(InstallerVersion); Version=$(InstallerVersion);
@ -88,17 +92,12 @@
PyArchExt=$(PyArchExt); PyArchExt=$(PyArchExt);
PyTestExt=$(PyTestExt); PyTestExt=$(PyTestExt);
OptionalFeatureName=$(OutputName); OptionalFeatureName=$(OutputName);
ssltag=-1_1; ssltag=$(OpenSSLDLLSuffix);
Suffix32=$(PyArchExt);
</DefineConstants> </DefineConstants>
<DefineConstants Condition="'$(CRTRedist)' != ''"> <DefineConstants Condition="'$(CRTRedist)' != ''">
$(DefineConstants);CRTRedist=$(CRTRedist); $(DefineConstants);CRTRedist=$(CRTRedist);
</DefineConstants> </DefineConstants>
<DefineConstants Condition="$(Platform) != 'x64'">
$(DefineConstants);Suffix32=-32;
</DefineConstants>
<DefineConstants Condition="$(Platform) == 'x64'">
$(DefineConstants);Suffix32=;
</DefineConstants>
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup> <ItemDefinitionGroup>
@ -134,10 +133,14 @@
<LinkerBindInputPaths Include="$(BuildPath64)"> <LinkerBindInputPaths Include="$(BuildPath64)">
<BindName>build64</BindName> <BindName>build64</BindName>
</LinkerBindInputPaths> </LinkerBindInputPaths>
<LinkerBindInputPaths Include="$(BuildPathARM64)">
<BindName>buildarm64</BindName>
</LinkerBindInputPaths>
</ItemGroup> </ItemGroup>
<Target Name="_ValidateMsiProps" BeforeTargets="PrepareForBuild"> <Target Name="_ValidateMsiProps" BeforeTargets="PrepareForBuild">
<Error Text="Platform '$(Platform)' is not supported. Use 'x86' or 'x64'." Condition="$(Platform) != 'x86' and $(Platform) != 'x64'" /> <Error Text="Platform '$(Platform)' is not supported. Use 'x86', 'x64' or 'ARM64'."
Condition="$(Platform) != 'x86' and $(Platform) != 'x64' and $(Platform) != 'ARM64'" />
</Target> </Target>
<ItemGroup> <ItemGroup>
@ -166,13 +169,16 @@
<Uri>registry/$(OutputName)</Uri> <Uri>registry/$(OutputName)</Uri>
</_Uuid> </_Uuid>
</ItemGroup> </ItemGroup>
<Target Name="_GenerateGuids" AfterTargets="PrepareForBuild" Condition="$(TargetName) != 'launcher'"> <Target Name="_GenerateGuids"
AfterTargets="PrepareForBuild"
DependsOnTargets="FindPythonForBuild"
Condition="$(TargetName) != 'launcher'">
<PropertyGroup> <PropertyGroup>
<_Uuids>@(_Uuid->'("%(Identity)", "$(MajorVersionNumber).$(MinorVersionNumber)/%(Uri)")',',')</_Uuids> <_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.Replace(`{arch}`, `$(ArchName)`))' + j)) for i,j in [$(_Uuids.Replace(`"`,`'`))]))</_GenerateCommand> <_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>
</PropertyGroup> </PropertyGroup>
<Exec Command='"$(PythonExe)" -c "$(_GenerateCommand)" &gt; "$(IntermediateOutputPath)$(OutputName)guids.txt"' <Exec Command='$(PythonForBuild) -c "$(_GenerateCommand)" &gt; "$(IntermediateOutputPath)$(OutputName)guids.txt"'
WorkingDirectory="$(MSBuildThisFileDirectory)" WorkingDirectory="$(MSBuildThisFileDirectory)"
IgnoreExitCode="false" /> IgnoreExitCode="false" />

View file

@ -1,7 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="ProcessInstallFiles" AfterTargets="PrepareForBuild" Condition="@(InstallFiles) != ''"> <Target Name="ProcessInstallFiles"
AfterTargets="PrepareForBuild"
DependsOnTargets="FindPythonForBuild"
Condition="@(InstallFiles) != ''">
<PropertyGroup> <PropertyGroup>
<_FileListTarget>$(IntermediateOutputPath)$(MSBuildProjectName).g.csv</_FileListTarget> <_FileListTarget>$(IntermediateOutputPath)$(MSBuildProjectName).g.csv</_FileListTarget>
<_InstallFilesTarget>$(IntermediateOutputPath)$(MSBuildProjectName).g.wxs</_InstallFilesTarget> <_InstallFilesTarget>$(IntermediateOutputPath)$(MSBuildProjectName).g.wxs</_InstallFilesTarget>
@ -17,7 +20,7 @@
</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" />
<Exec Command='"$(PythonExe)" csv_to_wxs.py "$(_FileListTarget)" "$(_InstallFilesTarget)"' <Exec Command='$(PythonForBuild) csv_to_wxs.py "$(_FileListTarget)" "$(_InstallFilesTarget)"'
WorkingDirectory="$(MSBuildThisFileDirectory)" /> WorkingDirectory="$(MSBuildThisFileDirectory)" />
<ItemGroup> <ItemGroup>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />
<PropertyRef Id="REGISTRYKEY" /> <PropertyRef Id="REGISTRYKEY" />

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />
<PropertyRef Id="REGISTRYKEY" /> <PropertyRef Id="REGISTRYKEY" />

View file

@ -65,9 +65,15 @@ PATHS = [
"python-{}-webinstall.exe".format(m.group(0)), "python-{}-webinstall.exe".format(m.group(0)),
"python-{}-amd64.exe".format(m.group(0)), "python-{}-amd64.exe".format(m.group(0)),
"python-{}-amd64-webinstall.exe".format(m.group(0)), "python-{}-amd64-webinstall.exe".format(m.group(0)),
"python-{}-arm64.exe".format(m.group(0)),
"python-{}-arm64-webinstall.exe".format(m.group(0)),
"python-{}-embed-amd64.zip".format(m.group(0)), "python-{}-embed-amd64.zip".format(m.group(0)),
"python-{}-embed-win32.zip".format(m.group(0)), "python-{}-embed-win32.zip".format(m.group(0)),
] + ["win32{}/{}".format(REL, f) for f in FILES] + ["amd64{}/{}".format(REL, f) for f in FILES] "python-{}-embed-arm64.zip".format(m.group(0)),
*["win32{}/{}".format(REL, f) for f in FILES],
*["amd64{}/{}".format(REL, f) for f in FILES],
*["arm64{}/{}".format(REL, f) for f in FILES],
]
PATHS = PATHS + [p + ".asc" for p in PATHS] PATHS = PATHS + [p + ".asc" for p in PATHS]
print('Purged:') print('Purged:')

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title_d)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title_d)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.TitlePdb)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.TitlePdb)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title_d)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title_d)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.TitlePdb)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.TitlePdb)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<PropertyRef Id="UpgradeTable" /> <PropertyRef Id="UpgradeTable" />

View file

@ -4,7 +4,7 @@
<PropertyGroup> <PropertyGroup>
<WixInstallPath Condition="'$(WixInstallPath)' == '' and Exists('$(MSBuildThisFileDirectory)\Wix')">$(MSBuildThisFileDirectory)\Wix\</WixInstallPath> <WixInstallPath Condition="'$(WixInstallPath)' == '' and Exists('$(MSBuildThisFileDirectory)\Wix')">$(MSBuildThisFileDirectory)\Wix\</WixInstallPath>
<WixInstallPath Condition="'$(WixInstallPath)' == '' and Exists('$(ExternalsDir)\windows-installer\wix')">$(ExternalsDir)\windows-installer\wix\</WixInstallPath> <WixInstallPath Condition="'$(WixInstallPath)' == '' and Exists('$(ExternalsDir)\windows-installer\wix-314')">$(ExternalsDir)\windows-installer\wix-314\</WixInstallPath>
<WixInstallPath Condition="'$(WixInstallPath)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Installer XML\3.10@InstallRoot)</WixInstallPath> <WixInstallPath Condition="'$(WixInstallPath)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Installer XML\3.10@InstallRoot)</WixInstallPath>
<WixInstallPath Condition="'$(WixInstallPath)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows Installer XML\3.10@InstallRoot)</WixInstallPath> <WixInstallPath Condition="'$(WixInstallPath)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows Installer XML\3.10@InstallRoot)</WixInstallPath>
<WixTargetsPath>$(WixInstallPath)\Wix.targets</WixTargetsPath> <WixTargetsPath>$(WixInstallPath)\Wix.targets</WixTargetsPath>