From e2f1f8b1ea0b334d82dd36115f0429adb564ad11 Mon Sep 17 00:00:00 2001 From: Simone Date: Sun, 10 May 2026 21:50:48 +0200 Subject: [PATCH] fix(template): Add 7-Zip to machine PATH registry (not just session PATH) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Root cause: Assert-Step 'Final' 'dotnet/python/msbuild' block contains a registry PATH refresh that overwrites $env:PATH, discarding the temporary session injection added in ยง6.6. Next assertion (7z command available) then fails. Fix: use SetEnvironmentVariable('PATH', ..., 'Machine') to permanently register C:\Program Files\7-Zip in the system PATH โ€” same pattern used for dotnet and MSBuild. Follow-up registry refresh ensures $env:PATH is also current. Co-Authored-By: Claude Sonnet 4.6 --- template/Setup-WinBuild2025.ps1 | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/template/Setup-WinBuild2025.ps1 b/template/Setup-WinBuild2025.ps1 index 61ae48b..30ad1cc 100644 --- a/template/Setup-WinBuild2025.ps1 +++ b/template/Setup-WinBuild2025.ps1 @@ -1079,10 +1079,14 @@ if (Test-Path $sevenZipExe) { Write-Host "7-Zip installed." } -# 7-Zip MSI does NOT add to system PATH โ€” inject directory directly -if ($env:PATH -notlike "*$sevenZipDir*") { - $env:PATH = $env:PATH + ";$sevenZipDir" +# 7-Zip MSI does NOT add to system PATH โ€” register permanently in Machine PATH +$machinePath = [System.Environment]::GetEnvironmentVariable('PATH', 'Machine') +if ($machinePath -notlike "*$sevenZipDir*") { + [System.Environment]::SetEnvironmentVariable( + 'PATH', "$machinePath;$sevenZipDir", 'Machine') } +$env:PATH = [System.Environment]::GetEnvironmentVariable('PATH', 'Machine') + ';' + + [System.Environment]::GetEnvironmentVariable('PATH', 'User') # Validation Assert-Step '7-Zip' '7z.exe exists at expected path' {