PowerToys/installer/PowerToysSetup/generateMonacoWxs.ps1
Aaron Junker 704c2e0540
Update monaco package (#26375)
* Update monaco

* Update monaco_labgzages.json

* Update monaco_languages

* Add script to generate MonacoSRC.wxs

* Fix merge conflicts

* Auto-generate MonacoSRC.wxs

* Add guards when parsing json file

* Change language definitions to new ones and fix context menu

* Fix redunant error message

* update monaco_languages.json

* Remove json from custom txt extensions

---------

Co-authored-by: Stefan Markovic <stefan@janeasystems.com>
2023-07-14 11:48:59 +02:00

70 lines
1.8 KiB
PowerShell

[CmdletBinding()]
Param(
[Parameter(Mandatory = $True, Position = 1)]
[string]$monacoWxsFile
)
$fileWxs = Get-Content $monacoWxsFile;
$fileWxs = $fileWxs -replace " KeyPath=`"yes`" ", " "
$newFileContent = ""
$componentId = "error"
$directories = @()
$fileWxs | ForEach-Object {
$line = $_;
if ($line -match "<Wix xmlns=`".*`">") {
$line +=
@"
`r`n
<?include `$(sys.CURRENTDIR)\Common.wxi?>`r`n
"@
}
if ($line -match "<Component Id=`"(.*)`" Directory") {
$componentId = $matches[1]
}
if ($line -match "<Directory Id=`"(.*)`" Name=`".*`" />") {
$directories += $matches[1]
}
if ($line -match "</Component>") {
$line =
@"
<RegistryKey Root="`$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="$($componentId)" Value="" KeyPath="yes"/>
</RegistryKey>
</Component>
"@
}
$newFileContent += $line + "`r`n";
}
$removeFolderEntries =
@"
`r`n <Component Id="RemoveMonacoSRCFolders" Guid="$((New-Guid).ToString().ToUpper())" Directory="FileExplorerPreviewInstallFolder" >
<RegistryKey Root="`$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="RemoveMonacoSRCFolders" Value="" KeyPath="yes"/>
</RegistryKey>`r`n
"@
$directories | ForEach-Object {
$removeFolderEntries +=
@"
<RemoveFolder Id="Remove$($_)" Directory="$($_)" On="uninstall"/>
"@
}
$removeFolderEntries +=
@"
</Component>
"@
$newFileContent = $newFileContent -replace "\s+(</ComponentGroup>)", "$removeFolderEntries`r`n </ComponentGroup>"
Set-Content -Path $monacoWxsFile -Value $newFileContent