Windows 的包管理程序,WinGet 简单体验

各家操作系统都有自己的包管理器,能够使用统一的软件源为电脑获取应用。比如 Debian 的 apt,macOS 的 Homebrew。Windows 一直缺少一个广泛使用、功能完备的包管理器,Chocolatey 和 NuGet 也并不是非常完善。终于微软发布了 WinGet 包管理器,也算是对开发社区更加友好的重要举措。

申请 WinGet 内测

在写这篇文章的时候,WinGet 目前还处于公共预览版阶段,所以需要从 Windows 程序包管理器预览体验计划 链接的问卷中填入你的微软账号邮箱。申请通过后会给你发一封邮件,然后你就可以在 Microsoft Store 中等待包管理器的更新了。但现在 WinGet 已经公测,也已经随 Windows 推送。

如果你不想使用 Microsoft Store,你也可以在 GitHub Releases 下载单独的安装包,或者加入 Windows Insider,直接体验测试版的 Windows。

WinGet 基本操作

WinGet 兼容命令提示符,当然也兼容 PowerShell。我使用 PowerShell 7.1.1 + Windows Terminal 来运行。

以下是 winget 命令的操作。

操作

那就来实地操作一下,比如安装个 TIM?

输入

powershell
1
winget install TIM

来安装 TIM。winget 会从腾讯的服务器下载最新的安装包,然后静默安装。

小彩蛋:命令后面加 –rainbow 参数,进度条会变成彩虹色~

rainbow

下载完成后会请求管理员权限,没啥问题,毕竟 Linux 装个软件还得输 sudo 不是。

后面的过程基本是静默安装,只弹出了一个 “TIM 正在运行,是否关闭 TIM” 的对话框。也没有任何的捆绑插件,十分纯净。

我又测试了安装华为浏览器,也是静默安装的。这里出现了一个问题:应用名 “Huawei Browser” 有空格,不能被正确识别。

华为浏览器

但是可以使用包名代替:

用包名安装华为浏览器

这样就可以正常安装了。

值得注意的是,这个软件似乎是用户投放的,不属于官方。这个人好像还传了许多奇奇怪怪的软件……

关于软件源

Microsoft 的初衷是建设一个对开发者更友好的包管理器,但正如你所见,对于一般人来说,WinGet 似乎也挺合适。正如上面的测试,TIM 这种日常软件也被包含在软件源中。而且绝佳的地方是它没有捆绑,可以免于安装整个全家桶的困扰。

可以使用 winget search 命令来搜索软件包。比如搜索 xiaomi,出现了 MIUI + 客户端。

MIUI+

当然,微软自家的应用当然不能落下(虽然不都是微软的应用):

Microsoft 的搜索结果

搜索 Microsoft 得到的结果(部分)

也有其他家的开发工具:

Sublime Text

Sublime Text

Clang LLVM

Clang LLVM

JRE

Java 运行时

如果你想打会游戏,甚至还有……

Steam

Steam

软件包管理器的默认软件源架设在 Azure 上,但软件源的代码 GitHub 上。如果你发现缺少你的应用,可以在 这里 提交 Pull Request。也有很多爱好者自行上传的应用。未来也可能会出现第三方软件源。

winget.run 是更加友好的软件包查找器,似乎与 PyPI 有点相似?

一些缺陷

某些软件会出现安装失败的现象。比如上文提到的 MIUI+,CLI 中提示安装失败:

安装失败

不光安装失败,还把我之前装的那个版本也整坏了……

安装损坏

而且目前对一些我们可能认为理所当然的东西支持还不稳定,甚至…… 卸载。它被划为了实验性功能。

参考文献

[1] 使用 winget 工具管理和安装应用程序 | Microsoft Docs

许可证:CC BY-SA 4.0
最后更新于 Jun 12, 2023 19:53 +0800