在 Windows 10 上安装软件,官方终于推出强大的「包管理」软件
软件包管理工具,是电脑中自动安装、配置、卸载和升级软件包的工具。基于命令行的包管理工具已经在 *NIX 世界中被广泛使用,不论是 macOS 的 Homebrew,还是 Linux 各大发行版自己的包管理(APT、Yum、Pacman……),它们都不仅有着完善的使用机制,还有丰富的软件包生态,是 *NIX 系统安装、管理软件包的不二之选。
Windows 在「包管理工具」方面则一直乏善可陈。社区的努力让 Windows 有了 Chocolatey 以及我曾经极力推荐的 Scoop,Windows 自己在历史上也曾经推出过具有「包管理工具」类似功能的 OneGet 和 NuGet。但是前二者一直依赖社区维护者的用爱发电,后二者则更强调开发环境的软件安装,没有提供日常用户所使用的软件,都不尽完美。
WinGet —— Windows 官方的包管理工具
在刚刚结束的 Microsoft Build 2020 上,微软终于发布了面向广大 Windows 普通用户的 Windows 官方「包管理工具」—— Windows Package Manager,也就是 WinGet。有了 WinGet,Windows 用户终于可以通过官方途径来在命令行环境下管理软件了。
▍下载安装
WinGet 支持 Windows 10 1709 及以上版本,现在使用 Windows 10 的同学们就可以直接下载安装。官方提供了下面的几种安装方法:
通过 Microsoft Store 下载
目前 WinGet 还在 Preview 阶段,因此如果你想用官方的渠道安装 WinGet,那么你需要:
或是加入 Windows 10 Insider,并下载安装 Windows Insider 版本的系统
或是通过官方注册通道来将自己加入 WinGet Preview flight ring
关注少数派,在后台回复「Winget」即可获得下载链接。
之后,你的系统上面就应该出现(命令行环境下的)WinGet 本体,并可以通过 Microsoft Store 同步更新。
通过 GitHub Release 手动安装
另外,你也可以直接去 WinGet 的官方 GitHub 仓库,在 Release 页面手动下载 WinGet 的安装程序进行手动安装。
在 WinGet 的 GitHub Release 页面手动下载安装
▍令人熟悉的 WinGet 操作和命令
安装好 WinGet 之后,我们就可以在 PowerShell 或者 CMD 中用 winget 命令调用它了。
WinGet:微软官方开发的 Windows 包管理工具
直接运行命令 winget,WinGet 会给我们展示自己的一些基础操作,包括安装软件、显示软件信息、显示应用源、搜索软件、验证安装程序等等。我自己在日常使用 Windows 时,是经常使用 Scoop 进行软件安装管理的,这里我将 WinGet 和 Scoop 直接面对面,进行命令的对比,看看常用的几个功能(安装软件、显示信息、搜索软件)之中 WinGet 和 Scoop 之间的区别。
安装软件
安装软件大家都一样,同样都是 winget install {软件名称} 和 scoop install {软件名称}。比如这里,我分别使用 WinGet 和 Scoop 下载安装 Postman:
# 使用 WinGet 安装一遍
winget install postman
# 卸载,再用 Scoop 安装一遍
scoop install postman
使用 WinGet 和 Scoop 下载安装 Postman
安装过程大概都是类似的,WinGet 安装的是 exe 文件,而 Scoop 安装了 NuGet 的 .nupkg 文件。二者都是 Windows 上常见的软件安装文件。界面上,WinGet 的下载进度条比较酷炫,而 Scoop 使用的依旧是「字符进度条」,简单淳朴。
另外,WinGet 还有一个比较骚的进度条,在刚刚安装命令之后加上 --rainbow 的参数,即可解锁彩虹进度条!(🌈 净搞这些有的没的 (/▽\))
显示软件详细信息
搜索特定软件
winget search steam
# Scoop 搜索 Steam
scoop search steam
▍WinGet 安装和管理软件的原理
寻找软件官方发布地址 下载我们设定版本的软件 运行软件安装器来安装下载得到的软件 并进行环境上的准备、安装后的善后工作等
winget source add <软件源> :添加新的软件源 winget source list :列出当前已添加的软件源 winget source update :更新当前全部添加的软件源 winget source remove :移除当前使用的软件源 ……