- Fix Windows release artifact builds by adding the Spectre-mitigated MSVC components - Verify the libraries are installed before continuing - Co-authored-by: codex <codex@users.noreply.github.com>
Showing the changes to .github (1 of 1 file). Show all
Unified · Split
| @@ -188,6 +188,60 @@ jobs: · 187 unmodified lines | ||
| 188 | 188 | - name: Align package versions to release version |
| 189 | 189 | run: node scripts/update-release-package-versions.ts "${{ needs.preflight.outputs.version }}" |
| 190 | 190 | |
| 191 | + - name: Install VS 2022 Spectre-mitigated MSVC libraries | |
| 192 | + if: runner.os == 'Windows' | |
| 193 | + shell: pwsh | |
| 194 | + run: | | |
| 195 | + $vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" | |
| 196 | + $setup = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\setup.exe" | |
| 197 | + $spectreComponent = "Microsoft.VisualStudio.Component.VC.Runtimes.x86.x64.Spectre" | |
| 198 | + | |
| 199 | + if (-not (Test-Path $vswhere)) { | |
| 200 | + throw "vswhere.exe not found at $vswhere" | |
| 201 | + } | |
| 202 | + | |
| 203 | + if (-not (Test-Path $setup)) { | |
| 204 | + throw "Visual Studio installer setup.exe not found at $setup" | |
| 205 | + } | |
| 206 | + | |
| 207 | + $existingSpectreInstall = & $vswhere -products * -requires $spectreComponent -property installationPath | |
| 208 | + if ($LASTEXITCODE -ne 0) { | |
| 209 | + throw "vswhere failed while checking for $spectreComponent" | |
| 210 | + } | |
| 211 | + | |
| 212 | + if ($existingSpectreInstall) { | |
| 213 | + Write-Host "Spectre-mitigated MSVC libraries already installed at $existingSpectreInstall" | |
| 214 | + exit 0 | |
| 215 | + } | |
| 216 | + | |
| 217 | + $installPath = & $vswhere -products * -requires Microsoft.Component.MSBuild -property installationPath | |
| 218 | + if ($LASTEXITCODE -ne 0) { | |
| 219 | + throw "vswhere failed while locating the Visual Studio Build Tools installation" | |
| 220 | + } | |
| 221 | + | |
| 222 | + if (-not $installPath) { | |
| 223 | + throw "Could not find a Visual Studio Build Tools installation to modify" | |
| 224 | + } | |
| 225 | + | |
| 226 | + Write-Host "Installing $spectreComponent into $installPath" | |
| 227 | + & $setup modify ` | |
| 228 | + --installPath $installPath ` | |
| 229 | + --add $spectreComponent ` | |
| 230 | + --quiet ` | |
| 231 | + --wait ` | |
| 232 | + --norestart | |
| 233 | + | |
| 234 | + if ($LASTEXITCODE -ne 0) { | |
| 235 | + throw "Visual Studio installer failed with exit code $LASTEXITCODE" | |
| 236 | + } | |
| 237 | + | |
| 238 | + $verifiedInstall = & $vswhere -products * -requires $spectreComponent -property installationPath | |
| 239 | + if (-not $verifiedInstall) { | |
| 240 | + throw "$spectreComponent was not detected after installation" | |
| 241 | + } | |
| 242 | + | |
| 243 | + Write-Host "Installed Spectre-mitigated MSVC libraries at $verifiedInstall" | |
| 244 | + | |
| 191 | 245 | - name: Build desktop artifact |
| 192 | 246 | shell: bash |
| 193 | 247 | env: |