diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 4ebf4a5c0f..aae61a9678 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -173,6 +173,7 @@ jobs: # Windows x86 - template: /eng/jobs/windows-build.yml parameters: + buildFullPlatformManifest: true displayName: Build_Windows_x86 targetArchitecture: x86 diff --git a/dir.props b/dir.props index fa3183b4c3..c5b662f5ac 100644 --- a/dir.props +++ b/dir.props @@ -285,11 +285,14 @@ dotnet-host- dotnet-hostfxr- dotnet-runtime- + dotnet-targeting-pack- dotnet-runtime-deps- + $(AssetOutputPath)$(DotnetRuntimeString) $(AssetOutputPath)$(DotnetHostString) $(AssetOutputPath)$(DotnetHostFxrString) $(AssetOutputPath)$(DotnetRuntimeString) + $(AssetOutputPath)$(DotnetTargetingPackString) $(AssetOutputPath)$(DotnetRuntimeDependenciesPackageString) $(SharedHostInstallerStart)$(SharedFrameworkNugetVersion)-$(TargetArchitecture)$(InstallerExtension) $(HostFxrInstallerStart)$(HostResolverVersion)-$(TargetArchitecture)$(InstallerExtension) diff --git a/src/pkg/packaging/dir.props b/src/pkg/packaging/dir.props index 84e6270247..63f8f6ff51 100644 --- a/src/pkg/packaging/dir.props +++ b/src/pkg/packaging/dir.props @@ -8,10 +8,12 @@ false + $(IntermediateOutputRootPath)packages/ $(IntermediateOutputRootPath)sharedHost/ $(IntermediateOutputRootPath)hostFxr/ $(IntermediateOutputRootPath)sharedFx/ + $(IntermediateOutputRootPath)Microsoft.NETCore.App.Ref/layout/ $(IntermediateOutputRootPath)combined-framework-host/ @@ -28,6 +30,7 @@ $(ProductionVersion) $(ReleaseBrandSuffix) $(ProductBrandPrefix) Host - $(ProductBrandSuffix) $(ProductBrandPrefix) Host FX Resolver - $(ProductBrandSuffix) + $(ProductBrandPrefix) Targeting Pack - $(ProductBrandSuffix) $(ProductBrandPrefix) Runtime - $(ProductBrandSuffix) \ No newline at end of file diff --git a/src/pkg/packaging/windows/package.targets b/src/pkg/packaging/windows/package.targets index d70026c838..caf47610de 100644 --- a/src/pkg/packaging/windows/package.targets +++ b/src/pkg/packaging/windows/package.targets @@ -40,11 +40,15 @@ OverwriteDestination="false" /> - + - + + + + + @@ -60,6 +64,12 @@ $(HostFxrInstallerFile) $(HostFxrUpgradeCode) + + $(TargetingPackPublishRoot) + $(TargetingPackBrandName) + $(TargetingPackInstallerFile) + $(TargetingPackUpgradeCode) + $(SharedFrameworkPublishRoot) @@ -72,7 +82,7 @@ - + @@ -100,7 +110,7 @@ - + diff --git a/src/pkg/packaging/windows/targetingpack/generatemsi.ps1 b/src/pkg/packaging/windows/targetingpack/generatemsi.ps1 new file mode 100644 index 0000000000..18503ab0f4 --- /dev/null +++ b/src/pkg/packaging/windows/targetingpack/generatemsi.ps1 @@ -0,0 +1,161 @@ +# Copyright (c) .NET Foundation and contributors. All rights reserved. +# Licensed under the MIT license. See LICENSE file in the project root for full license information. + +param( + [Parameter(Mandatory=$true)][string]$TargetingPackPublishRoot, + [Parameter(Mandatory=$true)][string]$TargetingPackMSIOutput, + [Parameter(Mandatory=$true)][string]$WixRoot, + [Parameter(Mandatory=$true)][string]$ProductMoniker, + [Parameter(Mandatory=$true)][string]$TargetingPackMSIVersion, + [Parameter(Mandatory=$true)][string]$TargetingPackNugetVersion, + [Parameter(Mandatory=$true)][string]$Architecture, + [Parameter(Mandatory=$true)][string]$TargetArchitecture, + [Parameter(Mandatory=$true)][string]$WixObjRoot, + [Parameter(Mandatory=$true)][string]$TargetingPackUpgradeCode +) + +$RepoRoot = Convert-Path "$PSScriptRoot\..\..\..\..\.." +$CommonScript = "$RepoRoot\tools-local\scripts\common\_common.ps1" + +if(-Not (Test-Path "$CommonScript")) +{ + Exit -1 +} +. "$CommonScript" + +$PackagingRoot = Join-Path $RepoRoot "src\pkg\packaging" + +$InstallFileswsx = "$WixObjRoot\install-files.wxs" +$InstallFilesWixobj = "$WixObjRoot\install-files.wixobj" + +function RunHeat +{ + $Result = $true + pushd "$WixRoot" + + Write-Host Running heat.. to $InstallFileswsx + Write-Host "Root $TargetingPackPublishRoot" + + .\heat.exe dir `"$TargetingPackPublishRoot`" ` + -nologo ` + -template fragment ` + -sreg -gg ` + -var var.TargetingPackSrc ` + -cg InstallFiles ` + -srd ` + -dr DOTNETHOME ` + -out $InstallFileswsx | Out-Host + + if($LastExitCode -ne 0) + { + $Result = $false + Write-Host "Heat failed with exit code $LastExitCode." + } + + popd + return $Result +} + +function RunCandle +{ + $Result = $true + pushd "$WixRoot" + + Write-Host Running candle.. + $AuthWsxRoot = Join-Path $PackagingRoot "windows\targetingpack" + + $ComponentVersion = $TargetingPackNugetVersion.Replace('-', '_'); + + .\candle.exe -nologo ` + -out "$WixObjRoot\" ` + -dTargetingPackSrc="$TargetingPackPublishRoot" ` + -dMicrosoftEula="$PackagingRoot\windows\eula.rtf" ` + -dProductMoniker="$ProductMoniker" ` + -dBuildVersion="$TargetingPackMSIVersion" ` + -dNugetVersion="$TargetingPackNugetVersion" ` + -dComponentVersion="$ComponentVersion" ` + -dTargetArchitecture="$TargetArchitecture" ` + -dUpgradeCode="$TargetingPackUpgradeCode" ` + -arch $Architecture ` + -ext WixDependencyExtension.dll ` + "$AuthWsxRoot\targetingpack.wxs" ` + "$AuthWsxRoot\provider.wxs" ` + $InstallFileswsx | Out-Host + + if($LastExitCode -ne 0) + { + $Result = $false + Write-Host "Candle failed with exit code $LastExitCode." + } + + popd + return $Result +} + +function RunLight +{ + $Result = $true + pushd "$WixRoot" + + Write-Host Running light.. + + .\light.exe -nologo ` + -ext WixUIExtension.dll ` + -ext WixDependencyExtension.dll ` + -ext WixUtilExtension.dll ` + -cultures:en-us ` + "$WixObjRoot\targetingpack.wixobj" ` + "$WixObjRoot\provider.wixobj" ` + "$InstallFilesWixobj" ` + -out $TargetingPackMSIOutput | Out-Host + + if($LastExitCode -ne 0) + { + $Result = $false + Write-Host "Light failed with exit code $LastExitCode." + } + + popd + return $Result +} + +if(!(Test-Path $TargetingPackPublishRoot)) +{ + throw "$TargetingPackPublishRoot not found" +} + +if(!(Test-Path $WixObjRoot)) +{ + throw "$WixObjRoot not found" +} + +Write-Host "Creating Targeting Pack MSI at $TargetingPackMSIOutput" + +if([string]::IsNullOrEmpty($WixRoot)) +{ + Exit -1 +} + +if(-Not (RunHeat)) +{ + Exit -1 +} + +if(-Not (RunCandle)) +{ + Exit -1 +} + +if(-Not (RunLight)) +{ + Exit -1 +} + +if(!(Test-Path $TargetingPackMSIOutput)) +{ + throw "Unable to create the Targeting Pack MSI." +} + +Write-Host -ForegroundColor Green "Successfully created Targeting Pack MSI - $TargetingPackMSIOutput" + +exit $LastExitCode diff --git a/src/pkg/packaging/windows/targetingpack/provider.wxs b/src/pkg/packaging/windows/targetingpack/provider.wxs new file mode 100644 index 0000000000..7d4f51e61f --- /dev/null +++ b/src/pkg/packaging/windows/targetingpack/provider.wxs @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/pkg/packaging/windows/targetingpack/targetingpack.wxs b/src/pkg/packaging/windows/targetingpack/targetingpack.wxs new file mode 100644 index 0000000000..cde9e53623 --- /dev/null +++ b/src/pkg/packaging/windows/targetingpack/targetingpack.wxs @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/pkg/packaging/windows/targetingpack/variables.wxi b/src/pkg/packaging/windows/targetingpack/variables.wxi new file mode 100644 index 0000000000..5d3c17fb2e --- /dev/null +++ b/src/pkg/packaging/windows/targetingpack/variables.wxi @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/pkg/projects/Microsoft.NETCore.App.Ref/Microsoft.NETCore.App.Ref.pkgproj b/src/pkg/projects/Microsoft.NETCore.App.Ref/Microsoft.NETCore.App.Ref.pkgproj index 77a83fe0dd..f61dce028e 100644 --- a/src/pkg/projects/Microsoft.NETCore.App.Ref/Microsoft.NETCore.App.Ref.pkgproj +++ b/src/pkg/projects/Microsoft.NETCore.App.Ref/Microsoft.NETCore.App.Ref.pkgproj @@ -18,6 +18,9 @@ true false + + + $(IntermediateOutputPath)layout/ @@ -39,4 +42,35 @@ + + + + $(PackageOutputPath)$(Id).$(PackageVersion).nupkg + + + + + + + + + + + + + diff --git a/tools-local/tasks/GenerateGuidFromName.cs b/tools-local/tasks/GenerateGuidFromName.cs index 66e424650f..f64885cf50 100644 --- a/tools-local/tasks/GenerateGuidFromName.cs +++ b/tools-local/tasks/GenerateGuidFromName.cs @@ -12,8 +12,9 @@ public class GenerateGuidFromName : BuildTask { [Required] public string Name { get; set; } + [Output] - public string GeneratedGui { get; set; } + public string GeneratedGuid { get; set; } // Generate a Version 5 (SHA1 Name Based) Guid from a name. public override bool Execute() @@ -44,7 +45,7 @@ public override bool Execute() SwapGuidByteOrder(res); - GeneratedGui = (new Guid(res)).ToString(); + GeneratedGuid = (new Guid(res)).ToString(); } return true;