diff options
author | Steve Dower <steve.dower@python.org> | 2022-01-28 16:48:06 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-28 16:48:06 (GMT) |
commit | 45faf151c693b6f13f78926761caea6df7242024 (patch) | |
tree | 8e45001c8431c55aba7a03015e8e449361b3d4c0 /Tools/msi | |
parent | db77bcd6092f3c174ae855522411ab83854d65a8 (diff) | |
download | cpython-45faf151c693b6f13f78926761caea6df7242024.zip cpython-45faf151c693b6f13f78926761caea6df7242024.tar.gz cpython-45faf151c693b6f13f78926761caea6df7242024.tar.bz2 |
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.
Diffstat (limited to 'Tools/msi')
38 files changed, 242 insertions, 95 deletions
diff --git a/Tools/msi/appendpath/appendpath.wxs b/Tools/msi/appendpath/appendpath.wxs index b972f61..e8d7a9d 100644 --- a/Tools/msi/appendpath/appendpath.wxs +++ b/Tools/msi/appendpath/appendpath.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <PropertyRef Id="UpgradeTable" /> <PropertyRef Id="REGISTRYKEY" /> diff --git a/Tools/msi/build.bat b/Tools/msi/build.bat index 532cebc..755c887 100644 --- a/Tools/msi/build.bat +++ b/Tools/msi/build.bat @@ -5,6 +5,7 @@ set PCBUILD=%D%..\..\PCbuild\ set BUILDX86= set BUILDX64= +set BUILDARM64= set BUILDDOC= set BUILDTEST= set BUILDPACK= @@ -14,22 +15,23 @@ set REBUILD= if "%~1" EQU "-h" goto Help if "%~1" EQU "-x86" (set BUILDX86=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 "--no-test-marker" (set BUILDTEST=) && 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 "-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 "%PCBUILD%find_msbuild.bat" %MSBUILD% if ERRORLEVEL 1 (echo Cannot locate MSBuild.exe on PATH or as MSBUILD variable & exit /b 2) 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 - call "%PCBUILD%build.bat" -e %REBUILD% %BUILDTEST% + call "%PCBUILD%build.bat" -p Win32 -e %REBUILD% %BUILDTEST% if errorlevel 1 goto :eof ) if defined BUILDX64 ( @@ -38,6 +40,12 @@ if defined BUILDX64 ( call "%PCBUILD%build.bat" -p x64 -e %REBUILD% %BUILDTEST% 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 ( call "%PCBUILD%..\Doc\make.bat" htmlhelp @@ -59,21 +67,26 @@ if defined REBUILD ( ) if defined BUILDX86 ( - %MSBUILD% %BUILD_CMD% + %MSBUILD% /p:Platform=x86 %BUILD_CMD% if errorlevel 1 goto :eof ) if defined BUILDX64 ( %MSBUILD% /p:Platform=x64 %BUILD_CMD% if errorlevel 1 goto :eof ) +if defined BUILDARM64 ( + %MSBUILD% /p:Platform=ARM64 %BUILD_CMD% + if errorlevel 1 goto :eof +) exit /B 0 :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 -x86 Build x86 installers echo -x64 Build x64 installers +echo -ARM64 Build ARM64 installers echo --doc Build CHM documentation echo --test-marker Build with test markers echo --no-test-marker Build without test markers (default) diff --git a/Tools/msi/buildrelease.bat b/Tools/msi/buildrelease.bat index 4fbaf2c..722298f 100644 --- a/Tools/msi/buildrelease.bat +++ b/Tools/msi/buildrelease.bat @@ -34,6 +34,7 @@ set EXTERNALS=%D%..\..\externals\windows-installer\ set BUILDX86= set BUILDX64= +set BUILDARM64= set TARGET=Rebuild set TESTTARGETDIR= 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 "-x86" (set BUILDX86=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 "--skip-pgo" (set PGO=) && 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 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%" echo Cannot find Git on PATH && exit /B 1 @@ -83,14 +85,6 @@ call "%D%..\..\doc\make.bat" htmlhelp if errorlevel 1 goto :eof :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 ( call :build x86 if errorlevel 1 exit /B @@ -101,6 +95,11 @@ if defined BUILDX64 ( if errorlevel 1 exit /B ) +if defined BUILDARM64 ( + call :build ARM64 + if errorlevel 1 exit /B +) + if defined TESTTARGETDIR ( call "%D%testrelease.bat" -t "%TESTTARGETDIR%" ) @@ -117,12 +116,21 @@ if "%1" EQU "x86" ( set BUILD_PLAT=Win32 set OUTDIR_PLAT=win32 set OBJDIR_PLAT=x86 -) else ( +) else if "%1" EQU "x64" ( set BUILD=%Py_OutDir%amd64\ set PGO=%~2 set BUILD_PLAT=x64 set OUTDIR_PLAT=amd64 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" ( @@ -179,18 +187,24 @@ set BUILDOPTS=/p:Platform=%1 /p:BuildForRelease=true /p:DownloadUrl=%DOWNLOAD_UR if defined BUILDMSI ( %MSBUILD% "%D%bundle\releaselocal.wixproj" /t:Rebuild %BUILDOPTS% %CERTOPTS% /p:RebuildAll=true 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 ( - %MSBUILD% "%D%make_zip.proj" /t:Build %BUILDOPTS% %CERTOPTS% /p:OutputPath="%BUILD%en-us" - if errorlevel 1 exit /B + if "%BUILD_PLAT%" EQU "ARM64" ( + 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 ( - %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 "%BUILD_PLAT%" EQU "ARM64" ( + 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 "" ( @@ -205,7 +219,7 @@ if not "%OUTDIR%" EQU "" ( exit /B 0 :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 [--download DOWNLOAD URL] [--test TARGETDIR] echo [-h] @@ -213,6 +227,7 @@ echo. echo --out (-o) Specify an additional output directory for installers echo -x86 Build x86 installers echo -x64 Build x64 installers +echo -arm64 Build ARM64 installers echo --build (-b) Incrementally build Python rather than rebuilding echo --skip-build (-B) Do not build Python (just do the installers) 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 use the default task (-m test --pgo). 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 Variable Description Example echo {version} version number 3.5.0 diff --git a/Tools/msi/bundle/Default.ARM64.xsl b/Tools/msi/bundle/Default.ARM64.xsl new file mode 100644 index 0000000..0dd1c9e --- /dev/null +++ b/Tools/msi/bundle/Default.ARM64.xsl @@ -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>
\ No newline at end of file diff --git a/Tools/msi/bundle/Default.thm b/Tools/msi/bundle/Default.thm index f5ba43d..d1b0f5b 100644 --- a/Tools/msi/bundle/Default.thm +++ b/Tools/msi/bundle/Default.thm @@ -52,16 +52,16 @@ <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"/> - <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> - <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> - <Checkbox Name="Include_tcltk" X="185" Y="151" Width="-11" Height="24" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.Include_tcltkLabel)</Checkbox> - <Text X="205" Y="176" Width="-11" Height="24" TabStop="no" FontId="5">#(loc.Include_tcltkHelpLabel)</Text> + <Checkbox Name="Include_tcltk" X="185" Y="151" Width="-11" Height="24" TabStop="yes" FontId="3" HideWhenDisabled="no">#(loc.Include_tcltkLabel)</Checkbox> + <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> <Checkbox Name="Include_launcher" X="185" Y="251" Width="100" Height="24" TabStop="yes" FontId="3" HideWhenDisabled="no">#(loc.Include_launcherLabel)</Checkbox> diff --git a/Tools/msi/bundle/Default.wxl b/Tools/msi/bundle/Default.wxl index 053306b..70fb467 100644 --- a/Tools/msi/bundle/Default.wxl +++ b/Tools/msi/bundle/Default.wxl @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization"> <String Id="Caption">[WixBundleName] Setup</String> - <String Id="Title">[WixBundleName]</String> <String Id="Installing">Installing</String> <String Id="Installation">Setup</String> <String Id="Modifying">Updating</String> diff --git a/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp b/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp index fdc2a21..226416f 100644 --- a/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp +++ b/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp @@ -1501,6 +1501,9 @@ private: hr = UpdateUIStrings(_command.action); BalExitOnFailure(hr, "Failed to load UI strings."); + hr = FindProgramFilesArm(); + BalExitOnFailure(hr, "Fatal error locating Program Files (Arm)"); + GetBundleFileVersion(); // don't fail if we couldn't get the version info; best-effort only LExit: @@ -2181,6 +2184,37 @@ private: 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. // diff --git a/Tools/msi/bundle/bootstrap/pythonba.vcxproj b/Tools/msi/bundle/bootstrap/pythonba.vcxproj index d90b5e3..bb383bf 100644 --- a/Tools/msi/bundle/bootstrap/pythonba.vcxproj +++ b/Tools/msi/bundle/bootstrap/pythonba.vcxproj @@ -21,11 +21,10 @@ <PropertyGroup Label="Globals"> <Configuration Condition="'$(Configuration)' == ''">Release</Configuration> <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 '$(VCTargetsPath14)' != ''">v140</PlatformToolset> - <PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(VCTargetsPath14)' != ''">v140</PlatformToolset> - <PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(VCTargetsPath12)' != ''">v120</PlatformToolset> + <PlatformToolset Condition="'$(PlatformToolset)' == ''">v140</PlatformToolset> <ProjectGuid>{7A09B132-B3EE-499B-A700-A4B2157FEA3D}</ProjectGuid> <TargetName>PythonBA</TargetName> </PropertyGroup> @@ -42,6 +41,7 @@ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <ItemDefinitionGroup> <ClCompile> + <PreprocessorDefinitions Condition="$(BuildForPlatform) == 'ARM64'">ARM64=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_CRT_STDIO_LEGACY_WIDE_SPECIFIERS=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(WixInstallPath)sdk\inc</AdditionalIncludeDirectories> <PrecompiledHeader>Use</PrecompiledHeader> @@ -50,8 +50,7 @@ </ClCompile> <Link> <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)' == 'v141'">$(WixInstallPath)sdk\vs2017\lib\x86</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories Condition="$(PlatformToolset.StartsWith(`v14`))">$(WixInstallPath)sdk\vs2017\lib\x86</AdditionalLibraryDirectories> <AdditionalLibraryDirectories Condition="'$(PlatformToolset)' == 'v140'">$(WixInstallPath)sdk\vs2015\lib\x86</AdditionalLibraryDirectories> <AdditionalLibraryDirectories Condition="'$(PlatformToolset)' == 'v120'">$(WixInstallPath)sdk\vs2013\lib\x86</AdditionalLibraryDirectories> <ModuleDefinitionFile>pythonba.def</ModuleDefinitionFile> diff --git a/Tools/msi/bundle/bundle.targets b/Tools/msi/bundle/bundle.targets index 5d8ae6c..4f4306f 100644 --- a/Tools/msi/bundle/bundle.targets +++ b/Tools/msi/bundle/bundle.targets @@ -3,25 +3,26 @@ <PropertyGroup> <SchemaVersion>2.0</SchemaVersion> <OutputType>Bundle</OutputType> - + <BootstrapConfiguration Condition="'$(BootstrapConfiguration)' == ''">Release</BootstrapConfiguration> <LinkerSuppressSpecificWarnings>1132;1135;1140</LinkerSuppressSpecificWarnings> <OutputName Condition="$(BuildForRelease)">$(OutputName)-$(PythonVersion)</OutputName> <OutputName Condition="!$(BuildForRelease)">$(OutputName)-$(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber).$(RevisionNumber)</OutputName> <OutputName Condition="$(Platform) == 'x64'">$(OutputName)-amd64</OutputName> + <OutputName Condition="$(Platform) == 'ARM64'">$(OutputName)-arm64</OutputName> <OutputName Condition="'$(OutputSuffix)' != ''">$(OutputName)-$(OutputSuffix)</OutputName> <OutputName Condition="'$(Configuration)' == 'Debug'">$(OutputName)-d</OutputName> <TargetName>$(OutputName)</TargetName> <OutputPath>$(OutputPath)en-us\</OutputPath> <OutDir>$(OutputPath)</OutDir> - + <!-- See Tools/msi/buildrelease.bat for help on configuring the download URL --> <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={2}</DefineConstants> </PropertyGroup> - + <ItemGroup> <WixExtension Include="WixUtilExtension"> <HintPath>WixUtilExtension</HintPath> @@ -42,7 +43,6 @@ </ItemGroup> <ItemGroup> <Content Include="Default.thm" /> - <Content Include="Default.wxl" /> <Content Include="SideBar.png" /> </ItemGroup> <ItemGroup> @@ -54,7 +54,7 @@ <BindName></BindName> </LinkerBindInputPaths> </ItemGroup> - + <ItemDefinitionGroup> <Package> <Properties>BuildForRelease=$(BuildForRelease)</Properties> @@ -69,40 +69,61 @@ <Package Include="..\path\path*.wixproj" /> <Package Include="..\appendpath\appendpath*.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="..\tools\tools*.wixproj" /> - <Package Include="..\ucrt\ucrt*.wixproj" /> + <Package Include="..\ucrt\ucrt*.wixproj" Condition="$(Platform) != 'ARM64'" /> </ItemGroup> - + <PropertyGroup> <BuildPackagesTargets>Build</BuildPackagesTargets> </PropertyGroup> - + <Target Name="_SetRebuildTarget" BeforeTargets="BeforeRebuild"> <PropertyGroup> <BuildPackagesTargets>Rebuild</BuildPackagesTargets> </PropertyGroup> </Target> - + <Target Name="BuildPackages" BeforeTargets="BeforeBuild" Condition="'$(RebuildAll)' != 'false'"> <MSBuild Projects="@(Package)" Targets="$(BuildPackagesTargets)" BuildInParallel="true" /> </Target> - + <Target Name="BuildBootstrapApplication" BeforeTargets="BeforeBuild"> <Message Text="Building bootstrap app" Importance="high" /> - + <MSBuild Projects="bootstrap\pythonba.vcxproj" Targets="Build;GetNativeTargetPath" UseResultsCache="true" - Properties="Configuration=$(BootstrapConfiguration);Platform=Win32"> + Properties="Configuration=$(BootstrapConfiguration);Platform=Win32;BuildForPlatform=$(Platform)"> <Output TaskParameter="TargetOutputs" PropertyName="BootstrapAppPath" /> </MSBuild> - + <PropertyGroup> <DefineConstants>$(DefineConstants);BootstrapApp=$(BootstrapAppPath)</DefineConstants> </PropertyGroup> </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" /> </Project> diff --git a/Tools/msi/bundle/bundle.wxs b/Tools/msi/bundle/bundle.wxs index a145d84..5c9fd6d 100644 --- a/Tools/msi/bundle/bundle.wxs +++ b/Tools/msi/bundle/bundle.wxs @@ -12,7 +12,7 @@ dep:ProviderKey="CPython-$(var.MajorVersionNumber).$(var.MinorVersionNumber)$(var.PyArchExt)$(var.PyTestExt)"> <BootstrapperApplication Id="PythonBA" SourceFile="$(var.BootstrapApp)"> <Payload Compressed='yes' SourceFile='Default.thm' /> - <Payload Compressed='yes' SourceFile='Default.wxl' /> + <Payload Compressed='yes' SourceFile='$(var.DefaultWxl)' /> <Payload Compressed='yes' SourceFile='SideBar.png' /> </BootstrapperApplication> @@ -26,6 +26,9 @@ <Variable Name="WinVer" 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" /> <?if "$(var.PyTestExt)"="" ?> <Variable Name="InstallLauncherAllUsers" Value="1" bal:Overridable="yes" /> @@ -36,6 +39,9 @@ <?if $(var.Platform)~="x64" ?> <Variable Name="DefaultAllUsersTargetDir" Value="[ProgramFiles64Folder]Python[WinVerNoDot]" bal:Overridable="yes" /> <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 ?> <Variable Name="DefaultAllUsersTargetDir" Value="[ProgramFilesFolder]Python[WinVerNoDot]" bal:Overridable="yes" /> <Variable Name="TargetPlatform" Value="x86" /> @@ -43,7 +49,7 @@ <Variable Name="DefaultJustForMeTargetDir" Value="[LocalAppDataFolder]Programs\Python\Python[WinVerNoDot]" bal:Overridable="yes" /> <Variable Name="OptionalFeaturesRegistryKey" Value="Software\Python\PythonCore\[WinVer]\InstalledFeatures" /> <Variable Name="TargetDirRegistryKey" Value="Software\Python\PythonCore\[WinVer]\InstallPath" /> - + <!-- An empty string will use the other defaults based on InstallAllUsers (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="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" /> <?else ?> <Variable Name="InstallLauncherAllUsersState" Value="disable" bal:Overridable="yes" /> @@ -69,32 +77,44 @@ <Variable Name="Include_test" Value="1" bal:Overridable="yes" /> <Variable Name="Include_doc" 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" /> + <?endif ?> <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" /> <?if "$(var.PyTestExt)"="" ?> <Variable Name="Include_launcherState" Value="enabled" bal:Overridable="yes" /> <?else ?> <Variable Name="Include_launcherState" Value="disable" /> <?endif ?> + <?endif ?> <Variable Name="Include_symbols" Value="0" bal:Overridable="yes" /> <Variable Name="Include_debug" Value="0" bal:Overridable="yes" /> - + <Variable Name="LauncherOnly" Value="0" bal:Overridable="yes" /> <Variable Name="DetectedLauncher" Value="0" /> <Variable Name="DetectedOldLauncher" Value="0" /> - + <Variable Name="AssociateFiles" Value="1" bal:Overridable="yes" /> <Variable Name="Shortcuts" Value="1" bal:Overridable="yes" /> <Variable Name="PrependPath" Value="0" bal:Overridable="yes" /> <Variable Name="AppendPath" Value="0" bal:Overridable="yes" /> <Variable Name="CompileAll" Value="0" bal:Overridable="yes" /> - + <Variable Name="SimpleInstall" Value="0" bal:Overridable="yes" /> <Variable Name="SimpleInstallDescription" Value="" bal:Overridable="yes" /> - + <Chain ParallelCache="yes"> + <?if $(var.Platform)!="ARM64" ?> <PackageGroupRef Id="crt" /> + <?endif ?> <PackageGroupRef Id="core" /> <PackageGroupRef Id="dev" /> <PackageGroupRef Id="exe" /> @@ -102,8 +122,10 @@ <PackageGroupRef Id="test" /> <PackageGroupRef Id="doc" /> <PackageGroupRef Id="tools" /> + <?if $(var.Platform)!="ARM64" ?> <PackageGroupRef Id="tcltk" /> <PackageGroupRef Id="launcher" /> + <?endif ?> <PackageGroupRef Id="pip" /> <PackageGroupRef Id="packageinstall" /> <PackageGroupRef Id="postinstall" /> diff --git a/Tools/msi/core/core.wxs b/Tools/msi/core/core.wxs index 0d4fbde..21a8bcd 100644 --- a/Tools/msi/core/core.wxs +++ b/Tools/msi/core/core.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <PropertyRef Id="UpgradeTable" /> diff --git a/Tools/msi/core/core_d.wxs b/Tools/msi/core/core_d.wxs index 07e0397..1cee097 100644 --- a/Tools/msi/core/core_d.wxs +++ b/Tools/msi/core/core_d.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <PropertyRef Id="UpgradeTable" /> diff --git a/Tools/msi/core/core_pdb.wxs b/Tools/msi/core/core_pdb.wxs index c2c3178..1fe7d1e 100644 --- a/Tools/msi/core/core_pdb.wxs +++ b/Tools/msi/core/core_pdb.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <PropertyRef Id="UpgradeTable" /> diff --git a/Tools/msi/dev/dev.wxs b/Tools/msi/dev/dev.wxs index 23a710d..cfc4c44 100644 --- a/Tools/msi/dev/dev.wxs +++ b/Tools/msi/dev/dev.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <PropertyRef Id="UpgradeTable" /> diff --git a/Tools/msi/dev/dev_d.wxs b/Tools/msi/dev/dev_d.wxs index c467aac..20bf9ee 100644 --- a/Tools/msi/dev/dev_d.wxs +++ b/Tools/msi/dev/dev_d.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <PropertyRef Id="UpgradeTable" /> diff --git a/Tools/msi/doc/doc.wxs b/Tools/msi/doc/doc.wxs index cd1a68c..d05936f 100644 --- a/Tools/msi/doc/doc.wxs +++ b/Tools/msi/doc/doc.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <PropertyRef Id="UpgradeTable" /> diff --git a/Tools/msi/exe/exe.wxs b/Tools/msi/exe/exe.wxs index 98d31b3..05a8d77 100644 --- a/Tools/msi/exe/exe.wxs +++ b/Tools/msi/exe/exe.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <PropertyRef Id="UpgradeTable" /> diff --git a/Tools/msi/exe/exe_d.wxs b/Tools/msi/exe/exe_d.wxs index eedb6bb..3b327bc 100644 --- a/Tools/msi/exe/exe_d.wxs +++ b/Tools/msi/exe/exe_d.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <PropertyRef Id="UpgradeTable" /> diff --git a/Tools/msi/exe/exe_pdb.wxs b/Tools/msi/exe/exe_pdb.wxs index f25094f..f706cf3 100644 --- a/Tools/msi/exe/exe_pdb.wxs +++ b/Tools/msi/exe/exe_pdb.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <PropertyRef Id="UpgradeTable" /> diff --git a/Tools/msi/get_externals.bat b/Tools/msi/get_externals.bat index d66781d..f6602ce 100644 --- a/Tools/msi/get_externals.bat +++ b/Tools/msi/get_externals.bat @@ -56,7 +56,7 @@ set binaries=%binaries% gpg set binaries=%binaries% htmlhelp set binaries=%binaries% nuget set binaries=%binaries% redist-1 -set binaries=%binaries% wix +set binaries=%binaries% wix-314 for %%b in (%binaries%) do ( if exist "%EXTERNALS_DIR%\%%b" ( diff --git a/Tools/msi/launcher/launcher.wxs b/Tools/msi/launcher/launcher.wxs index 7de131a..d001fe5 100644 --- a/Tools/msi/launcher/launcher.wxs +++ b/Tools/msi/launcher/launcher.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <Property Id="Suppress_TARGETDIR_Check" Value="1" /> diff --git a/Tools/msi/lib/lib.wxs b/Tools/msi/lib/lib.wxs index 2a3b9ec..5c67420 100644 --- a/Tools/msi/lib/lib.wxs +++ b/Tools/msi/lib/lib.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <PropertyRef Id="UpgradeTable" /> diff --git a/Tools/msi/lib/lib_d.wxs b/Tools/msi/lib/lib_d.wxs index 8a8a530..7968d17 100644 --- a/Tools/msi/lib/lib_d.wxs +++ b/Tools/msi/lib/lib_d.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <PropertyRef Id="UpgradeTable" /> diff --git a/Tools/msi/lib/lib_pdb.wxs b/Tools/msi/lib/lib_pdb.wxs index 8839e8a..7918893 100644 --- a/Tools/msi/lib/lib_pdb.wxs +++ b/Tools/msi/lib/lib_pdb.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <PropertyRef Id="UpgradeTable" /> diff --git a/Tools/msi/msi.props b/Tools/msi/msi.props index cb9221f..b5fd3d3 100644 --- a/Tools/msi/msi.props +++ b/Tools/msi/msi.props @@ -12,9 +12,11 @@ <Platform Condition="'$(Platform)' == ''">x86</Platform> <InstallScope Condition="'$(InstallScope)' != 'perMachine'">perUser</InstallScope> <_MakeCatCommand Condition="'$(_MakeCatCommand)' == ''">makecat</_MakeCatCommand> + <SkipCopySSLDLL>true</SkipCopySSLDLL> </PropertyGroup> <Import Project="wix.props" /> + <Import Project="..\..\PCbuild\openssl.props" /> <Import Project="..\..\PCbuild\tcltk.props" /> <PropertyGroup> @@ -71,8 +73,10 @@ <PropertyGroup> <Bitness>32-bit</Bitness> <Bitness Condition="$(Platform) == 'x64'">64-bit</Bitness> + <Bitness Condition="$(Platform) == 'ARM64'">ARM64</Bitness> <PlatformArchitecture>32bit</PlatformArchitecture> <PlatformArchitecture Condition="$(Platform) == 'x64'">64bit</PlatformArchitecture> + <PlatformArchitecture Condition="$(Platform) == 'ARM64'">ARM64</PlatformArchitecture> <DefineConstants> $(DefineConstants); Version=$(InstallerVersion); @@ -88,17 +92,12 @@ PyArchExt=$(PyArchExt); PyTestExt=$(PyTestExt); OptionalFeatureName=$(OutputName); - ssltag=-1_1; + ssltag=$(OpenSSLDLLSuffix); + Suffix32=$(PyArchExt); </DefineConstants> <DefineConstants Condition="'$(CRTRedist)' != ''"> $(DefineConstants);CRTRedist=$(CRTRedist); </DefineConstants> - <DefineConstants Condition="$(Platform) != 'x64'"> - $(DefineConstants);Suffix32=-32; - </DefineConstants> - <DefineConstants Condition="$(Platform) == 'x64'"> - $(DefineConstants);Suffix32=; - </DefineConstants> </PropertyGroup> <ItemDefinitionGroup> @@ -134,10 +133,14 @@ <LinkerBindInputPaths Include="$(BuildPath64)"> <BindName>build64</BindName> </LinkerBindInputPaths> + <LinkerBindInputPaths Include="$(BuildPathARM64)"> + <BindName>buildarm64</BindName> + </LinkerBindInputPaths> </ItemGroup> <Target Name="_ValidateMsiProps" BeforeTargets="PrepareForBuild"> - <Error Text="Platform '$(Platform)' is not supported. Use 'x86' or 'x64'." Condition="$(Platform) != 'x86' and $(Platform) != 'x64'" /> + <Error Text="Platform '$(Platform)' is not supported. Use 'x86', 'x64' or 'ARM64'." + Condition="$(Platform) != 'x86' and $(Platform) != 'x64' and $(Platform) != 'ARM64'" /> </Target> <ItemGroup> @@ -166,13 +169,16 @@ <Uri>registry/$(OutputName)</Uri> </_Uuid> </ItemGroup> - <Target Name="_GenerateGuids" AfterTargets="PrepareForBuild" Condition="$(TargetName) != 'launcher'"> + <Target Name="_GenerateGuids" + AfterTargets="PrepareForBuild" + DependsOnTargets="FindPythonForBuild" + Condition="$(TargetName) != 'launcher'"> <PropertyGroup> <_Uuids>@(_Uuid->'("%(Identity)", "$(MajorVersionNumber).$(MinorVersionNumber)/%(Uri)")',',')</_Uuids> <_GenerateCommand>import uuid; print('\n'.join('{}={}'.format(i, uuid.uuid5(uuid.UUID('c8d9733e-a70c-43ff-ab0c-e26456f11083'), '$(ReleaseUri.Replace(`{arch}`, `$(ArchName)`))' + j)) for i,j in [$(_Uuids.Replace(`"`,`'`))]))</_GenerateCommand> </PropertyGroup> - <Exec Command='"$(PythonExe)" -c "$(_GenerateCommand)" > "$(IntermediateOutputPath)$(OutputName)guids.txt"' + <Exec Command='$(PythonForBuild) -c "$(_GenerateCommand)" > "$(IntermediateOutputPath)$(OutputName)guids.txt"' WorkingDirectory="$(MSBuildThisFileDirectory)" IgnoreExitCode="false" /> diff --git a/Tools/msi/msi.targets b/Tools/msi/msi.targets index 4788a63..99d1de4 100644 --- a/Tools/msi/msi.targets +++ b/Tools/msi/msi.targets @@ -1,7 +1,10 @@ <?xml version="1.0" encoding="utf-8"?> <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> <_FileListTarget>$(IntermediateOutputPath)$(MSBuildProjectName).g.csv</_FileListTarget> <_InstallFilesTarget>$(IntermediateOutputPath)$(MSBuildProjectName).g.wxs</_InstallFilesTarget> @@ -17,7 +20,7 @@ </ItemGroup> <WriteLinesToFile File="$(_FileListTarget)" Lines="@(InstallFiles->'"%(_Source)","%(_Target)","%(Group)","%(DiskId)","%(Condition)"')" Overwrite="true" /> - <Exec Command='"$(PythonExe)" csv_to_wxs.py "$(_FileListTarget)" "$(_InstallFilesTarget)"' + <Exec Command='$(PythonForBuild) csv_to_wxs.py "$(_FileListTarget)" "$(_InstallFilesTarget)"' WorkingDirectory="$(MSBuildThisFileDirectory)" /> <ItemGroup> diff --git a/Tools/msi/path/path.wxs b/Tools/msi/path/path.wxs index 8b37936..496f9d0 100644 --- a/Tools/msi/path/path.wxs +++ b/Tools/msi/path/path.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <PropertyRef Id="UpgradeTable" /> <PropertyRef Id="REGISTRYKEY" /> diff --git a/Tools/msi/pip/pip.wxs b/Tools/msi/pip/pip.wxs index 19e9f5f..1d8083c 100644 --- a/Tools/msi/pip/pip.wxs +++ b/Tools/msi/pip/pip.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <PropertyRef Id="UpgradeTable" /> <PropertyRef Id="REGISTRYKEY" /> diff --git a/Tools/msi/purge.py b/Tools/msi/purge.py index 41be069..de9fdc9 100644 --- a/Tools/msi/purge.py +++ b/Tools/msi/purge.py @@ -65,9 +65,15 @@ PATHS = [ "python-{}-webinstall.exe".format(m.group(0)), "python-{}-amd64.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-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] print('Purged:') diff --git a/Tools/msi/tcltk/tcltk.wxs b/Tools/msi/tcltk/tcltk.wxs index eeae8e8..fdd6da3 100644 --- a/Tools/msi/tcltk/tcltk.wxs +++ b/Tools/msi/tcltk/tcltk.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <PropertyRef Id="UpgradeTable" /> diff --git a/Tools/msi/tcltk/tcltk_d.wxs b/Tools/msi/tcltk/tcltk_d.wxs index 391b3af..38aacd9 100644 --- a/Tools/msi/tcltk/tcltk_d.wxs +++ b/Tools/msi/tcltk/tcltk_d.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <PropertyRef Id="UpgradeTable" /> diff --git a/Tools/msi/tcltk/tcltk_pdb.wxs b/Tools/msi/tcltk/tcltk_pdb.wxs index 04454f3..55f2091 100644 --- a/Tools/msi/tcltk/tcltk_pdb.wxs +++ b/Tools/msi/tcltk/tcltk_pdb.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <PropertyRef Id="UpgradeTable" /> diff --git a/Tools/msi/test/test.wxs b/Tools/msi/test/test.wxs index f2ed64f..bf601f4 100644 --- a/Tools/msi/test/test.wxs +++ b/Tools/msi/test/test.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <PropertyRef Id="UpgradeTable" /> diff --git a/Tools/msi/test/test_d.wxs b/Tools/msi/test/test_d.wxs index a954876..9b26ff6 100644 --- a/Tools/msi/test/test_d.wxs +++ b/Tools/msi/test/test_d.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <PropertyRef Id="UpgradeTable" /> diff --git a/Tools/msi/test/test_pdb.wxs b/Tools/msi/test/test_pdb.wxs index de634a3..5a2ef36 100644 --- a/Tools/msi/test/test_pdb.wxs +++ b/Tools/msi/test/test_pdb.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <PropertyRef Id="UpgradeTable" /> diff --git a/Tools/msi/tools/tools.wxs b/Tools/msi/tools/tools.wxs index 7a805d0..bb6436c 100644 --- a/Tools/msi/tools/tools.wxs +++ b/Tools/msi/tools/tools.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <PropertyRef Id="UpgradeTable" /> diff --git a/Tools/msi/ucrt/ucrt.wxs b/Tools/msi/ucrt/ucrt.wxs index 76e5682..525130c 100644 --- a/Tools/msi/ucrt/ucrt.wxs +++ b/Tools/msi/ucrt/ucrt.wxs @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <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)"> - <Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" /> + <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> <PropertyRef Id="UpgradeTable" /> diff --git a/Tools/msi/wix.props b/Tools/msi/wix.props index 7269d34..d8ced31 100644 --- a/Tools/msi/wix.props +++ b/Tools/msi/wix.props @@ -4,7 +4,7 @@ <PropertyGroup> <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\Wow6432Node\Microsoft\Windows Installer XML\3.10@InstallRoot)</WixInstallPath> <WixTargetsPath>$(WixInstallPath)\Wix.targets</WixTargetsPath> |