Skip to content

Commit

Permalink
ARM64 bundled installer
Browse files Browse the repository at this point in the history
  • Loading branch information
hoyosjs committed Sep 11, 2020
1 parent 45ae2a0 commit 75de7b2
Show file tree
Hide file tree
Showing 9 changed files with 94 additions and 26 deletions.
2 changes: 1 addition & 1 deletion src/redist/targets/BundledTemplates.targets
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@

<Target Name="LayoutTemplatesFor50MSI"
DependsOnTargets="SetupBundledComponents;CalculateTemplatesVersions"
Condition="$(ProductMonikerRid.StartsWith('win')) And !$(Architecture.StartsWith('arm'))">
Condition="$(ProductMonikerRid.StartsWith('win')) And '$(Architecture)' != 'arm'">
<Copy SourceFiles="%(Bundled50Templates.RestoredNupkgPath)"
DestinationFolder="$(Templates50LayoutPath)templates/$(BundledTemplates50InstallPath)"/>
</Target>
Expand Down
19 changes: 10 additions & 9 deletions src/redist/targets/GenerateLayout.targets
Original file line number Diff line number Diff line change
Expand Up @@ -167,29 +167,30 @@
</BundledInstallerComponent>

<BundledInstallerComponent Include="DownloadedSharedFrameworkInstallerFile"
Condition="'$(SkipBuildingInstallers)' != 'true' And '$(InstallerExtension)' != '' And !$(Architecture.StartsWith('arm'))">
Condition="'$(SkipBuildingInstallers)' != 'true' And '$(InstallerExtension)' != '' And (!$(Architecture.StartsWith('arm')) or '$(Rid)' == 'win-arm64')">
<BaseUrl>$(CoreSetupRootUrl)$(CoreSetupBlobVersion)</BaseUrl>
<DownloadFileName>$(DownloadedSharedFrameworkInstallerFileName)</DownloadFileName>
</BundledInstallerComponent>

<BundledInstallerComponent Include="DownloadedSharedHostInstallerFile"
Condition="'$(SkipBuildingInstallers)' != 'true' And '$(InstallerExtension)' != '' And !$(Architecture.StartsWith('arm'))">
Condition="'$(SkipBuildingInstallers)' != 'true' And '$(InstallerExtension)' != '' And (!$(Architecture.StartsWith('arm')) or '$(Rid)' == 'win-arm64')">
<BaseUrl>$(CoreSetupRootUrl)$(CoreSetupBlobVersion)</BaseUrl>
<DownloadFileName>$(DownloadedSharedHostInstallerFileName)</DownloadFileName>
</BundledInstallerComponent>

<BundledInstallerComponent Include="DownloadedHostFxrInstallerFile"
Condition="'$(SkipBuildingInstallers)' != 'true' And '$(InstallerExtension)' != '' And !$(Architecture.StartsWith('arm'))">
Condition="'$(SkipBuildingInstallers)' != 'true' And '$(InstallerExtension)' != '' And (!$(Architecture.StartsWith('arm')) or '$(Rid)' == 'win-arm64')">
<BaseUrl>$(CoreSetupRootUrl)$(CoreSetupBlobVersion)</BaseUrl>
<DownloadFileName>$(DownloadedHostFxrInstallerFileName)</DownloadFileName>
</BundledInstallerComponent>

<BundledInstallerComponent Include="DownloadedNetCoreAppTargetingPackInstallerFile"
Condition="'$(SkipBuildingInstallers)' != 'true' And '$(InstallerExtension)' != '' And !$(Architecture.StartsWith('arm'))">
Condition="'$(SkipBuildingInstallers)' != 'true' And '$(InstallerExtension)' != '' And (!$(Architecture.StartsWith('arm')) or '$(Rid)' == 'win-arm64')">
<BaseUrl>$(CoreSetupRootUrl)$(NETCoreAppTargetingPackBlobVersion)</BaseUrl>
<DownloadFileName>$(DownloadedNetCoreAppTargetingPackInstallerFileName)</DownloadFileName>
</BundledInstallerComponent>

<!-- TODO: Should we somehow obtain a .NET Standard ARM64 package? -->
<BundledInstallerComponent Include="DownloadedNetStandardTargetingPackInstallerFile"
Condition="'$(SkipBuildingInstallers)' != 'true' And '$(InstallerExtension)' != '' And !$(Architecture.StartsWith('arm'))">
<BaseUrl>$(CoreSetupRootUrl)$(NETCoreAppTargetingPackBlobVersion)</BaseUrl>
Expand All @@ -198,7 +199,7 @@
</BundledInstallerComponent>

<BundledInstallerComponent Include="DownloadedNetCoreAppHostPackInstallerFile"
Condition="'$(SkipBuildingInstallers)' != 'true' And '$(InstallerExtension)' != '' And !$(Architecture.StartsWith('arm'))">
Condition="'$(SkipBuildingInstallers)' != 'true' And '$(InstallerExtension)' != '' And (!$(Architecture.StartsWith('arm')) or '$(Rid)' == 'win-arm64')">
<BaseUrl>$(CoreSetupRootUrl)$(CoreSetupBlobVersion)</BaseUrl>
<DownloadFileName>$(DownloadedNetCoreAppHostPackInstallerFileName)</DownloadFileName>
</BundledInstallerComponent>
Expand Down Expand Up @@ -251,19 +252,19 @@
</BundledLayoutComponent>

<BundledInstallerComponent Include="DownloadedAspNetTargetingPackInstallerFile"
Condition="'$(InstallerExtension)' != '.pkg' And '$(SkipBuildingInstallers)' != 'true' And '$(InstallerExtension)' != '' And !$(Architecture.StartsWith('arm'))">
Condition="'$(InstallerExtension)' != '.pkg' And '$(SkipBuildingInstallers)' != 'true' And '$(InstallerExtension)' != '' And (!$(Architecture.StartsWith('arm')) or '$(Rid)' == 'win-arm64')">
<BaseUrl>$(AspNetCoreSharedFxRootUrl)$(AspNetCoreTargetingPackBlobVersion)</BaseUrl>
<DownloadFileName>$(DownloadedAspNetTargetingPackInstallerFileName)</DownloadFileName>
</BundledInstallerComponent>

<BundledInstallerComponent Include="DownloadedAspNetCoreSharedFxInstallerFile"
Condition="'$(InstallerExtension)' != '.pkg' And '$(SkipBuildingInstallers)' != 'true' And '$(InstallerExtension)' != '' And !$(Architecture.StartsWith('arm'))">
Condition="'$(InstallerExtension)' != '.pkg' And '$(SkipBuildingInstallers)' != 'true' And '$(InstallerExtension)' != '' And (!$(Architecture.StartsWith('arm')) or '$(Rid)' == 'win-arm64')">
<BaseUrl>$(AspNetCoreSharedFxRootUrl)$(AspNetCoreBlobVersion)</BaseUrl>
<DownloadFileName>$(DownloadedAspNetCoreSharedFxInstallerFileName)</DownloadFileName>
</BundledInstallerComponent>

<BundledInstallerComponent Include="DownloadedAspNetCoreSharedFxWixLibFile"
Condition="'$(SkipBuildingInstallers)' != 'true' And '$(InstallerExtension)' == '.msi' And !$(Architecture.StartsWith('arm'))">
Condition="'$(SkipBuildingInstallers)' != 'true' And '$(InstallerExtension)' == '.msi' And (!$(Architecture.StartsWith('arm')) or '$(Rid)' == 'win-arm64')">
<BaseUrl>$(AspNetCoreSharedFxRootUrl)$(AspNetCoreBlobVersion)</BaseUrl>
<DownloadFileName>$(DownloadedAspNetCoreSharedFxWixLibFileName)</DownloadFileName>
</BundledInstallerComponent>
Expand All @@ -275,7 +276,7 @@
</BundledInstallerComponent>

<BundledInstallerComponent Include="AspNetCoreSharedFxBaseRuntimeVersionFile"
Condition="!$(Architecture.StartsWith('arm'))">
Condition="!$(Architecture.StartsWith('arm')) or '$(Rid)' == 'win-arm64'">
<BaseUrl>$(AspNetCoreSharedFxRootUrl)$(AspNetCoreBlobVersion)</BaseUrl>
<DownloadFileName>$(AspNetCoreSharedFxBaseRuntimeVersionFileName)</DownloadFileName>
</BundledInstallerComponent>
Expand Down
9 changes: 6 additions & 3 deletions src/redist/targets/GenerateMSIs.targets
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<Target Name="SetupWixProperties" DependsOnTargets="GetCurrentRuntimeInformation">
<!-- AcquireWix Properties -->
<PropertyGroup>
<WixVersion>3.10.4</WixVersion>
<WixVersion>3.14.0.4118</WixVersion>
<WixDownloadUrl>https://dotnetcli.azureedge.net/build/wix/wix.$(WixVersion).zip</WixDownloadUrl>
<WixRoot>$(ArtifactsDir)Tools/WixTools/$(WixVersion)</WixRoot>
<WixDestinationPath>$(WixRoot)/WixTools.$(WixVersion).zip</WixDestinationPath>
Expand Down Expand Up @@ -253,7 +253,7 @@

<Target Name="GenerateTemplatesMsis"
DependsOnTargets="GenerateLayout;AcquireWix;MsiTargetsSetupInputOutputs;SetSdkBrandingInfo;SetupTemplatesMsis"
Condition="$(ProductMonikerRid.StartsWith('win')) And !$(Architecture.StartsWith('arm'))"
Condition="$(ProductMonikerRid.StartsWith('win')) And '$(Architecture)' != 'arm'"
Inputs="@(TemplatesMsiComponent);$(TemplatesGenerateMsiPowershellScript)"
Outputs="%(TemplatesMsiComponent.MSIInstallerFile)">

Expand Down Expand Up @@ -306,6 +306,9 @@
<UpgradeCode>$(Templates50InstallerUpgradeCode)</UpgradeCode>
<DependencyKeyName>NetCore_Templates_5.0</DependencyKeyName>
</TemplatesMsiComponent>
</ItemGroup>

<ItemGroup Condition="!$(Architecture.StartsWith('arm'))">
<TemplatesMsiComponent Include="NetCore31TemplatesMsi">
<LayoutPath>$(Templates31LayoutPath.TrimEnd('\'))</LayoutPath>
<MSIInstallerFile>$(Templates31MSIInstallerFile)</MSIInstallerFile>
Expand Down Expand Up @@ -549,7 +552,7 @@
GenerateVSToolsNupkg;
GenerateVSToolsResolverNupkg;
GenerateSdkMSBuildExtensionsNupkg"
Condition=" '$(OS)' == 'Windows_NT' and !$(Architecture.StartsWith('arm')) " />
Condition=" '$(OS)' == 'Windows_NT' and '$(Architecture)' != 'arm' " />


</Project>
7 changes: 6 additions & 1 deletion src/redist/targets/Signing.targets
Original file line number Diff line number Diff line change
Expand Up @@ -183,10 +183,15 @@

<ItemGroup>
<TemplatesMsiFilesToSign Include="$(Templates50MSIInstallerFile)" />
</ItemGroup>

<ItemGroup Condition="!$(Architecture.StartsWith('arm'))">
<TemplatesMsiFilesToSign Include="$(Templates31MSIInstallerFile)" />
<TemplatesMsiFilesToSign Include="$(Templates30MSIInstallerFile)" />
<TemplatesMsiFilesToSign Include="$(Templates21MSIInstallerFile)" />

</ItemGroup>

<ItemGroup>
<TemplatesMsiFileSignInfo Include="@(TemplatesMsiFilesToSign->'%(Filename)%(Extension)')">
<CertificateName>$(InternalCertificateId)</CertificateName>
</TemplatesMsiFileSignInfo>
Expand Down
60 changes: 50 additions & 10 deletions src/redist/targets/packaging/windows/clisdk/bundle.wxs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@
WixBundleInstalled OR ((NOT (DOTNETHOME_X64 ~= DOTNETHOME_X86)) OR DOTNETHOMESIMILARITYCHECKOVERRIDE)
</bal:Condition>

<bal:Condition Message="The installation path for ARM64 SDK installations: &quot;[DOTNETHOME_ARM64]&quot; cannot be the same as for x86 SDK installations: &quot;[DOTNETHOME_X86]&quot;">
WixBundleInstalled OR ((NOT (DOTNETHOME_ARM64 ~= DOTNETHOME_X86)) OR DOTNETHOMESIMILARITYCHECKOVERRIDE)
</bal:Condition>

<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.Foundation">
<bal:WixStandardBootstrapperApplication
LicenseFile="dummyeula.rtf"
Expand All @@ -25,13 +29,13 @@

<swid:Tag Regid="microsoft.com" InstallPath="[DOTNETHOME]" />

<util:RegistrySearch Id="CheckDotnetInstallLocation_x86"
<util:RegistrySearch Id="CheckDotnetInstallLocation_x86"
Variable="DotnetInstallLocationExists_x86"
Result="exists"
Root="HKLM"
Key="SOFTWARE\dotnet\Setup\InstalledVersions\x86"
Value="InstallLocation" />
<util:RegistrySearch Id="DotnetInstallLocation_x86"
<util:RegistrySearch Id="DotnetInstallLocation_x86"
After="CheckDotnetInstallLocation_x86"
Condition="DotnetInstallLocationExists_x86"
Variable="DOTNETHOME_X86"
Expand All @@ -40,18 +44,19 @@
Key="SOFTWARE\dotnet\Setup\InstalledVersions\x86"
Value="InstallLocation" />

<util:FileSearch Id="DotnetExeSearch_x86"
<util:FileSearch Id="DotnetExeSearch_x86"
After="DotnetInstallLocation_x86"
Variable="DotnetExeExists_x86"
Condition="NOT DotnetInstallLocationExists_x86"
Result="exists"
Path="[ProgramFilesFolder]dotnet\dotnet.exe"/>
<util:DirectorySearch Id="DotnetExeLocation_x86"
<util:DirectorySearch Id="DotnetExeLocation_x86"
After="DotnetExeSearch_x86"
Condition="DotnetExeExists_x86"
Variable="DOTNETHOME_X86"
Path="[ProgramFilesFolder]dotnet"/>


<?if $(var.Platform)=x64?>
<util:RegistrySearch Id="CheckDotnetInstallLocation_x64"
Variable="DotnetInstallLocationExists_x64"
Result="exists"
Expand Down Expand Up @@ -79,6 +84,35 @@
Variable="DOTNETHOME_X64"
Path="[ProgramFiles64Folder]dotnet"/>

<?elseif $(var.Platform)=arm64?>
<util:RegistrySearch Id="CheckDotnetInstallLocation_arm64"
Variable="DotnetInstallLocationExists_arm64"
Result="exists"
Root="HKLM"
Key="SOFTWARE\dotnet\Setup\InstalledVersions\arm64"
Value="InstallLocation" />
<util:RegistrySearch Id="DotnetInstallLocation_arm64"
After="CheckDotnetInstallLocation_arm64"
Condition="DotnetInstallLocationExists_arm64"
Variable="DOTNETHOME_ARM64"
Result="value"
Root="HKLM"
Key="SOFTWARE\dotnet\Setup\InstalledVersions\arm64"
Value="InstallLocation" />

<util:FileSearch Id="DotnetExeSearch_arm64"
After="DotnetInstallLocation_arm64"
Variable="DotnetExeExists_arm64"
Condition="NOT DotnetInstallLocationExists_arm64"
Result="exists"
Path="[ProgramFiles64Folder]dotnet\dotnet.exe"/>
<util:DirectorySearch Id="DotnetExeLocation_arm64"
After="DotnetExeSearch_arm64"
Condition="DotnetExeExists_arm64"
Variable="DOTNETHOME_ARM64"
Path="[ProgramFiles64Folder]dotnet"/>
<?endif?>

<!--
When installing the SDK bundle to a custom location using the commandline parameters, it is intended, not mandatory, that
both "DOTNETHOME_X86" and "DOTNETHOME_X64" should be used on the commandline and should take this convention:
Expand All @@ -89,6 +123,7 @@
-->
<Variable Name="DOTNETHOME_X86" Type="string" Value="[ProgramFilesFolder]dotnet" bal:Overridable="yes" />
<Variable Name="DOTNETHOME_X64" Type="string" Value="[ProgramFiles64Folder]dotnet" bal:Overridable="yes" />
<Variable Name="DOTNETHOME_ARM64" Type="string" Value="[ProgramFiles64Folder]dotnet" bal:Overridable="yes" />
<Variable Name="DOTNETHOME" Type="string" Value="[DOTNETHOME_$(var.PlatformToken)]" bal:Overridable="no" />
<Variable Name="BUNDLEMONIKER" Type="string" Value="$(var.ProductMoniker)" bal:Overridable="no" />
<Variable Name="DOTNETSDKVERSION" Type="string" Value="$(var.NugetVersion)" bal:Overridable="no" />
Expand All @@ -107,15 +142,13 @@
<MsiPackage SourceFile="$(var.SharedHostMsiSourcePath)">
<MsiProperty Name="DOTNETHOME" Value="[DOTNETHOME]" />
</MsiPackage>
<MsiPackage SourceFile="$(var.WinFormsAndWpfMsiSourcePath)">
<MsiProperty Name="DOTNETHOME" Value="[DOTNETHOME]" />
</MsiPackage>
<MsiPackage SourceFile="$(var.NetCoreAppTargetingPackMsiSourcePath)">
<MsiProperty Name="DOTNETHOME" Value="[DOTNETHOME]" />
</MsiPackage>
<MsiPackage SourceFile="$(var.NetCoreAppHostPackMsiSourcePath)">
<MsiProperty Name="DOTNETHOME" Value="[DOTNETHOME]" />
</MsiPackage>
<?if $(var.Platform)=x86 or $(var.Platform)=x64?>
<MsiPackage SourceFile="$(var.AlternateNetCoreAppHostPackMsiSourcePath)">
<MsiProperty Name="DOTNETHOME" Value="[DOTNETHOME]" />
</MsiPackage>
Expand All @@ -128,12 +161,16 @@
<MsiPackage SourceFile="$(var.NetStandardTargetingPackMsiSourcePath)">
<MsiProperty Name="DOTNETHOME" Value="[DOTNETHOME]" />
</MsiPackage>
<MsiPackage SourceFile="$(var.AspNetTargetingPackMsiSourcePath)">
<MsiProperty Name="DOTNETHOME" Value="[DOTNETHOME]" />
<MsiPackage SourceFile="$(var.WinFormsAndWpfMsiSourcePath)">
<MsiProperty Name="DOTNETHOME" Value="[DOTNETHOME]" />
</MsiPackage>
<MsiPackage SourceFile="$(var.WindowsDesktopTargetingPackMsiSourcePath)">
<MsiProperty Name="DOTNETHOME" Value="[DOTNETHOME]" />
</MsiPackage>
<?endif?>
<MsiPackage SourceFile="$(var.AspNetTargetingPackMsiSourcePath)">
<MsiProperty Name="DOTNETHOME" Value="[DOTNETHOME]" />
</MsiPackage>
<MsiPackage SourceFile="$(var.TemplatesMsiSourcePath)">
<MsiProperty Name="DOTNETHOME" Value="[DOTNETHOME]" />
<MsiProperty Name="ALLOWMSIINSTALL" Value="True" />
Expand All @@ -142,13 +179,16 @@
<MsiProperty Name="DOTNETHOME" Value="[DOTNETHOME]" />
<MsiProperty Name="DOTNETHOME_X86" Value="[DOTNETHOME_X86]" />
<MsiProperty Name="DOTNETHOME_X64" Value="[DOTNETHOME_X64]" />
<MsiProperty Name="DOTNETHOME_ARM64" Value="[DOTNETHOME_ARM64]" />
<MsiProperty Name="EXEFULLPATH" Value="[WixBundleOriginalSource]" />
<MsiProperty Name="ALLOWMSIINSTALL" Value="True" />
</MsiPackage>
<?if $(var.Platform)=x86?>
<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>
Expand Down
2 changes: 1 addition & 1 deletion src/redist/targets/packaging/windows/clisdk/dotnet.wxs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?include "Variables.wxi" ?>
<Product Id="*" Name="$(var.ProductName)" Language="$(var.ProductLanguage)" Version="$(var.ProductVersion)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package Compressed="yes" InstallScope="perMachine" InstallerVersion="200" />
<Package Compressed="yes" InstallScope="perMachine" InstallerVersion="$(var.InstallerVersion)" />

<Condition Message="$(var.ProductName) must be installed as part of a coordinated SDK installation.">
Installed OR ALLOWMSIINSTALL
Expand Down
6 changes: 6 additions & 0 deletions src/redist/targets/packaging/windows/clisdk/registrykeys.wxs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@
<RegistryValue Action="write" Name="WpfWinformsTemplates" Type="integer" Value="1" KeyPath="yes"/>
</RegistryKey>
</Component>
<Component Id="DotnetInstallLocation_arm64" Directory="TARGETDIR" Win64="no">
<Condition>VersionNT64 AND DOTNETHOME_ARM64</Condition>
<RegistryKey Root="HKLM" Key="SOFTWARE\dotnet\Setup\InstalledVersions\arm64">
<RegistryValue Action="write" Name="InstallLocation" Type="string" Value="[DOTNETHOME_ARM64]" KeyPath="yes"/>
</RegistryKey>
</Component>
<Component Id="DotnetInstallLocation_x64" Directory="TARGETDIR" Win64="no">
<Condition>VersionNT64 AND DOTNETHOME_X64</Condition>
<RegistryKey Root="HKLM" Key="SOFTWARE\dotnet\Setup\InstalledVersions\x64">
Expand Down
2 changes: 1 addition & 1 deletion src/redist/targets/packaging/windows/clisdk/templates.wxs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?include "Variables.wxi" ?>
<Product Id="*" Name="$(var.ProductName)" Language="$(var.ProductLanguage)" Version="$(var.ProductVersion)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package Compressed="yes" InstallScope="perMachine" InstallerVersion="200" />
<Package Compressed="yes" InstallScope="perMachine" InstallerVersion="$(var.InstallerVersion)" />

<Condition Message="$(var.ProductName) must be installed as part of a coordinated SDK installation.">
Installed OR ALLOWMSIINSTALL
Expand Down
13 changes: 13 additions & 0 deletions src/redist/targets/packaging/windows/clisdk/variables.wxi
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,23 @@
<?define WixQuietExec="WixQuietExec64"?>
<?define Program_Files="ProgramFiles64Folder"?>
<?define Win64AttributeValue=yes?>
<?elseif $(var.Platform)=arm64?>
<?define PlatformToken="arm64"?>
<?define WixQuietExec="WixQuietExec64"?>
<?define Program_Files="ProgramFiles64Folder"?>
<?define Win64AttributeValue=yes?>
<?else?>
<?error Invalid Platform ($(var.Platform))?>
<?endif?>

<!-- See https://docs.microsoft.com/en-us/windows/win32/msi/using-64-bit-windows-installer-packages. -->
<!-- For 64-bit packages on the Arm64 platform, the Windows Installer database schema must be 500 or higher. -->
<?if $(var.Platform)=arm64?>
<?define InstallerVersion="500"?>
<?else?>
<?define InstallerVersion="200"?>
<?endif?>

<?define DependencyKey = "$(var.DependencyKeyName)_$(var.SDKBundleVersion)_$(var.Platform)"?>
<?define DependencyKeyId = "$(var.DependencyKey)" ?>
</Include>

0 comments on commit 75de7b2

Please sign in to comment.