History

fix(desktop): detect installed Spectre libs for Windows builds

Replace the obsolete Visual Studio Spectre component check with an architecture-specific filesystem check against the latest installed MSVC toolset. This lets current Visual Studio Build Tools installs pass Windows desktop preflight while still failing when the required Spectre libraries are absent.

Julius Marminge committed 2 months ago

Commit 4ba39a61 parent 994bd731 file · +8 −10Browse files

Unified · Split

scripts/build-desktop-artifact.ts+8−10
@@ -1707,23 +1707,21 @@ export const preflightMacDesktopBuild = Effect.fn("preflightMacDesktopBuild")(fu · 1706 unmodified lines
17071707 });
17081708
17091709 function windowsVswherePrerequisiteScript(arch: typeof BuildArch.Type): string {
1710− const components =
1710+ const toolComponents =
17111711 arch === "arm64"
1712− ? [
1713− "Microsoft.VisualStudio.Component.VC.Tools.ARM64",
1714− "Microsoft.VisualStudio.Component.VC.Tools.ARM64.Spectre",
1715− ]
1716− : [
1717− "Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
1718− "Microsoft.VisualStudio.Component.VC.Tools.x86.x64.Spectre",
1719− ];
1712+ ? ["Microsoft.VisualStudio.Component.VC.Tools.ARM64"]
1713+ : ["Microsoft.VisualStudio.Component.VC.Tools.x86.x64"];
1714+ const spectreArch = arch === "arm64" ? "arm64" : "x64";
17201715 return [
17211716 "$vswhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\\Installer\\vswhere.exe'",
17221717 "if (!(Test-Path $vswhere)) { exit 1 }",
1723− `$install = & $vswhere -latest -products * -requires ${components.join(" ")} -property installationPath`,
1718+ `$install = & $vswhere -latest -products * -requires ${toolComponents.join(" ")} -property installationPath`,
17241719 "if (!$install) { exit 1 }",
17251720 "$kitsRoot = Get-ItemPropertyValue 'HKLM:\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots' -Name KitsRoot10 -ErrorAction SilentlyContinue",
17261721 "if (!$kitsRoot -or !(Test-Path (Join-Path $kitsRoot 'Lib'))) { exit 1 }",
1722+ "$msvcToolset = Get-ChildItem (Join-Path $install 'VC\\Tools\\MSVC') -Directory | Sort-Object { [version]$_.Name } -Descending | Select-Object -First 1",
1723+ "if (!$msvcToolset) { exit 1 }",
1724+ `if (!(Test-Path (Join-Path $msvcToolset.FullName 'lib\\spectre\\${spectreArch}'))) { exit 1 }`,
17271725 ].join("; ");
17281726 }
17291727