diff --git a/NuGet.config b/NuGet.config index 226fcd23c..c6dfa67b0 100644 --- a/NuGet.config +++ b/NuGet.config @@ -15,6 +15,8 @@ + + diff --git a/eng/Versions.props b/eng/Versions.props index f33b39270..33fa1c88c 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -144,6 +144,10 @@ 2.0.0 16.10.0-preview-20210304-04 + + 11.2.0-ci.d16-9.0 + 6.0.0-preview.3.21161.5 + 2.0.1-servicing-26011-01 diff --git a/src/redist/redist.csproj b/src/redist/redist.csproj index b9c93ddf5..e9c30d1da 100644 --- a/src/redist/redist.csproj +++ b/src/redist/redist.csproj @@ -31,6 +31,7 @@ + diff --git a/src/redist/targets/BundledManifests.targets b/src/redist/targets/BundledManifests.targets new file mode 100644 index 000000000..e87265be4 --- /dev/null +++ b/src/redist/targets/BundledManifests.targets @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(ArtifactsNonShippingPackagesDir)dotnet-sdkmanifests-$(FullNugetVersion)-$(ProductMonikerRid)$(InstallerExtension) + SDK_Manifests_$([System.String]::Copy('$(Version)').Replace('-', '_')) + Microsoft .NET SDK Workload Manifests $(Version) + $(BaseOutputPath)$(Configuration)\sdk-manifests + + + + + + + + + + + + + $(NuGetPackageRoot)%(Identity)/%(Version) + + + + + + + diff --git a/src/redist/targets/GenerateLayout.targets b/src/redist/targets/GenerateLayout.targets index 302efe16c..6ba43cc96 100644 --- a/src/redist/targets/GenerateLayout.targets +++ b/src/redist/targets/GenerateLayout.targets @@ -501,6 +501,7 @@ GenerateBundledVersions; LayoutRuntimeGraph; LayoutTemplates; + LayoutManifests; LayoutBundledTools; RetargetTools; CrossgenLayout; diff --git a/src/redist/targets/GenerateMSIs.targets b/src/redist/targets/GenerateMSIs.targets index a1365b5db..0c69a4db7 100644 --- a/src/redist/targets/GenerateMSIs.targets +++ b/src/redist/targets/GenerateMSIs.targets @@ -97,6 +97,7 @@ + + + + + $(MSBuildThisFileDirectory)packaging/windows/clisdk/generatemanifestsmsi.ps1 + + + + + + + + + + + + + + + + + + diff --git a/src/redist/targets/packaging/windows/clisdk/generatebundle.ps1 b/src/redist/targets/packaging/windows/clisdk/generatebundle.ps1 index d4eb57dfa..58bbdde7a 100644 --- a/src/redist/targets/packaging/windows/clisdk/generatebundle.ps1 +++ b/src/redist/targets/packaging/windows/clisdk/generatebundle.ps1 @@ -17,6 +17,7 @@ param( [Parameter(Mandatory=$true)][string]$AspNetTargetingPackMSIFile, [Parameter(Mandatory=$true)][string]$WindowsDesktopTargetingPackMSIFile, [Parameter(Mandatory=$true)][string]$TemplatesMSIFile, + [Parameter(Mandatory=$true)][string]$ManifestsMSIFile, [Parameter(Mandatory=$true)][string]$DotnetBundleOutput, [Parameter(Mandatory=$true)][string]$WixRoot, [Parameter(Mandatory=$true)][string]$ProductMoniker, @@ -63,6 +64,7 @@ function RunCandleForBundle -dAspNetTargetingPackMsiSourcePath="$AspNetTargetingPackMSIFile" ` -dWindowsDesktopTargetingPackMsiSourcePath="$WindowsDesktopTargetingPackMSIFile" ` -dTemplatesMsiSourcePath="$TemplatesMSIFile" ` + -dManifestsMsiSourcePath="$ManifestsMSIFile" ` -dWinFormsAndWpfVersion="$WindowsDesktopVersion" ` -dAdditionalSharedFXMsiSourcePath="$AdditionalSharedFxMSIFile" ` -dAdditionalHostFXRMsiSourcePath="$AdditionalHostFxrMSIFile" ` diff --git a/src/redist/targets/packaging/windows/clisdk/generatemanifestsmsi.ps1 b/src/redist/targets/packaging/windows/clisdk/generatemanifestsmsi.ps1 new file mode 100644 index 000000000..4ef97e1dc --- /dev/null +++ b/src/redist/targets/packaging/windows/clisdk/generatemanifestsmsi.ps1 @@ -0,0 +1,151 @@ +# 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]$inputDir, + [Parameter(Mandatory=$true)][string]$DotnetMSIOutput, + [Parameter(Mandatory=$true)][string]$WixRoot, + [Parameter(Mandatory=$true)][string]$ProductMoniker, + [Parameter(Mandatory=$true)][string]$DotnetMSIVersion, + [Parameter(Mandatory=$true)][string]$SDKBundleVersion, + [Parameter(Mandatory=$true)][string]$DotnetCLINugetVersion, + [Parameter(Mandatory=$true)][string]$UpgradeCode, + [Parameter(Mandatory=$true)][string]$DependencyKeyName, + [Parameter(Mandatory=$true)][string]$Architecture +) + +$InstallFileswsx = ".\manifest-install-files.wxs" +$InstallFilesWixobj = "manifest-install-files.wixobj" + +function RunHeat +{ + $result = $true + pushd "$WixRoot" + + Write-Information "Running heat.." + + $heatOutput = .\heat.exe dir `"$inputDir`" -template fragment ` + -sreg -ag ` + -var var.DotnetSrc ` + -cg InstallFiles ` + -srd ` + -dr DOTNETHOME ` + -out manifest-install-files.wxs + + Write-Information "Heat output: $heatOutput" + + if($LastExitCode -ne 0) + { + $result = $false + Write-Information "Heat failed with exit code $LastExitCode." + } + + popd + Write-Information "RunHeat result: $result" + return $result +} + +function RunCandle +{ + $result = $true + pushd "$WixRoot" + + Write-Information "Running candle.." + + $candleOutput = .\candle.exe -nologo ` + -dDotnetSrc="$inputDir" ` + -dMicrosoftEula="$PSScriptRoot\dummyeula.rtf" ` + -dProductMoniker="$ProductMoniker" ` + -dBuildVersion="$DotnetMSIVersion" ` + -dSDKBundleVersion="$SDKBundleVersion" ` + -dNugetVersion="$DotnetCLINugetVersion" ` + -dUpgradeCode="$UpgradeCode" ` + -dDependencyKeyName="$DependencyKeyName" ` + -arch "$Architecture" ` + -ext WixDependencyExtension.dll ` + "$PSScriptRoot\manifests.wxs" ` + "$PSScriptRoot\provider.wxs" ` + $InstallFileswsx + + Write-Information "Candle output: $candleOutput" + + if($LastExitCode -ne 0) + { + $result = $false + Write-Information "Candle failed with exit code $LastExitCode." + } + + popd + return $result +} + +function RunLight +{ + $result = $true + pushd "$WixRoot" + + Write-Information "Running light.." + $CabCache = Join-Path $WixRoot "cabcache" + + $lightOutput = .\light.exe -nologo -ext WixUIExtension -ext WixDependencyExtension -ext WixUtilExtension ` + -cultures:en-us ` + manifests.wixobj ` + provider.wixobj ` + $InstallFilesWixobj ` + -b "$inputDir" ` + -b "$PSScriptRoot" ` + -reusecab ` + -cc "$CabCache" ` + -out $DotnetMSIOutput + + Write-Information "Light output: $lightOutput" + + if($LastExitCode -ne 0) + { + $result = $false + Write-Information "Light failed with exit code $LastExitCode." + } + + popd + return $result +} + +if(!(Test-Path $inputDir)) +{ + throw "$inputDir not found" +} + +Write-Information "Creating manifests MSI at $DotnetMSIOutput" + +if([string]::IsNullOrEmpty($WixRoot)) +{ + Exit -1 +} + +if(-Not (RunHeat)) +{ + Write-Information "Heat failed" + Exit -1 +} + +if(-Not (RunCandle)) +{ + Write-Information "Candle failed" + Exit -1 +} + +if(-Not (RunLight)) +{ + Write-Information "Light failed" + Exit -1 +} + +if(!(Test-Path $DotnetMSIOutput)) +{ + throw "Unable to create the manifests MSI." + Exit -1 +} + +Write-Information "Successfully created manifests MSI - $DotnetMSIOutput" + +exit $LastExitCode diff --git a/src/redist/targets/packaging/windows/clisdk/manifests.wxs b/src/redist/targets/packaging/windows/clisdk/manifests.wxs new file mode 100644 index 000000000..a2ef49c4b --- /dev/null +++ b/src/redist/targets/packaging/windows/clisdk/manifests.wxs @@ -0,0 +1,36 @@ + + + + + + + + Installed OR ALLOWMSIINSTALL + + + + + + + + + + + + + + + + + + + + + + + + + + + +