Windows Package Manager(winget)使用指南
#介绍
Windows Package Manager (winget) 是微软推出的基于命令行的包管理器,类似于 Chocolatey。
Package Manager 所管理的 Package,实际指应用(application / program)
理想情况下,开发人员使用 Package Manager 来指定开发所需的环境,Package 按照来说明安装和配置工具。Package Manager 可以减少准备环境所花费的时间,并且有助于确保在计算机上安装相同版本的包。
下部分基于 winget 版本 1.6.2771。
部分 Windows 安装时自带 winget 1.2 版本,在实际使用时会遇到各种问题。
#安装
可以通过在 Win Store 上安装 App Installer
来安装 winget。也可以通过命令行直接安装:
1 | $progressPreference = 'Continue' |
在 Windows Sandbox 中不存在 Windows Store,因此只能使用命令行进行安装
#命令
#Search
使用 search
命令进行搜索:
1 | winget search <packageName> |
示例和结果如下:
开源项目 winget-run (非微软维护),提供了在网页中搜索 winget 支持的 Package 的功能:
#Install
可以使用 install
安装应用,推荐使用 Search 结果中的 ID 来进行安装以避免冲突:
1 | winget install <Package ID> |
可以通过 ;
风格多个安装命令,如:
1 | winget install Microsoft.AzureStorageExplorer; winget install Microsoft.VisualStudioCode; winget install Microsoft.AzureCLI |
可以使用 -v
约定安装的版本,未指定的情况下将安装最新版本。
可以使用 -h
或 --slient
保证以静默方式安装。
如果使用了静默安装,但安装要求管理员权限且当前命令行又不具有,则可能出现错误。
因此建议在使用静默安装时,使用管理员权限打开命令行
#Uninstall
使用 uninstall
卸载应用:
1 | winget uninstall <Package ID> |
可以使用 -h
或 --slient
保证以静默方式安装。
#Upgrade
可以使用 upgrade
命令列出系统内所以可以通过 winget
进行升级的应用:
同样使用 upgrade
命令进行升级:
1 | winget upgrade <Package ID> |
#Export
可以使用 export
命令将本机安装的 Package 导出成 json
文件,加上 --include-versions
表示导出时需要包括版本。:
1 | winget export -o <OutputPath> --include-versions |
输出的 Json 如下:
1 | { |
#Import
可以使用 import
命令将通过 Export 导出的 Package 进行安装。
1 | winget import -i <JsonPath> --ignore-versions --ignore-unavailable |
在 Export 导出的文件中,很可能会出现版本已经不匹配或者其他无法安装的情况,因此建议加上 --ignore-unavailable
跳过无法安装的部分,避免阻塞整个流程。
#winget Repository
winget 默认应用的安装来源是 Windows Package Manager Community Repository。这是一个开源的项目,在项目的 manifests
文件夹下,按名称分类了每一个社区中提供的 Package。
以 PowerShell 为例子,在仓库中,7.3.0
版本对应的 Manifest 文件为 https://github.com/microsoft/winget-pkgs/blob/master/manifests/m/Microsoft/PowerShell/7.3.2.0/Microsoft.PowerShell.installer.yaml。
文件中最重要的就是 Installer
,如其中这一段表示了 x64
结构的安装路径:
1 | Installers: |
#在社区中发布 Package
Microsoft Learn:Contribute to the Windows Package Manager repository - Training | Microsoft Learn
Documentation: Submit your manifest to the repository | Microsoft Learn
#Reference
Explore the Windows Package Manager tool - Training | Microsoft Learn