Fix ARM64 detection: use registry instead of env var

Azure Run Command runs x64-emulated PowerShell on ARM64 VMs, so
$env:PROCESSOR_ARCHITECTURE reports AMD64. The registry value at
HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
always reports the real architecture.

[build images]
This commit is contained in:
Dylan Conway
2026-02-12 19:46:42 -08:00
parent 85607af74f
commit da3246fd6b

View File

@@ -20,8 +20,9 @@ param (
$ErrorActionPreference = "Stop"
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force
$script:IsARM64 = $env:PROCESSOR_ARCHITECTURE -eq "ARM64"
Write-Output "PROCESSOR_ARCHITECTURE=$env:PROCESSOR_ARCHITECTURE IsARM64=$script:IsARM64"
# Use registry for ARM64 detection — $env:PROCESSOR_ARCHITECTURE reports AMD64
# under x64 emulation (Azure Run Command uses x64 PowerShell on ARM64 VMs)
$script:IsARM64 = (Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment').PROCESSOR_ARCHITECTURE -eq "ARM64"
# ============================================================================
# Utility functions
@@ -234,7 +235,6 @@ function Install-7zip {
return
}
Write-Output "DEBUG: PROCESSOR_ARCHITECTURE=$env:PROCESSOR_ARCHITECTURE IsARM64=$script:IsARM64"
if ($script:IsARM64) {
# Scoop's 7zip ARM64 post_install has a Remove-Item error that kills bootstrap.
# Install manually instead.