diff --git a/install.ps1 b/install.ps1 index 5824ad7..19f13cc 100644 --- a/install.ps1 +++ b/install.ps1 @@ -25,10 +25,11 @@ function Require-Command($Name) { } function Normalize-Arch { - switch ($env:PROCESSOR_ARCHITECTURE) { + $arch = if ($env:PROCESSOR_ARCHITEW6432) { $env:PROCESSOR_ARCHITEW6432 } else { $env:PROCESSOR_ARCHITECTURE } + switch ($arch) { "AMD64" { "x86_64"; break } "ARM64" { "aarch64"; break } - default { $env:PROCESSOR_ARCHITECTURE.ToLowerInvariant() } + default { if ($arch) { $arch.ToLowerInvariant() } else { "unknown" } } } } diff --git a/tests/release_scripts.rs b/tests/release_scripts.rs index 8a24171..1988a3e 100644 --- a/tests/release_scripts.rs +++ b/tests/release_scripts.rs @@ -159,6 +159,15 @@ fn windows_installer_adds_user_path_idempotently() { assert!(ps1.contains("Add-UserPath $bindir")); } +#[test] +fn windows_installer_prefers_native_wow64_arch_for_prebuilts() { + let ps1 = include_str!("../install.ps1"); + assert!(ps1.contains("PROCESSOR_ARCHITEW6432")); + assert!(ps1.contains("$arch = if ($env:PROCESSOR_ARCHITEW6432)")); + assert!(ps1.contains("\"ARM64\" { \"aarch64\"; break }")); + assert!(ps1.contains("\"dosh-windows-$(Normalize-Arch).zip\"")); +} + #[test] fn unix_installer_rejects_unsafe_source_update_cache_paths() { let install = include_str!("../install.sh");