Enable ARM64 installers build. (#25579)
Changes WiX toolset used to 3.14 to support ARM64 Generates targeting pack from the x86/x64 leg, as it gets produced using a zip that gets generated there. The ARM64 leg now produces all the necessary msi's, exe, and wixlib needed for the installer to generate a bundle.
This commit is contained in:
parent
31fcc8bd26
commit
dda1d33f7b
|
|
@ -51,6 +51,8 @@ variables:
|
|||
/p:DotNetPublishUsingPipelines=$(_PublishUsingPipelines)
|
||||
/p:DotNetArtifactsCategory=$(_DotNetArtifactsCategory)
|
||||
# Do not log most Windows steps in official builds; this is the slowest job. Site extensions step always logs.
|
||||
- name: WindowsArm64LogArgs
|
||||
value: -ExcludeCIBinaryLog
|
||||
- name: Windows64LogArgs
|
||||
value: -ExcludeCIBinaryLog
|
||||
- name: Windows86LogArgs
|
||||
|
|
@ -59,12 +61,16 @@ variables:
|
|||
value: -ExcludeCIBinaryLog
|
||||
- name: WindowsInstallersLogArgs
|
||||
value: -ExcludeCIBinaryLog
|
||||
- name: WindowsArm64InstallersLogArgs
|
||||
value: -ExcludeCIBinaryLog
|
||||
- ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- name: _BuildArgs
|
||||
value: '/p:SkipTestBuild=true'
|
||||
- name: _PublishArgs
|
||||
value: ''
|
||||
# Write binary logs for all main Windows build steps except the x86 one in public and PR builds.
|
||||
- name: WindowsArm64LogArgs
|
||||
value: /bl:artifacts/log/Release/Build.arm64.binlog
|
||||
- name: Windows64LogArgs
|
||||
value: /bl:artifacts/log/Release/Build.x64.binlog
|
||||
- name: Windows86LogArgs
|
||||
|
|
@ -73,6 +79,8 @@ variables:
|
|||
value: /bl:artifacts/log/Release/Build.CodeSign.binlog
|
||||
- name: WindowsInstallersLogArgs
|
||||
value: /bl:artifacts/log/Release/Build.Installers.binlog
|
||||
- name: WindowsArm64InstallersLogArgs
|
||||
value: /bl:artifacts/log/Release/Build.Installers.Arm64.binlog
|
||||
- ${{ if ne(variables['System.TeamProject'], 'internal') }}:
|
||||
- name: _UseHelixOpenQueues
|
||||
value: 'true'
|
||||
|
|
@ -263,18 +271,6 @@ stages:
|
|||
jobName: Windows_arm64_build
|
||||
jobDisplayName: "Build: Windows ARM64"
|
||||
agentOs: Windows
|
||||
buildArgs:
|
||||
-arch arm64
|
||||
-sign
|
||||
-pack
|
||||
-noBuildNodeJS
|
||||
-noBuildJava
|
||||
/p:DotNetSignType=$(_SignType)
|
||||
/p:OnlyPackPlatformSpecificPackages=true
|
||||
/p:AssetManifestFileName=aspnetcore-win-arm64.xml
|
||||
$(_BuildArgs)
|
||||
$(_PublishArgs)
|
||||
$(_InternalRuntimeDownloadArgs)
|
||||
installNodeJs: false
|
||||
installJdk: false
|
||||
artifacts:
|
||||
|
|
@ -286,6 +282,47 @@ stages:
|
|||
path: artifacts/packages/
|
||||
- name: Windows_arm64_Installers
|
||||
path: artifacts/installers/
|
||||
steps:
|
||||
- script: ./build.cmd
|
||||
-ci
|
||||
-arch arm64
|
||||
-sign
|
||||
-pack
|
||||
-noBuildJava
|
||||
-noBuildNative
|
||||
/p:DotNetSignType=$(_SignType)
|
||||
/p:OnlyPackPlatformSpecificPackages=true
|
||||
$(_BuildArgs)
|
||||
$(_InternalRuntimeDownloadArgs)
|
||||
$(WindowsArm64LogArgs)
|
||||
displayName: Build ARM64
|
||||
|
||||
# Windows installers bundle for arm64
|
||||
- script: ./build.cmd
|
||||
-ci
|
||||
-noBuildRepoTasks
|
||||
-arch arm64
|
||||
-sign
|
||||
-buildInstallers
|
||||
-noBuildNative
|
||||
/p:DotNetSignType=$(_SignType)
|
||||
/p:AssetManifestFileName=aspnetcore-win-arm64.xml
|
||||
$(_BuildArgs)
|
||||
$(_PublishArgs)
|
||||
$(_InternalRuntimeDownloadArgs)
|
||||
$(WindowsArm64InstallersLogArgs)
|
||||
displayName: Build Arm64 Installers
|
||||
|
||||
# A few files must also go to the VS package feed.
|
||||
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- task: NuGetCommand@2
|
||||
displayName: Push Visual Studio packages
|
||||
inputs:
|
||||
command: push
|
||||
packagesToPush: 'artifacts/packages/**/VS.Redist.Common.AspNetCore.*.nupkg'
|
||||
nuGetFeedType: external
|
||||
publishFeedCredentials: 'DevDiv - VS package feed'
|
||||
|
||||
|
||||
# Build MacOS
|
||||
- template: jobs/default-build.yml
|
||||
|
|
|
|||
|
|
@ -296,12 +296,11 @@ if ($BuildNodeJS) { $dotnetBuildArguments += "/p:BuildNodeJS=true" }
|
|||
# Don't bother with two builds if just one will build everything. Ignore super-weird cases like
|
||||
# "-Projects ... -NoBuildJava -NoBuildManaged -NoBuildNodeJS". An empty `./build.ps1` command will build both
|
||||
# managed and native projects.
|
||||
$performDesktopBuild = ($BuildInstallers -or $BuildNative) -and `
|
||||
-not $Architecture.StartsWith("arm", [System.StringComparison]::OrdinalIgnoreCase)
|
||||
$performDesktopBuild = ($BuildInstallers -and $Architecture -ne "arm") -or `
|
||||
($BuildNative -and -not $Architecture.StartsWith("arm", [System.StringComparison]::OrdinalIgnoreCase))
|
||||
$performDotnetBuild = $BuildJava -or $BuildManaged -or $BuildNodeJS -or `
|
||||
($All -and -not ($NoBuildJava -and $NoBuildManaged -and $NoBuildNodeJS)) -or `
|
||||
($Projects -and -not ($BuildInstallers -or $specifiedBuildNative))
|
||||
|
||||
$foundJdk = $false
|
||||
$javac = Get-Command javac -ErrorAction Ignore -CommandType Application
|
||||
$localJdkPath = "$PSScriptRoot\.tools\jdk\win-x64\"
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@
|
|||
</ItemGroup>
|
||||
</When>
|
||||
<Otherwise>
|
||||
<ItemGroup Condition=" '$(BuildInstallers)' == 'true' AND '$(TargetOsName)' == 'win' ">
|
||||
<ItemGroup Condition=" '$(BuildInstallers)' == 'true' AND '$(TargetOsName)' == 'win' AND ('$(TargetArchitecture)' == 'x86' OR '$(TargetArchitecture)' == 'x64') ">
|
||||
<!-- Build the ANCM custom action -->
|
||||
<ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\AspNetCoreModule-Setup\CustomAction\aspnetcoreCA.vcxproj" AdditionalProperties="Platform=x64" />
|
||||
<ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\AspNetCoreModule-Setup\CustomAction\aspnetcoreCA.vcxproj" AdditionalProperties="Platform=Win32" />
|
||||
|
|
@ -64,6 +64,10 @@
|
|||
<!-- Build the targeting pack installers -->
|
||||
<ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\TargetingPack\TargetingPack.wixproj" AdditionalProperties="Platform=x64" />
|
||||
<ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\TargetingPack\TargetingPack.wixproj" AdditionalProperties="Platform=x86" />
|
||||
<!-- This really shouldn't be here, but instead of harvesting from the intermediate/output directories, the targetting pack installer logic
|
||||
harvests from a zip of the reference assemblies. Producing it in each leg ends up with multiple targeting packs
|
||||
getting produced and the BAR will reject the build. Centralize building the targeting pack in the x86/x64 leg. -->
|
||||
<ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\TargetingPack\TargetingPack.wixproj" AdditionalProperties="Platform=arm64" />
|
||||
|
||||
<!-- Build the SharedFramework installers -->
|
||||
<ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\SharedFrameworkBundle\SharedFrameworkBundle.wixproj" AdditionalProperties="Platform=x64" />
|
||||
|
|
@ -77,6 +81,14 @@
|
|||
<ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\WindowsHostingBundle\WindowsHostingBundle.wixproj" AdditionalProperties="Platform=x86" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition=" '$(BuildInstallers)' == 'true' AND '$(TargetOsName)' == 'win' AND '$(TargetArchitecture)' == 'arm64' ">
|
||||
<!-- We don't build the bundle here because we'd have to bundle the x86 installer which gets built in a different leg.
|
||||
Instead we only provide the ARM64 MSI-->
|
||||
|
||||
<!-- Build the SharedFramework wixlib -->
|
||||
<ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\SharedFrameworkLib\SharedFrameworkLib.wixproj" AdditionalProperties="Platform=arm64" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(BuildInstallers)' == 'true' AND '$(TargetRuntimeIdentifier)' == 'linux-x64'">
|
||||
<ProjectToBuild Condition=" '$(LinuxInstallerType)' == 'deb' "
|
||||
Include="$(RepoRoot)src\Installers\Debian\**\*.*proj" />
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
|
||||
<PropertyGroup>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProductVersion>3.11</ProductVersion>
|
||||
<WixVersion>3.11.1</WixVersion>
|
||||
<ProductVersion>3.14</ProductVersion>
|
||||
<WixVersion>3.14.0-dotnet</WixVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<Product Id="$(var.ProductCode)" Name="$(var.ProductName)" Language="1033" Version="$(var.Version)"
|
||||
Manufacturer="Microsoft Corporation" UpgradeCode="$(var.UpgradeCode)">
|
||||
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
|
||||
<Package InstallerVersion="$(var.InstallerVersion)" Compressed="yes" InstallScope="perMachine" />
|
||||
|
||||
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." Schedule="afterInstallFinalize" />
|
||||
<Media Id="1" Cabinet="$(var.Cabinet)" CompressionLevel="high" EmbedCab="$(var.EmbedCab)" />
|
||||
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
<?if $(var.Platform)=x86?>
|
||||
<?define PFilesFolder=ProgramFilesFolder?>
|
||||
<?elseif $(var.Platform)=x64?>
|
||||
<?elseif $(var.Platform)=x64 or $(var.Platform)=arm64?>
|
||||
<?define PFilesFolder=ProgramFiles64Folder?>
|
||||
<?else?>
|
||||
<?error Invalid Platform ($(var.Platform))?>
|
||||
|
|
|
|||
|
|
@ -61,12 +61,16 @@
|
|||
<!-- TODO: https://github.com/dotnet/aspnetcore/issues/6304. Harvest shared frameworks from a project reference -->
|
||||
<Target Name="ExtractIntermediateSharedFx" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<SharedFrameworkArm64HarvestRootPath Condition="'$(SharedFrameworkArm64HarvestRootPath)' == ''">$(InstallersOutputPath)</SharedFrameworkArm64HarvestRootPath>
|
||||
<SharedFrameworkX64HarvestRootPath Condition="'$(SharedFrameworkX64HarvestRootPath)' == ''">$(InstallersOutputPath)</SharedFrameworkX64HarvestRootPath>
|
||||
<SharedFrameworkX86HarvestRootPath Condition="'$(SharedFrameworkX86HarvestRootPath)' == ''">$(InstallersOutputPath)</SharedFrameworkX86HarvestRootPath>
|
||||
<IntermediateArm64SharedFxZip>$(SharedFrameworkArm64HarvestRootPath)aspnetcore-runtime-internal-$(PackageVersion)-win-arm64.zip</IntermediateArm64SharedFxZip>
|
||||
<IntermediateX64SharedFxZip>$(SharedFrameworkX64HarvestRootPath)aspnetcore-runtime-internal-$(PackageVersion)-win-x64.zip</IntermediateX64SharedFxZip>
|
||||
<IntermediateX86SharedFxZip>$(SharedFrameworkX86HarvestRootPath)aspnetcore-runtime-internal-$(PackageVersion)-win-x86.zip</IntermediateX86SharedFxZip>
|
||||
</PropertyGroup>
|
||||
|
||||
<Unzip Condition="'$(Platform)' == 'arm64'"
|
||||
SourceFiles="$(IntermediateArm64SharedFxZip)" DestinationFolder="$(HarvestSource)" />
|
||||
<Unzip Condition="'$(Platform)' == 'x64'"
|
||||
SourceFiles="$(IntermediateX64SharedFxZip)" DestinationFolder="$(HarvestSource)" />
|
||||
<Unzip Condition="'$(Platform)' == 'x86'"
|
||||
|
|
|
|||
|
|
@ -43,6 +43,8 @@
|
|||
<PackageGroupRef Id="PG_AspNetCoreSharedFramework_x86"/>
|
||||
<?elseif $(var.Platform)=x64?>
|
||||
<PackageGroupRef Id="PG_AspNetCoreSharedFramework_x64"/>
|
||||
<?elseif $(var.Platform)=arm64?>
|
||||
<PackageGroupRef Id="PG_AspNetCoreSharedFramework_arm64"/>
|
||||
<?endif?>
|
||||
</Chain>
|
||||
</Bundle>
|
||||
|
|
|
|||
|
|
@ -29,20 +29,35 @@
|
|||
<Content Include="thm.xml" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\SharedFrameworkLib\SharedFrameworkLib.wixproj" SetPlatform="Platform=x86">
|
||||
<Name>SharedFrameworkLib</Name>
|
||||
<Project>{5244BC49-2568-4701-80A6-EAB8950AB5FA}</Project>
|
||||
<Private>True</Private>
|
||||
<DoNotHarvest>True</DoNotHarvest>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\SharedFrameworkLib\SharedFrameworkLib.wixproj" SetPlatform="Platform=x64">
|
||||
<Name>SharedFrameworkLib</Name>
|
||||
<Project>{5244BC49-2568-4701-80A6-EAB8950AB5FA}</Project>
|
||||
<Private>True</Private>
|
||||
<DoNotHarvest>True</DoNotHarvest>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Choose>
|
||||
<When Condition="'$(Platform)' == 'arm64'">
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\SharedFrameworkLib\SharedFrameworkLib.wixproj" SetPlatform="Platform=arm64">
|
||||
<Name>SharedFrameworkLib</Name>
|
||||
<Project>{5244BC49-2568-4701-80A6-EAB8950AB5FA}</Project>
|
||||
<Private>True</Private>
|
||||
<DoNotHarvest>True</DoNotHarvest>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
<Otherwise>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\SharedFrameworkLib\SharedFrameworkLib.wixproj" SetPlatform="Platform=x86">
|
||||
<Name>SharedFrameworkLib</Name>
|
||||
<Project>{5244BC49-2568-4701-80A6-EAB8950AB5FA}</Project>
|
||||
<Private>True</Private>
|
||||
<DoNotHarvest>True</DoNotHarvest>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\SharedFrameworkLib\SharedFrameworkLib.wixproj" SetPlatform="Platform=x64">
|
||||
<Name>SharedFrameworkLib</Name>
|
||||
<Project>{5244BC49-2568-4701-80A6-EAB8950AB5FA}</Project>
|
||||
<Private>True</Private>
|
||||
<DoNotHarvest>True</DoNotHarvest>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
</Otherwise>
|
||||
</Choose>
|
||||
|
||||
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.targets))\Directory.Build.targets" />
|
||||
|
||||
|
|
|
|||
|
|
@ -16,6 +16,9 @@
|
|||
<?elseif $(var.Platform)=x64?>
|
||||
<?define SharedFrameworkInstallCondition=VersionNT64 AND (NOT OPT_NO_SHAREDFX)?>
|
||||
<?define DotNetHome=DOTNETHOME_X64?>
|
||||
<?elseif $(var.Platform)=arm64?>
|
||||
<?define SharedFrameworkInstallCondition=VersionNT64 AND (NOT OPT_NO_SHAREDFX)?>
|
||||
<?define DotNetHome=DOTNETHOME_ARM64?>
|
||||
<?endif?>
|
||||
|
||||
<MsiPackage Id="AspNetCoreSharedFramework_$(var.Platform)"
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<Product Id="$(var.ProductCode)" Name="$(var.ProductName)" Language="1033" Version="$(var.Version)"
|
||||
Manufacturer="Microsoft Corporation" UpgradeCode="$(var.UpgradeCode)">
|
||||
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
|
||||
<Package InstallerVersion="$(var.InstallerVersion)" Compressed="yes" InstallScope="perMachine" />
|
||||
|
||||
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." Schedule="afterInstallFinalize" />
|
||||
<Media Id="1" Cabinet="$(var.Cabinet)" CompressionLevel="high" EmbedCab="$(var.EmbedCab)" />
|
||||
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
<?if $(var.Platform)=x86?>
|
||||
<?define PFilesFolder=ProgramFilesFolder?>
|
||||
<?elseif $(var.Platform)=x64?>
|
||||
<?elseif $(var.Platform)=x64 or $(var.Platform)=arm64?>
|
||||
<?define PFilesFolder=ProgramFiles64Folder?>
|
||||
<?else?>
|
||||
<?error Invalid Platform ($(var.Platform))?>
|
||||
|
|
|
|||
|
|
@ -8,6 +8,11 @@
|
|||
<_FileRevisionVersion Condition=" '$(_FileRevisionVersion)' == '' ">42424</_FileRevisionVersion>
|
||||
<BundleVersion>$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion).$(AspNetCorePatchVersion).$(_FileRevisionVersion)</BundleVersion>
|
||||
|
||||
<!-- ARM64 MSIs require the installer version to be at least 500. -->
|
||||
<!-- See: https://docs.microsoft.com/en-us/windows/win32/msi/64-bit-windows-installer-packages -->
|
||||
<DefineConstants Condition=" '$(Platform)' == 'arm64' ">$(DefineConstants);InstallerVersion=500</DefineConstants>
|
||||
<DefineConstants Condition=" '$(Platform)' != 'arm64' ">$(DefineConstants);InstallerVersion=200</DefineConstants>
|
||||
|
||||
<DefineConstants>$(DefineConstants);MajorVersion=$(AspNetCoreMajorVersion)</DefineConstants>
|
||||
<DefineConstants>$(DefineConstants);MinorVersion=$(AspNetCoreMinorVersion)</DefineConstants>
|
||||
<DefineConstants>$(DefineConstants);Version=$(Version)</DefineConstants>
|
||||
|
|
|
|||
Loading…
Reference in New Issue