X-Git-Url: https://vilimpoc.org/repos/dotfiles/blobdiff_plain/7840e3c2b0c54c1d49bd2aa7c717892e8a3669e7..4658d6ddc8aaaa7e6b52fe3939151d3b35ddacab:/setup-windows-no-uac.ps1 diff --git a/setup-windows-no-uac.ps1 b/setup-windows-no-uac.ps1 index f0679f1..2a104fb 100644 --- a/setup-windows-no-uac.ps1 +++ b/setup-windows-no-uac.ps1 @@ -566,8 +566,11 @@ function Invoke-ArchAudit { # here as accepted emulation, and are now simply not installed on ARM64. That # is the whole shape of the change - the exceptions that were tolerable one at # a time added up to a VM full of x64 binaries. + # + # rsync came off this list when the release started publishing an arm64 + # asset. An x64 rsync.exe on an ARM64 box is now a leftover from a run before + # that, not an accepted exception, so it warns and gets a remedy below. $KnownEmulated = @{ - 'rsync.exe' = 'no ARM64 asset published; transfer is socket-bound, not CPU-bound' 'iperf3.exe' = 'no ARM64 build published; network-bound anyway' 'py.exe' = 'python.org ships the launcher shim as x86; it execs the native python.exe' 'vswhere.exe' = 'Microsoft ships x86 only; runs once per script' @@ -589,6 +592,7 @@ function Invoke-ArchAudit { $Remedies = @{ 'ninja.exe' = 'Visual Studio bundles an x64 ninja. Install the native one (winget install Ninja-build.Ninja) and re-run - the NinjaPath step puts its directory at the front of the user PATH.' 'cmake.exe' = 'Install the native build with: winget install Kitware.CMake (its MSI is machine-scope, so it needs an administrator).' + 'rsync.exe' = 'Left over from before the release published an arm64 asset. Re-run setup-windows-with-uac.ps1 as an administrator to replace it, and the ARM64 ssh.exe beside it, with the native build.' } $vs = $null @@ -621,7 +625,18 @@ function Invoke-ArchAudit { 'BinSkim.exe' = @((Join-Path $BinSkimDir 'BinSkim.exe')) 'rsync.exe' = @((Join-Path $RsyncDir 'rsync.exe')) 'ssh.exe' = @((Join-Path $env:WINDIR 'System32\OpenSSH\ssh.exe')) - 'nasm.exe' = @() + # NASM's installer falls back to a per-user directory when it cannot + # write to Program Files - see the NASM comment in setup-windows.bat. It + # registers nothing there, so winget cannot see it (and re-downloads and + # re-runs the installer on every run), and it puts nothing on the PATH. + # Without these candidates the audit reported "- not installed" for a + # nasm.exe that was on disk all along, and then still concluded that + # everything had resolved. + 'nasm.exe' = @( + (Join-Path $env:LOCALAPPDATA 'bin\NASM\nasm.exe') + (Join-Path $env:ProgramFiles 'NASM\nasm.exe') + (Join-Path ${env:ProgramFiles(x86)} 'NASM\nasm.exe') + ) 'iperf3.exe' = @() 'OpenCppCoverage.exe' = @((Join-Path $env:ProgramFiles 'OpenCppCoverage\OpenCppCoverage.exe'), (Join-Path ${env:ProgramFiles(x86)} 'OpenCppCoverage\OpenCppCoverage.exe')) 'vswhere.exe' = @($vsWhereExe)