winget install Microsoft.DotNet.SDK.10\r
winget install Microsoft.PowerShell Microsoft.Sysinternals.ProcessExplorer Microsoft.Sysinternals.ProcessMonitor Microsoft.Sysinternals.SDelete Microsoft.VisualStudioCode Microsoft.WindowsTerminal\r
winget install Python.Python.3.13\r
-winget install WinMerge.WinMerge\r
+\r
+@rem WinMerge is the one package here where winget's own preference order picks\r
+@rem the WRONG architecture, and it is worth knowing why: upstream publishes the\r
+@rem ARM64 build as a MACHINE-scope installer (WinMerge-<ver>-ARM64-Setup.exe) and\r
+@rem the x64 build as a PER-USER one (WinMerge-<ver>-x64-PerUser-Setup.exe). Run\r
+@rem unelevated, winget's scope preference beats its architecture preference and\r
+@rem you silently get the emulated x64 build.\r
+@rem\r
+@rem So ask for arm64 explicitly, and fall back to the default when that cannot be\r
+@rem installed - which is exactly the standard-user case, where the machine-scope\r
+@rem installer has nowhere to go. The fallback is the x64 build under emulation:\r
+@rem a diff tool is not a hot path, and a working WinMerge beats none. The\r
+@rem architecture audit at the end of setup-windows-no-uac.ps1 reports which one\r
+@rem you ended up with.\r
+if "%IS_ARM64%"=="1" (\r
+ winget install WinMerge.WinMerge --architecture arm64 || winget install WinMerge.WinMerge\r
+) else (\r
+ winget install WinMerge.WinMerge\r
+)\r
\r
@rem --- Build drivers, standalone and native ---\r
@rem\r