[CmdletBinding()] Param( [Parameter(Mandatory = $True, Position = 1)] [string]$monacoWxsFile, [Parameter(Mandatory = $True, Position = 2)] [string]$platform, [Parameter(Mandatory = $True, Position = 3)] [string]$nugetHeatPath ) $scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path if ($platform -eq "x64") { $HeatPath = Join-Path $nugetHeatPath "tools\net472\x64" } else { $HeatPath = Join-Path $nugetHeatPath "tools\net472\x86" } # Validate heat.exe exists at the resolved path; fail fast if not found. $heatExe = Join-Path $HeatPath "heat.exe" if (-not (Test-Path $heatExe)) { Write-Error "heat.exe not found at '$heatExe'. Ensure the WixToolset.Heat package (5.0.2) is restored under '$nugetHeatPath'." exit 1 } $SourceDir = Join-Path $scriptDir "..\..\src\Monaco\monacoSRC" # Now relative to script location $OutputFile = Join-Path $scriptDir "MonacoSRC.wxs" $ComponentGroup = "MonacoSRCHeatGenerated" $DirectoryRef = "MonacoPreviewHandlerMonacoSRCFolder" $Variable = "var.MonacoSRCHarvestPath" & $heatExe dir "$SourceDir" -out "$OutputFile" -cg "$ComponentGroup" -dr "$DirectoryRef" -var "$Variable" -gg -srd -nologo $fileWxs = Get-Content $monacoWxsFile; $fileWxs = $fileWxs -replace " KeyPath=`"yes`" ", " " $newFileContent = "" $componentId = "error" $directories = @() $fileWxs | ForEach-Object { $line = $_; if ($line -match "") { $line += @" `r`n `r`n "@ } if ($line -match "") { $directories += $matches[1] } if ($line -match "") { $line = @" "@ } $newFileContent += $line + "`r`n"; } $removeFolderEntries = @" `r`n `r`n "@ $directories | ForEach-Object { $removeFolderEntries += @" "@ } $removeFolderEntries += @" "@ $newFileContent = $newFileContent -replace "\s+()", "$removeFolderEntries`r`n " Set-Content -Path $monacoWxsFile -Value $newFileContent