这份清单面向个人开发机,按需执行并逐步确认结果。下面的路径保留当时的 D 盘布局;换盘时要同时修改 npm 配置、环境变量和 PATH。
安装工具
winget list
winget install --id Git.Git
winget install --id Microsoft.VisualStudioCode
winget install --id Atlassian.Sourcetree
# 按需升级指定应用;不要把全量升级当作初始化必需步骤
winget upgrade --id Git.GitMicrosoft 的 winget upgrade 文档说明 winget upgrade --all 会尝试升级所有可识别应用;清单较大时先用 winget list 核对包名。
Node、Android SDK 和 Gradle
我把 npm 全局包和缓存放到 D:\javascript\npm,Android SDK 和 Gradle 数据放到 D:\android。先安装项目要求的 Node.js 版本,并通过 Android Studio 的 SDK Manager 安装 SDK;设置环境变量本身不会安装这些工具。
当时是在 PowerShell 会话里这样设置 Android 相关变量的:
$Env:ANDROID_SDK_HOME="D:\android\.android"
$Env:ANDROID_SDK_ROOT="D:\android\sdk"
$Env:GRADLE_USER_HOME="D:\android\.gradle"这段只影响当前进程及其子进程,不会自动持久保存。ANDROID_SDK_HOME 还有目录层级上的历史差异,不能按名字把它当作 SDK 目录。下面改为持久设置当前工具使用的 ANDROID_HOME,npm 和 Gradle 继续沿用原目录:
$npmPrefix = 'D:\javascript\npm\prefix'
npm config set prefix $npmPrefix
npm config set cache 'D:\javascript\npm\cache'
[Environment]::SetEnvironmentVariable('ANDROID_HOME', 'D:\android\sdk', 'User')
[Environment]::SetEnvironmentVariable('GRADLE_USER_HOME', 'D:\android\.gradle', 'User')Android 官方环境变量说明推荐 ANDROID_HOME;ANDROID_SDK_ROOT 已废弃,若旧工具仍读取它,应让两个变量保持同一路径并逐步迁移。ANDROID_SDK_HOME 是旧工具用于用户配置目录的变量,含义与 SDK 安装目录不同,不能拿它替代 ANDROID_HOME。Android 环境变量文档说明了这些边界。将 npm prefix 加入当前用户 PATH 时保留已有值并避免重复,打开新终端验证:
$userPath = [string][Environment]::GetEnvironmentVariable('Path', 'User')
if (($userPath -split ';') -notcontains $npmPrefix) {
[Environment]::SetEnvironmentVariable('Path', (($userPath.TrimEnd(';') + ';' + $npmPrefix).Trim(';')), 'User')
}关闭并重新打开终端后执行,确认新进程读取了持久环境变量:
Get-Command node, npm, git
Get-ChildItem Env:ANDROID_HOME
npm config get prefix历史系统调整
旧脚本中的混合 GPU 注册表、RDP 端口和 Defender 组策略会改变安全边界或远程连接行为,保留为原始记录,不作为默认步骤。
当时记录的具体位置只有这些操作线索,没有记录执行后的结果:
# 混合 GPU:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0001
# EnableMsHybrid = 1
# RDP:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp -> PortNumber
# Defender:组策略 -> Windows 组件 -> Windows Defender防病毒程序 -> [已启用]关闭这些设置会改变系统安全策略或远程入口,只有明确的硬件或运维场景才考虑,并先导出当前策略和注册表值。