Skip to content

Commit

Permalink
WinUI Vpack: Include re-merged winmd (#7179)
Browse files Browse the repository at this point in the history
  • Loading branch information
kmahone authored Jul 8, 2022
1 parent eaf0cba commit dffc761
Showing 1 changed file with 26 additions and 13 deletions.
39 changes: 26 additions & 13 deletions build/CreateCBSVPack.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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"

Expand All @@ -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"
Expand Down Expand Up @@ -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

Expand All @@ -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:
Expand All @@ -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
}
}

Expand Down

0 comments on commit dffc761

Please sign in to comment.