Run the Windows installer under PowerShell 5.1, the only shell a clean machine has
The Windows Install step ran `& $script` inside a `shell: pwsh` step, so install.ps1 was executing under PowerShell 7. A genuinely clean Windows box does not have PowerShell 7: Windows ships powershell.exe (Windows PowerShell 5.1) and pwsh is a separate install that the hosted runner image happens to preinstall. So the one workflow whose premise is a machine that has never seen a developer toolchain was testing the installer under a shell that machine would not have, and no other Windows job anywhere in .github exercises install.ps1 under 5.1. Invoke it the way the desktop does (install.rs:325-339, and the bundled installer step in desktop-app-clean-machine-ci.yml): powershell.exe with -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Bypass -File. The pwsh step wrapper stays, since it is only the installer that has to be under 5.1. Calling powershell.exe with `&` keeps the output in the pipeline, so Tee-Object still fills logs/install.log, and $LASTEXITCODE after the pipeline is the child's real exit code, so $rc and `exit $rc` are unchanged. install.ps1 and studio/setup.ps1 hold no PowerShell 7-only constructs: no `#Requires` above 5.1, no `&&`/`||` chain operators, no ternary, no null-coalescing, no ForEach-Object -Parallel, no $IsWindows/$PSStyle, and no 6+ cmdlets or parameters. setup.ps1 declares `#Requires -Version 5.1`, and its three $PSVersionTable branches gate a 7-only preference on the 7 side with a 5.1 fallback. Every Invoke-WebRequest already passes -UseBasicParsing, which 5.1 needs because it otherwise reaches for the IE engine.
This commit is contained in:
parent
b905784f77
commit
b8a052080e
1 changed files with 5 additions and 1 deletions
|
|
@ -897,7 +897,11 @@ jobs:
|
|||
# `--no-torch` only (112-142), so the token was silently dropped and every
|
||||
# Windows leg installed torch anyway. The assert below needs torch, so get it
|
||||
# on purpose rather than by accident.
|
||||
& $script *>&1 | Tee-Object -FilePath logs/install.log
|
||||
# Under powershell.exe, not this pwsh 7 step: a clean Windows box ships
|
||||
# Windows PowerShell 5.1 only, and the desktop launches it the same way
|
||||
# (install.rs:325-339). pwsh 7 is a runner-image extra no user is promised.
|
||||
& powershell.exe -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Bypass `
|
||||
-File $script *>&1 | Tee-Object -FilePath logs/install.log
|
||||
$rc = $LASTEXITCODE
|
||||
Write-Host "installer exit code: $rc"
|
||||
exit $rc
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue