+- **Claude Code is not installed through winget.** Recent releases of
+ `Anthropic.ClaudeCode` are broken through that route, so the batch file runs
+ Anthropic's own installer, `irm https://claude.ai/install.ps1 | iex`: it
+ checks the download against the release manifest's SHA-256 and puts `claude`
+ in `%USERPROFILE%\.local\bin`, per-user. Two things are fixed up around it.
+ The script picks its ARM64 or x64 build from `$env:PROCESSOR_ARCHITECTURE`
+ alone, which reads `AMD64` in an emulated x64 shell on ARM64 (see
+ [Detecting the architecture](#detecting-the-architecture)), so the batch file
+ sets that variable from the registry's answer for the installer's process.
+ And the script refuses a 32-bit PowerShell, which is what `powershell` is from a
+ 32-bit `cmd.exe`, so it is run through `%SystemRoot%\Sysnative` when that
+ exists. A copy left over from the winget route can shadow the new one on the
+ `PATH`; the step warns if it finds one (`winget uninstall
+ Anthropic.ClaudeCode` removes it), and the architecture audit shows which
+ `claude.exe` wins.
+- **Rust.** winget installs rustup (`Rustlang.Rustup`, per-user, under
+ `%USERPROFILE%\.cargo` and `.rustup`). Its silent install is
+ `rustup-init -y -q`, which already sets up a stable toolchain for whatever
+ host rustup detects. The `RustToolchain` step in `setup-windows-no-uac.ps1`
+ then pins the answer: `stable-x86_64-pc-windows-msvc` on x64,
+ `stable-aarch64-pc-windows-msvc` on ARM64, installed, made the default, and set
+ as rustup's default host. That matters on ARM64, where an x64 rustup —
+ an older install, or one started from an emulated shell — would otherwise
+ quietly set up an emulated compiler. The `-msvc` toolchains link with the
+ Visual Studio the elevated half installs, but only need it to *build*:
+ installing rustup first is fine, and with `-y` rustup-init just warns that
+ the prerequisites are missing rather than installing a Visual Studio of its
+ own. Re-running the step updates stable. It also resets the default to
+ stable, so leave `RustToolchain` out of the plan if you have chosen another
+ default on purpose. The architecture audit reports the compiler *inside* the
+ toolchain: `.cargo\bin\rustc.exe` is a rustup proxy, so its architecture is
+ rustup's, not the compiler's.
+- **`adb` and `fastboot`** come from `Google.PlatformTools`, a portable zip that
+ winget unpacks under `%LOCALAPPDATA%\Microsoft\WinGet\Packages` and puts on the
+ user `PATH` (`adb.exe` needs the `AdbWinApi` DLLs beside it). The manifest
+ calls it x64, but every binary in it is 32-bit **x86** — checked on r37.0.1 —
+ and there is no ARM64 build. It runs under WOW64 on x64 and under x86
+ emulation on ARM64, which every Windows on Arm has; the audit lists it as
+ expected. It stays on ARM64 for the same reason `iperf3` does: it is bound by
+ the link to the device, not by the CPU.
+- **Android Studio and the Android SDK** are separate steps. Studio
+ (`Google.AndroidStudio`) is machine-wide — its installer elevates itself — and
+ is installed only when missing, since it updates itself. The SDK is per-user,
+ in Studio's default `%LOCALAPPDATA%\Android\Sdk` (or wherever `ANDROID_HOME`
+ already points): the command-line tools, platform-tools, and the newest
+ stable platform and build-tools from Google's package index, read at run
+ time. That is what Studio's first-run wizard would set up, and it is enough
+ to build: Gradle fetches whatever else a project asks for. The step sets
+ `ANDROID_HOME`, puts the command-line tools on the user `PATH`, and points
+ `JAVA_HOME` at Studio's bundled JDK for a command-line `gradlew` when there is
+ no `JAVA_HOME` already. The SDK licences are accepted on your behalf — the
+ plan says so before anything runs. Both are x64-only: Studio has no ARM64
+ build, and the SDK's Windows build tools are x86/x64. Three things about
+ the current command-line tools (23.0), found when this step was written:
+ - `sdkmanager` is deprecated. It is now a shim over the new **Android CLI**
+ (`android.exe`), which on first use installs itself into
+ `%USERPROFILE%\.android` — about 90 MB in `bin\`, and a `cli\` folder with
+ its own Java runtime. It also keeps a spool of **usage metrics** there and
+ uploads them; no opt-out was found. The step calls the CLI directly.
+ - **CLI 1.0.16406183 crashes on the way out of every `sdk` command**
+ (`0xC0000409`) on this Windows 10, after the work is done. So the step does
+ not trust its exit code: each package must be present afterwards, and a
+ crash with everything in place is printed as a note, not a failure.
+ - Windows PowerShell 5.1's progress bar made the 148 MB command-line tools
+ download take about ten minutes; with it off, the whole first install took
+ under a minute. The BinSkim download now skips the progress bar for the
+ same reason.