feat(template): §6.6 Tier-2 toolchain PS7/NSIS/CMake/Node.js/WiX/gh CLI/Sysinternals/vcpkg

Step 12 in Setup-WinBuild2025.ps1 installs all 8 Tier-2 tools:
  - PowerShell 7.4.7 LTS (pwsh.exe)
  - NSIS 3.10 (makensis.exe)
  - CMake 3.31.6 (cmake.exe)
  - Node.js 22.14.0 LTS (node.exe + npm)
  - WiX 4.0.5 via dotnet tool (wix.exe, C:\BuildTools\Wix\)
  - GitHub CLI 2.67.0 (gh.exe)
  - Sysinternals Suite (C:\BuildTools\Sysinternals\, extracted via 7-Zip)
  - vcpkg HEAD shallow clone + bootstrap (C:\BuildTools\vcpkg\)

All tools added to Machine PATH; idempotent (binary-presence check).
Hash entries in \ ready for SHA256 pinning.
knownTempFiles extended; Final gate Assert-Step added for all 8 binaries.

Prepare-WinBuild2025.ps1: 7 new params + pass-through to Setup.
Validate-SetupState.ps1: Tier-2 checks in both main + re-run scriptblocks.
TODO.md: §6.6 [~] -> [x], Sprint 11 summary.
This commit is contained in:
Simone
2026-05-11 20:04:50 +02:00
parent f948f23f0f
commit 987b36ff3f
4 changed files with 451 additions and 25 deletions
+34
View File
@@ -228,6 +228,32 @@ try {
Get-Command 7z -ErrorAction SilentlyContinue
}
# Tier-2 Toolchain (§6.6)
Chk 'PowerShell 7 (pwsh.exe in PATH)' {
Get-Command pwsh -ErrorAction SilentlyContinue
}
Chk 'NSIS (makensis.exe in PATH)' {
Get-Command makensis -ErrorAction SilentlyContinue
}
Chk 'CMake (cmake.exe in PATH)' {
Get-Command cmake -ErrorAction SilentlyContinue
}
Chk 'Node.js (node.exe in PATH)' {
Get-Command node -ErrorAction SilentlyContinue
}
Chk 'WiX Toolset (wix.exe in PATH)' {
Get-Command wix -ErrorAction SilentlyContinue
}
Chk 'GitHub CLI (gh.exe in PATH)' {
Get-Command gh -ErrorAction SilentlyContinue
}
Chk 'Sysinternals PsExec.exe present' {
Test-Path 'C:\BuildTools\Sysinternals\PsExec.exe' -PathType Leaf
}
Chk 'vcpkg.exe present' {
Test-Path 'C:\BuildTools\vcpkg\vcpkg.exe' -PathType Leaf
}
# No leftover installer files in C:\CI root
Chk 'no leftover installer scripts in C:\CI' {
$leftovers = Get-ChildItem 'C:\CI' -File -EA SilentlyContinue |
@@ -347,6 +373,14 @@ try {
Chk 'MSBuild.exe present' { $msb=Get-Command msbuild -EA SilentlyContinue; $msb -and (Test-Path $msb.Source) }
Chk 'Git for Windows (git.exe in PATH)' { Get-Command git -ErrorAction SilentlyContinue }
Chk '7-Zip (7z.exe in PATH)' { Get-Command 7z -ErrorAction SilentlyContinue }
Chk 'PowerShell 7 (pwsh.exe in PATH)' { Get-Command pwsh -ErrorAction SilentlyContinue }
Chk 'NSIS (makensis.exe in PATH)' { Get-Command makensis -ErrorAction SilentlyContinue }
Chk 'CMake (cmake.exe in PATH)' { Get-Command cmake -ErrorAction SilentlyContinue }
Chk 'Node.js (node.exe in PATH)' { Get-Command node -ErrorAction SilentlyContinue }
Chk 'WiX Toolset (wix.exe in PATH)' { Get-Command wix -ErrorAction SilentlyContinue }
Chk 'GitHub CLI (gh.exe in PATH)' { Get-Command gh -ErrorAction SilentlyContinue }
Chk 'Sysinternals PsExec.exe present' { Test-Path 'C:\BuildTools\Sysinternals\PsExec.exe' -PathType Leaf }
Chk 'vcpkg.exe present' { Test-Path 'C:\BuildTools\vcpkg\vcpkg.exe' -PathType Leaf }
Chk 'no leftover installer scripts in C:\CI' { $l=Get-ChildItem 'C:\CI' -File -EA SilentlyContinue | Where-Object { $_.Name -match 'wu_worker|wu_result|vs_buildtools|dotnet-install' }; $l.Count -eq 0 }
return $results.ToArray()
} -ArgumentList $BuildUsername, $DotNetChannel, $PythonVersion