winget (Windows 包管理器)

winget Windows包管理器

#platform / windows #type / concept #status / growing

winget (Windows 包管理器)

一句话定义

winget 是微软官方的 Windows 命令行包管理器,通过统一接口搜索、安装、升级和卸载应用程序。

核心机制 / 工作原理

基本命令

命令作用示例
winget search搜索可用包winget search Chrome
winget install安装应用winget install Microsoft.PowerShell
winget upgrade升级应用winget upgrade --all
winget uninstall卸载应用winget uninstall 7zip.7zip
winget list列出已安装应用winget list
winget show查看包详情winget show VSCode
winget export导出已安装应用清单winget export -o apps.json
winget import从清单批量安装winget import -i apps.json

源管理

winget 从配置的源(source)获取包信息:

  • winget:默认社区源,包含大量开源和商业软件
  • msstore:Microsoft Store 源,支持 MSIX 格式应用
  • winget source list 查看已配置源
  • winget source add / winget source remove 管理自定义源

Manifest 结构

每个包由 YAML manifest 描述,包含:

PackageIdentifier: Publisher.AppName
PackageVersion: 1.2.3
Installers:
- Architecture: x64
  InstallerType: msi      # msi / exe / msix / zip
  InstallerUrl: https://...
  InstallerSha256: ...
ManifestType: singleton

支持的安装格式

格式特点
MSIX沙箱化安装,自动更新,干净卸载
MSI标准 Windows Installer,支持静默安装
EXE传统安装程序,需自定义参数
ZIP解压即用,需手动处理 PATH

wingetcreate 工具

微软提供的 manifest 创建工具,用于向 winget 仓库提交新包:

wingetcreate new https://example.com/app.msi
wingetcreate update Publisher.AppName --version 1.2.3 --urls https://...

最小例子

# 搜索 PowerShell
winget search powershell

# 使用 ID 精确安装
winget install Microsoft.PowerShell

# 升级所有可升级应用
winget upgrade --all

# 导出当前系统应用清单(用于新机器批量安装)
winget export -o D:\backup\apps.json

# 在新机器上恢复
winget import -i D:\backup\apps.json

边界与常见误解

  • winget 不管理所有 Windows 软件:只能管理 manifest 中收录的软件,部分传统软件不在源中
  • 与 Chocolatey 对比:Chocolatey 社区包更丰富,winget 与系统集成度更高且官方维护
  • 与 Scoop 对比:Scoop 默认用户级安装(不需管理员),适合开发者工具;winget 默认系统级安装
  • 升级不会自动运行winget upgrade --all 需手动执行,不像 Linux 包管理器有自动更新
  • 版本检测有时不准:部分 EXE 安装器的版本号与 manifest 不一致时,会误报”找不到升级”
  • export/import 不是完整备份:只导出包 ID 和版本,不包含配置和数据

经验总结

任务命令描述
搜索winget search <关键词>通过名称、ID 或标签查找
安装winget install <ID>使用 ID 精确安装
导出winget export -o apps.json生成已安装应用清单
导入winget import -i apps.json从清单批量安装
列表winget list查看已安装软件
升级winget upgrade --all一键更新所有可升级软件
卸载winget uninstall <ID>卸载指定应用
源管理winget source list查看已配置的源
创建于 2025/1/1 更新于 2026/5/27