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;