Skip to content

Commit dffc761

Browse files
authored
WinUI Vpack: Include re-merged winmd (#7179)
1 parent eaf0cba commit dffc761

File tree

1 file changed

+26
-13
lines changed

1 file changed

+26
-13
lines changed

build/CreateCBSVPack.ps1

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,23 @@ function Get-WebView2PackageVersion {
5555
return $webView2Version
5656
}
5757

58+
function RemergeWinMd([string] $winmdSourceFolder, [string] $winmdTargetFolder, [string] $winmdReferencesDir)
59+
{
60+
Write-Host "re-merge Microsoft.UI.Xaml.winmd"
61+
62+
New-Item -Path "$winmdTargetFolder" -ItemType Directory | Out-Null
63+
64+
# We need to re-merge Microsoft.UI.Xaml.winmd against the OS internal metadata instead of against the metadata from the public sdk:
65+
$mdMergeArgs = "-v -metadata_dir ""$winmdReferencesDir"" -o ""$winmdTargetFolder"" -i ""$winmdSourceFolder"" -partial -n:3 -createPublicMetadata -transformExperimental:transform"
66+
Write-Host "mdmerge $mdMergeArgs"
67+
Invoke-Expression "mdmerge $mdMergeArgs" | Out-Null
68+
if($LASTEXITCODE)
69+
{
70+
Write-Error "mdmerge exited with error ($LASTEXITCODE)"
71+
exit
72+
}
73+
}
74+
5875
if (-not (Test-Path "$releaseFolder"))
5976
{
6077
Write-Error "Not found folder $releaseFolder"
@@ -74,7 +91,7 @@ if(!(Get-Command mdmerge -ErrorAction Ignore))
7491
}
7592
$winuiVpackFolder = "$publishDir\WinUIVpack"
7693
$cbsFolder = "$publishDir\CBS"
77-
$winmdFolder = "$cbsFolder\winmd"
94+
$cbswinmdFolder = "$cbsFolder\winmd"
7895
$packagesDir = Join-Path $repoRoot "packages"
7996
$winmdReferencesDir = Join-Path $repoRoot "winmdreferences"
8097

@@ -98,7 +115,6 @@ if (Test-Path $winmdReferencesDir)
98115

99116
New-Item -Path "$winuiVpackFolder" -ItemType Directory | Out-Null
100117
New-Item -Path "$cbsFolder" -ItemType Directory | Out-Null
101-
New-Item -Path "$winmdFolder" -ItemType Directory | Out-Null
102118
New-Item -Path "$winmdReferencesDir" -ItemType Directory | Out-Null
103119

104120
Write-Host "Copy OS publics to $winmdReferencesDir"
@@ -126,7 +142,9 @@ foreach ($flavour in $buildFlavours)
126142
foreach ($flavour in $buildFlavours)
127143
{
128144
$sourceFolder = "$releaseFolder\$flavour\FrameworkPackage"
145+
$winmdSourceFolder = "$releaseFolder\$flavour\Microsoft.UI.Xaml\sdk"
129146
$targetFolder = "$winuiVpackFolder\$flavour"
147+
$winmdTargetFolder = "$winuiVpackFolder\winmd"
130148

131149
New-Item -Path "$targetFolder" -ItemType Directory | Out-Null
132150

@@ -145,6 +163,11 @@ foreach ($flavour in $buildFlavours)
145163

146164
Write-Verbose "Copy item from '$sourcePathFull' to '$destPathFull' "
147165
Copy-Item $sourcePathFull $destPathFull
166+
167+
if ($flavour -ieq "X64")
168+
{
169+
RemergeWinMd $winmdSourceFolder $winmdTargetFolder $winmdReferencesDir
170+
}
148171
}
149172

150173
# Create CBS Vpacks:
@@ -164,17 +187,7 @@ foreach ($flavour in $buildFlavours)
164187

165188
if ($flavour -ieq "X64")
166189
{
167-
Write-Host "re-merge Microsoft.UI.Xaml.winmd"
168-
169-
# We need to re-merge Microsoft.UI.Xaml.winmd against the OS internal metadata instead of against the metadata from the public sdk:
170-
$mdMergeArgs = "-v -metadata_dir ""$winmdReferencesDir"" -o ""$winmdFolder"" -i ""$targetFolder"" -partial -n:3 -createPublicMetadata -transformExperimental:transform"
171-
Write-Host "mdmerge $mdMergeArgs"
172-
Invoke-Expression "mdmerge $mdMergeArgs" | Out-Null
173-
if($LASTEXITCODE)
174-
{
175-
Write-Error "mdmerge exited with error ($LASTEXITCODE)"
176-
exit
177-
}
190+
RemergeWinMd $targetFolder $cbswinmdFolder $winmdReferencesDir
178191
}
179192
}
180193

0 commit comments

Comments
 (0)