mirror of
https://github.com/microsoft/PowerToys.git
synced 2024-12-30 14:17:56 +08:00
56 lines
1.5 KiB
PowerShell
56 lines
1.5 KiB
PowerShell
|
[CmdletBinding()]
|
||
|
Param(
|
||
|
[Parameter(Mandatory = $True, Position = 1)]
|
||
|
[string]$fileListName,
|
||
|
[Parameter(Mandatory = $True, Position = 2)]
|
||
|
[string]$wxsFilePath,
|
||
|
[Parameter(Mandatory = $True, Position = 3)]
|
||
|
[string]$regroot
|
||
|
)
|
||
|
|
||
|
$wxsFile = Get-Content $wxsFilePath;
|
||
|
|
||
|
$wxsFile | ForEach-Object {
|
||
|
if ($_ -match "(<?define $fileListName=)(.*)\?>") {
|
||
|
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', 'fileList',
|
||
|
Justification = 'variable is used in another scope')]
|
||
|
|
||
|
$fileList = $matches[2] -split ';'
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$componentId = "$($fileListName)_Component"
|
||
|
|
||
|
$componentDefs = "`r`n"
|
||
|
$componentDefs +=
|
||
|
@"
|
||
|
<Component Id="$($componentId)" Win64="yes" Guid="$((New-Guid).ToString().ToUpper())">
|
||
|
<RegistryKey Root="$($regroot)" Key="Software\Classes\powertoys\components">
|
||
|
<RegistryValue Type="string" Name="$($componentId)" Value="" KeyPath="yes"/>
|
||
|
</RegistryKey>`r`n
|
||
|
"@
|
||
|
|
||
|
foreach ($file in $fileList) {
|
||
|
$fileTmp = $file -replace "-", "_"
|
||
|
$componentDefs +=
|
||
|
@"
|
||
|
<File Id="$($fileListName)_File_$($fileTmp)" Source="`$(var.$($fileListName)Path)\$($file)" />`r`n
|
||
|
"@
|
||
|
}
|
||
|
|
||
|
$componentDefs +=
|
||
|
@"
|
||
|
</Component>`r`n
|
||
|
"@
|
||
|
|
||
|
$wxsFile = $wxsFile -replace "\s+(<!--$($fileListName)_Component_Def-->)", $componentDefs
|
||
|
|
||
|
$componentRef =
|
||
|
@"
|
||
|
<ComponentRef Id="$($componentId)" />
|
||
|
"@
|
||
|
|
||
|
$wxsFile = $wxsFile -replace "\s+(</ComponentGroup>)", "$componentRef`r`n </ComponentGroup>"
|
||
|
|
||
|
Set-Content -Path $wxsFilePath -Value $wxsFile
|