From dffc761374af57c53ed7f6e635b365974b732a5f Mon Sep 17 00:00:00 2001 From: Keith Mahoney <41657372+kmahone@users.noreply.github.com> Date: Fri, 8 Jul 2022 09:27:27 -0700 Subject: [PATCH] WinUI Vpack: Include re-merged winmd (#7179) --- build/CreateCBSVPack.ps1 | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/build/CreateCBSVPack.ps1 b/build/CreateCBSVPack.ps1 index aa8daf98d6..6f30d41d05 100644 --- a/build/CreateCBSVPack.ps1 +++ b/build/CreateCBSVPack.ps1 @@ -55,6 +55,23 @@ function Get-WebView2PackageVersion { return $webView2Version } +function RemergeWinMd([string] $winmdSourceFolder, [string] $winmdTargetFolder, [string] $winmdReferencesDir) +{ + Write-Host "re-merge Microsoft.UI.Xaml.winmd" + + New-Item -Path "$winmdTargetFolder" -ItemType Directory | Out-Null + + # We need to re-merge Microsoft.UI.Xaml.winmd against the OS internal metadata instead of against the metadata from the public sdk: + $mdMergeArgs = "-v -metadata_dir ""$winmdReferencesDir"" -o ""$winmdTargetFolder"" -i ""$winmdSourceFolder"" -partial -n:3 -createPublicMetadata -transformExperimental:transform" + Write-Host "mdmerge $mdMergeArgs" + Invoke-Expression "mdmerge $mdMergeArgs" | Out-Null + if($LASTEXITCODE) + { + Write-Error "mdmerge exited with error ($LASTEXITCODE)" + exit + } +} + if (-not (Test-Path "$releaseFolder")) { Write-Error "Not found folder $releaseFolder" @@ -74,7 +91,7 @@ if(!(Get-Command mdmerge -ErrorAction Ignore)) } $winuiVpackFolder = "$publishDir\WinUIVpack" $cbsFolder = "$publishDir\CBS" -$winmdFolder = "$cbsFolder\winmd" +$cbswinmdFolder = "$cbsFolder\winmd" $packagesDir = Join-Path $repoRoot "packages" $winmdReferencesDir = Join-Path $repoRoot "winmdreferences" @@ -98,7 +115,6 @@ if (Test-Path $winmdReferencesDir) New-Item -Path "$winuiVpackFolder" -ItemType Directory | Out-Null New-Item -Path "$cbsFolder" -ItemType Directory | Out-Null -New-Item -Path "$winmdFolder" -ItemType Directory | Out-Null New-Item -Path "$winmdReferencesDir" -ItemType Directory | Out-Null Write-Host "Copy OS publics to $winmdReferencesDir" @@ -126,7 +142,9 @@ foreach ($flavour in $buildFlavours) foreach ($flavour in $buildFlavours) { $sourceFolder = "$releaseFolder\$flavour\FrameworkPackage" + $winmdSourceFolder = "$releaseFolder\$flavour\Microsoft.UI.Xaml\sdk" $targetFolder = "$winuiVpackFolder\$flavour" + $winmdTargetFolder = "$winuiVpackFolder\winmd" New-Item -Path "$targetFolder" -ItemType Directory | Out-Null @@ -145,6 +163,11 @@ foreach ($flavour in $buildFlavours) Write-Verbose "Copy item from '$sourcePathFull' to '$destPathFull' " Copy-Item $sourcePathFull $destPathFull + + if ($flavour -ieq "X64") + { + RemergeWinMd $winmdSourceFolder $winmdTargetFolder $winmdReferencesDir + } } # Create CBS Vpacks: @@ -164,17 +187,7 @@ foreach ($flavour in $buildFlavours) if ($flavour -ieq "X64") { - Write-Host "re-merge Microsoft.UI.Xaml.winmd" - - # We need to re-merge Microsoft.UI.Xaml.winmd against the OS internal metadata instead of against the metadata from the public sdk: - $mdMergeArgs = "-v -metadata_dir ""$winmdReferencesDir"" -o ""$winmdFolder"" -i ""$targetFolder"" -partial -n:3 -createPublicMetadata -transformExperimental:transform" - Write-Host "mdmerge $mdMergeArgs" - Invoke-Expression "mdmerge $mdMergeArgs" | Out-Null - if($LASTEXITCODE) - { - Write-Error "mdmerge exited with error ($LASTEXITCODE)" - exit - } + RemergeWinMd $targetFolder $cbswinmdFolder $winmdReferencesDir } }