Chocolatey 是 Windows 环境下最流行的包管理器之一,功能类似于 Linux 上的 apt 或 macOS 上的 Homebrew。它允许开发者通过命令行快速安装、更新和卸载软件包,并自动处理依赖关系,特别适合自动化部署和企业环境。但默认安装路径在系统盘,且使用国外源速度较慢。本文提供一套完整的 Chocolatey 自定义安装与初始化配置方案,包括修改安装目录、切换国内镜像源、配置环境变量和 PowerShell 自动补全等。
首先,准备好 Windows PowerShell 和文本编辑器(如记事本或 VS Code)。所有操作均需以管理员身份运行 PowerShell,并确保网络连接正常。
第一步,创建安装与配置脚本。将以下内容保存为 Setup-Chocolatey.ps1(注意后缀为 .ps1),编码可使用 UTF-8 with BOM。
- # =============================
- # Chocolatey 安装与初始化配置脚本
- # =============================
- Set-ExecutionPolicy Bypass -Scope CurrentUser -Force
- $chocoInstallPath = "D:\Chocolatey"
- [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
- Write-Host "⚙️ 正在下载并运行 Chocolatey 官方安装脚本..." -ForegroundColor Cyan
- Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
- if (Test-Path "C:\ProgramData\chocolatey") {
- Write-Host "🚚 正在将 Chocolatey 移动到 $chocoInstallPath ..." -ForegroundColor Cyan
- Move-Item -Path "C:\ProgramData\chocolatey" -Destination $chocoInstallPath -Force
- }
- Write-Host "⚙️ 设置 ChocolateyInstall 环境变量..." -ForegroundColor Cyan
- [Environment]::SetEnvironmentVariable("ChocolateyInstall", $chocoInstallPath, "Machine")
- $env:ChocolateyInstall = $chocoInstallPath
- Write-Host "⚙️ 正在配置 Chocolatey 使用国内镜像源(清华大学)..." -ForegroundColor Cyan
- choco source add -n=china -s="https://mirrors.tuna.tsinghua.edu.cn/Chocolatey"
- choco config set --name="'sourcePriority'" --value="'china'"
- Write-Host "⚙️ 配置系统 PATH 环境变量..." -ForegroundColor Cyan
- $systemPath = [Environment]::GetEnvironmentVariable("Path", "Machine")
- $chocoBinPath = Join-Path $chocoInstallPath 'bin'
- if ($systemPath -notlike "*$chocoBinPath*") {
- $newSystemPath = "$systemPath;$chocoBinPath"
- [Environment]::SetEnvironmentVariable("Path", $newSystemPath, "Machine")
- Write-Host "✅ 已将 Chocolatey 添加到系统 PATH。" -ForegroundColor Green
- } else {
- Write-Host "ℹ️ Chocolatey 已存在于系统 PATH 中。" -ForegroundColor Yellow
- }
- Write-Host "⚙️ 配置 PowerShell Tab 补全支持..." -ForegroundColor Cyan
- $profileDir = "$env:USERPROFILE\Documents\WindowsPowerShell"
- $profileFile = "$profileDir\Microsoft.PowerShell_profile.ps1"
- if (-not (Test-Path $profileDir)) {
- New-Item -ItemType Directory -Path $profileDir -Force | Out-Null
- }
- if (-not (Test-Path $profileFile)) {
- New-Item -ItemType File -Path $profileFile -Force | Out-Null
- Add-Content -Path $profileFile -Value "Import-Module `$env:ChocolateyInstall\helpers\chocolateyProfile.psm1"
- Write-Host "✅ 已创建 PowerShell 配置文件并启用 Tab 补全。" -ForegroundColor Green
- } else {
- if ((Get-Content $profileFile) -notcontains "Import-Module `$env:ChocolateyInstall\helpers\chocolateyProfile.psm1") {
- Add-Content -Path $profileFile -Value "Import-Module `$env:ChocolateyInstall\helpers\chocolateyProfile.psm1"
- Write-Host "✅ 已更新 PowerShell 配置文件并启用 Tab 补全。" -ForegroundColor Green
- } else {
- Write-Host "ℹ️ PowerShell 配置文件已包含 Chocolatey 补全模块。" -ForegroundColor Yellow
- }
- }
- Write-Host "⚙️ 正在启用 Chocolatey 支持的功能..." -ForegroundColor Cyan
- choco feature enable -n=allowGlobalConfirmation
- Write-Host '✅ 所有设置已完成。请关闭并重新打开 PowerShell 窗口使更改生效。' -ForegroundColor Green
- Write-Host '💡 你现在可以使用 choco 命令安装软件包,例如:' -ForegroundColor Cyan
- Write-Host ' choco install git -y' -ForegroundColor Yellow
复制代码
第二步,以管理员身份运行 PowerShell(右键点击开始菜单中的“Windows 终端”或“PowerShell”,选择“以管理员身份运行”)。
第三步,在管理员 PowerShell 中导航到脚本所在目录,例如:
然后执行脚本:
脚本执行过程中会自动从官方下载安装器、移动 Chocolatey 到 D:\Chocolatey、添加国内镜像源、配置系统 PATH 以及 PowerShell 配置文件。脚本最后会提示重启 PowerShell 使所有设置生效。
第四步,验证安装。关闭所有 PowerShell 窗口,重新以管理员身份打开新的 PowerShell,依次执行以下命令检查。
查看版本:
正常应显示类似 2.4.3 的版本号。
检查安装路径环境变量:- echo $env:ChocolateyInstall
复制代码
应输出 D:\Chocolatey。
确认 PATH 中包含 Chocolatey bin 目录:- $env:Path -split ';' | Select-String 'D:\\Chocolatey\\bin'
复制代码
如果输出匹配项,说明路径已正确配置。
常见问题与解决方法:
- 运行脚本时出现“无法加载文件...未签名”错误:这是 PowerShell 执行策略限制所致。可在管理员 PowerShell 中执行以下命令临时允许脚本运行:- Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
复制代码
- 运行 choco 命令报错提示找不到命令:通常是因为 PATH 环境变量未生效。首先检查 $env:ChocolateyInstall 是否指向正确路径,然后确保 D:\Chocolatey\bin 已加入系统 PATH。若修改后仍无效,可尝试关闭并重新打开 PowerShell 窗口,或手动刷新 PATH:- $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
复制代码
- PowerShell 无法识别 choco 命令(即使版本命令正常):可能是 PowerShell 缓存未更新,重新启动终端即可。
通过以上配置,Chocolatey 已实现自定义安装目录、国内镜像加速、环境变量自动注册以及 PowerShell 命令补全。此后即可使用 choco install、choco upgrade、choco uninstall 等命令高效管理 Windows 软件包,极大提升开发效率。 |