WinGet vs Chocolatey vs Scoop 全面对比指南

Windows 包管理器深度对比 · 2026年3月


一、引言

Linux 有 apt/yum,macOS 有 Homebrew,Windows 呢?目前有三个主流选择:微软官方的 WinGet、老牌的 Chocolatey、轻量的 Scoop。本文从设计理念、实际使用、进阶技巧到选型建议,帮你全面了解它们的差异。


二、一句话认识三者

包管理器一句话概括类比
WinGet微软官方的包管理器,Windows 11 预装类似 iPhone 自带 App Store
Chocolatey社区驱动的老牌包管理器,企业方案成熟类似 Red Hat 的 yum,成熟但重
Scoop为开发者设计的轻量安装器,无需管理员权限类似 macOS 的 Homebrew

三、安装与首次体验

WinGet

Windows 11 已预装。Windows 10 需确认 App Installer 已安装:

winget --version

如果提示找不到命令,在 PowerShell 中执行:

Add-AppxPackage -RegisterByFamilyName -MainPackage Microsoft.DesktopAppInstaller_8wekyb3d8bbwe

Chocolatey

管理员身份打开 PowerShell,执行:

Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

Scoop

普通用户权限即可,打开 PowerShell:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression

注意:在中国大陆网络环境下,如果安装脚本报错,建议先配置代理或使用镜像源(见第八节「网络与代理」)。


四、基本命令对照

操作WinGetChocolateyScoop
搜索winget search <name>choco search <name>scoop search <name>
安装winget install <name>choco install <name> -yscoop install <name>
卸载winget uninstall <name>choco uninstall <name>scoop uninstall <name>
列出已装winget listchoco list --local-onlyscoop list
更新全部winget upgrade --allchoco upgrade all -yscoop update *
更新工具本身Microsoft Store 自动更新choco upgrade chocolateyscoop update
查看详情winget show <name>choco info <name>scoop info <name>
清理无内置命令choco optimize(需商业版)scoop cleanup *
导出列表winget export -o pkgs.jsonchoco list -r > pkgs.txtscoop export > pkgs.json
锁定版本winget pin add <name>choco pin add -n <name>scoop hold <name>

提示:Chocolatey 安装时默认会等待确认,加 -y 跳过。WinGet 和 Scoop 默认不等待确认。


五、设计理念深度解析

5.1 权限模型 — 三者的根本分歧

这是选择哪个工具最核心的考量因素。

WinGet:跟随应用安装器的行为。如果应用本身需要管理员权限(如写入 Program Files),就会弹出 UAC 提示。WinGet 本身不要求管理员权限,但它安装的东西可能需要。

Chocolatey:默认以管理员身份运行。所有包安装到系统级目录(C:\ProgramData\chocolatey\),可以操作注册表、安装系统服务。这意味着它能做任何事,但也意味着需要信任它。

Scoop:核心设计目标是永不需要管理员权限。所有内容安装在用户目录下(~\scoop\),不碰注册表,不碰系统目录。如果某个应用必须管理员权限,Scoop 会将其归类到 nonportable bucket,并明确标注需要管理员。

实际影响

  • 公司电脑没有管理员权限?只能选 Scoop(或 WinGet 安装用户级应用)
  • 需要安装驱动、VPN 客户端、杀毒软件?选 WinGet 或 Chocolatey
  • 只是装开发工具(git、node、python、7zip)?Scoop 最干净

5.2 安装位置与系统影响

项目WinGetChocolateyScoop
默认安装位置应用安装器决定(通常是 Program Files)C:\ProgramData\chocolatey\%USERPROFILE%\scoop\
写入注册表取决于应用✅ 通常会❌ 不会
写入 Program Files取决于应用✅ 通常会❌ 不会
修改 PATH取决于应用✅ 系统级 PATH✅ 用户级 PATH(shim 机制)
卸载残留取决于应用可能有残留干净卸载(删除文件夹即可)

Scoop 的 Shim 机制详解

Scoop 安装应用后,不会把应用的真实路径加入 PATH。而是在 ~\scoop\shims\ 目录下创建一个可执行 shim(转发器),只有这个 shim 目录在 PATH 中。这样做的好处:

  • PATH 不会随着安装的应用增多而膨胀
  • 卸载时只需删除 shim,不需要清理 PATH
  • 多版本应用可以共存,通过 scoop reset 切换

5.3 包的本质 — 它们安装的是什么?

WinGet:调用软件的原生安装器(.exe、.msi、.msix)。你通过 WinGet 安装 VS Code,和从官网下载安装包安装的结果完全一样。优点是"所见即所得",缺点是依赖安装器的行为(可能弹出窗口、写入注册表、安装到奇怪的位置)。

Chocolatey:运行社区编写的 PowerShell 安装脚本(称为 nupkg 包)。这些脚本通常也是下载并执行原生安装器,但可以添加额外的自动化逻辑(如静默参数、配置文件处理等)。优点是灵活,缺点是依赖社区维护者的水平。

Scoop:下载应用的便携版本(通常是 .zip 或 .7z),解压到本地目录,创建 shim。不运行任何安装器。优点是干净、可预测,缺点是并非所有软件都有便携版本。


六、实际使用场景深入

6.1 开发环境搭建

典型需求:安装 Git、Node.js、Python、7-Zip、VS Code、Docker Desktop

Scoop 方案(推荐):

# 添加常用 bucket
scoop bucket add extras

# 安装开发工具
scoop install git nodejs python 7zip vscode

# 安装 aria2 加速下载
scoop install aria2

# 多版本 Node.js 共存
scoop install nodejs-lts    # 安装 LTS 版
scoop install nodejs@20     # 安装指定版本

# 切换版本
scoop reset nodejs-lts      # 切换到 LTS
scoop reset nodejs@20       # 切换到 v20

WinGet 方案

winget install Git.Git
winget install OpenJS.NodeJS.LTS
winget install Python.Python.3.12
winget install 7zip.7zip
winget install Microsoft.VisualStudioCode
winget install Docker.DockerDesktop

对比

  • Scoop 安装更快(不运行安装器),多版本管理更方便
  • WinGet 安装的是官方版本,与从官网下载完全一致
  • Docker Desktop 等需要系统服务的应用,Scoop 不支持,需要用 WinGet 或 Chocolatey

6.2 批量安装与环境迁移

WinGet — 导出/导入最成熟:

# 在旧电脑上导出
winget export -o D:\packages.json

# 在新电脑上导入(会自动安装所有包)
winget import -i D:\packages.json --accept-package-agreements --accept-source-agreements

Scoop — 手动但可控:

# 导出
scoop export > D:\scoop-packages.json

# 在新电脑上,先安装 Scoop,然后逐个安装(无内置批量导入)
# 可以用简单的 PowerShell 循环:
Get-Content D:\scoop-packages.json | ConvertFrom-Json | ForEach-Object { scoop install $_.Name }

Chocolatey — 类似:

# 导出
choco list -r > D:\choco-packages.txt

# 导入
Get-Content D:\choco-packages.txt | ForEach-Object { choco install $_.Split()[0] -y }

6.3 版本管理

需求WinGetChocolateyScoop
安装指定版本winget install <name> -v <version>choco install <name> --version=<ver>scoop install <name>@<version>
多版本共存⚠️ 有限支持✅ 通过 versions bucket
切换版本scoop reset <name>@<ver>
回滚到旧版本需卸载后重装指定版本需卸载后重装scoop reset <name>@<old-ver>

Scoop 版本管理示例

# 安装多个版本的 Python
scoop install python@3.11
scoop install python@3.12

# 查看已安装版本
scoop list python

# 切换到 3.11
scoop reset python@3.11

# 验证
python --version

6.4 创建自己的包

WinGet:需要向 winget-pkgs 仓库提交 YAML manifest,通过微软审核。适合软件厂商官方提交,个人创建流程较重。

Chocolatey:创建 .nuspec 文件和 tools\chocolateyInstall.ps1 脚本,可以发布到 chocolatey.org 或私有仓库。文档完善,适合企业内部打包。

Scoop:只需一个 JSON manifest 文件(通常不到 20 行),描述下载地址、解压方式和 shim。门槛最低,非常适合打包内部工具:

{
    "version": "1.0.0",
    "description": "My internal tool",
    "homepage": "https://internal.example.com/mytool",
    "url": "https://internal.example.com/mytool-1.0.0.zip",
    "hash": "sha256:xxxxxxxxxxxxxxxxxxxxxxxxx",
    "bin": "mytool.exe",
    "extract_dir": "mytool"
}

创建私有 Bucket 只需一个 GitHub 仓库:

# 创建私有 bucket
scoop bucket add mytools https://github.com/yourname/scoop-mytools

# 安装私有包
scoop install mytools/mytool

七、企业场景

WinGet 在企业中的角色

WinGet 与 Windows 生态深度集成:

  • 通过 IntuneConfiguration Manager 部署应用
  • 支持 DSC(Desired State Configuration) 定义系统状态
  • 适合"合规性优先"的企业环境

Chocolatey for Business

Chocolatey 的商业版提供企业级功能:

  • Central Management:Web 界面集中管理所有终端的软件
  • Package Internalizer:将社区包转为离线内网包,不依赖外部源
  • Package Builder:自动生成高质量安装包
  • Package Synchronizer:将已安装软件纳入 Chocolatey 管理
  • 商业支持:SLA 保障、技术支持

适合已有 System Center / Chef / Puppet 基础设施的 IT 团队。

Scoop 在企业中

Scoop 不适合作为企业级方案:

  • 无集中管理能力
  • 无商业支持
  • 无审计功能

但在受限环境中(开发者没有管理员权限),Scoop 是唯一可行的选择。


八、网络与代理

在中国大陆使用这些工具时,网络问题可能影响体验。

WinGet

# 查看当前源
winget source list

# WinGet 使用 Microsoft CDN,通常可以直接访问
# 如需代理,设置系统代理或环境变量
$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"

Chocolatey

# Chocolatey 默认从 chocolatey.org 下载,国内可直连
# 配置代理
choco config set proxy http://127.0.0.1:7890

# 使用镜像源(如有)
choco source add -n mirror -s https://mirrors.example.com/chocolatey/ --priority 1

Scoop

# Scoop 从 GitHub 下载,国内可能不稳定
# 方法 1:配置代理
scoop config proxy 127.0.0.1:7890

# 方法 2:使用 aria2 + 代理加速
scoop install aria2
scoop config aria2-enabled true

Scoop 的 GitHub 依赖是它在国内使用最大的痛点。 如果你的网络环境访问 GitHub 不稳定,建议使用 Gitee 镜像或配置代理。


九、性能与资源占用

指标WinGetChocolateyScoop
安装速度中等(依赖应用安装器)较慢(PowerShell 脚本 + 安装器)(解压即用)
磁盘占用取决于应用中等(ProgramData + 缓存)(用户目录,可控制)
内存占用低(C++ 原生)中等(PowerShell 进程)低(PowerShell 脚本)
启动速度较慢(需加载 PowerShell)
多线程下载✅(aria2)

十、常见问题

Q:三者可以同时安装吗?

可以,互不冲突。但建议根据使用场景选择主力工具,避免管理混乱。

Q:WinGet 能完全替代其他两个吗?

不能。WinGet 不支持多版本共存、无用户级隔离、包数量仍在增长中。但作为系统级应用的统一入口,它的角色不可替代。

Q:Scoop 能装带 GUI 的应用吗?

能。extras bucket 包含大量 GUI 应用(Chrome、Firefox、Telegram、Notion 等),但它们以便携方式运行,部分功能可能受限(如右键菜单集成、文件关联)。

Q:哪个工具的包更新最及时?

各不相同,取决于包维护者的活跃度。WinGet 有官方提交,Chocolatey 生态最大,Scoop 社区活跃。建议实际搜索你要安装的包,看哪个工具的版本最新。

Q:卸载哪个工具最干净?

Scoop 最干净 — 删除 ~\scoop 文件夹和 PATH 条目即可完全移除,不留任何痕迹。WinGet 和 Chocolatey 会有更多残留。


十一、选择建议

按使用场景

场景推荐原因
个人开发者日常使用Scoop干净、快速、多版本管理
系统级应用(驱动、杀毒、VPN)WinGet调用原生安装器,兼容性好
企业 IT 统一管理Chocolatey for Business集中管理、商业支持、审计
无管理员权限的公司电脑Scoop唯一不需要管理员的选择
新机器快速搭建环境WinGet + ScoopWinGet 管系统应用,Scoop 管开发工具
DevOps 自动化部署WinGetChocolatey脚本友好,企业集成好

按用户类型

用户类型推荐
后端/前端开发者Scoop(主力)+ WinGet(系统应用)
运维工程师Chocolatey 或 WinGet
DevOps 工程师WinGet(DSC 集成)或 Chocolatey
普通用户WinGet(预装,够用)
企业 IT 管理员Chocolatey for Business
受限环境开发者Scoop(唯一选择)

十二、参考资料

  • WinGet 官方文档:https://learn.microsoft.com/en-us/windows/package-manager/winget/
  • WinGet GitHub:https://github.com/microsoft/winget-cli
  • WinGet 包仓库:https://github.com/microsoft/winget-pkgs
  • Chocolatey 官网:https://chocolatey.org/
  • Chocolatey 文档:https://docs.chocolatey.org/
  • Chocolatey 包仓库:https://community.chocolatey.org/packages
  • Scoop GitHub:https://github.com/ScoopInstaller/Scoop
  • Scoop Wiki:https://github.com/ScoopInstaller/Scoop/wiki
  • Scoop Bucket 搜索:https://scoop.sh/

本文基于官方文档和公开信息整理,力求客观准确。具体功能可能随版本更新而变化,建议查阅最新官方文档。