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 和版本,不包含配置和数据
Related notes
- PowerShell
- [[chocolatey|Chocolatey]]
- Scoop
- Windows Terminal
经验总结
| 任务 | 命令 | 描述 |
|---|---|---|
| 搜索 | 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 | 查看已配置的源 |