① 【干货】Windows软件包管理器(WinGet)最实用教程
微软公司在 2020 年 5 月的 Microsoft Build 开发者大会上发布了 Windows 系统的官方软件包管理器——Windows 软件包管理器(WinGet)。经过三年的发展,越来越多的软件厂商在这个平台上发布了自家软件。WinGet 不仅支持 exe、msi 等传统 Win32 安装包格式,还支持新版 Windows 的 msix/msixbundle 格式打包的软件。
首先确认系统是否满足需求:WinGet 只能运行在 Windows 10 高于 1709 (Build 16299) 的版本和 Windows 11 上。在安装 WinGet 之前,建议使用微软新推出的终端模拟器 Windows Terminal 代替传统的 conhost.exe。
2.1 Windows 10/11 非 LTS 版本(家庭版、教育版、专业版、专业工作站版、企业版)
Windows Terminal 和 WinGet 都可以通过系统预装的 Microsoft Store 商店搜索安装,也可以转到下面的网页调用 Microsoft Store 安装,或者去微软托管在 GitHub 的发布页下载安装包到本地安装(较新版本的 Windows 11 已经预装,如已预装请略过此章节)。
2.2 Windows 10/11 LTS 版本,长期服务频道(企业版 LTSC,IoT 企业版 LTSC)
如果使用了 Windows LTSC 版本的系统,需要先安装一个 Microsoft Store 的环境才能安装 Windows Terminal 和 WinGet。
2.3 设置 Windows Terminal 为系统默认终端模拟器
较新版本的 Windows 11 已经默认 Windows Terminal 为系统终端模拟器,如已配置好请略过此章节。
3. 使用 WinGet 管理软件
3.1 概述
使用 WinGet,大多数软件就可以像 Linux 发行版的软件安装方式一样,可以通过 apt/apt-get、yum、pacman 等命令在终端模拟器中以一条命令即可做到。很多大佬已经写过 WinGet 的使用教程,再加上微软官方给出的参考文档和实例也已经十分详实,这里就不再赘述,只列举几个最常用的命令,以开源压缩软件 7-Zip 举例。
3.2 常用命令:替换源
微软官方软件包服务器的访问速度不稳定,可能出现一直超时失败的情况,这里可以替换为国内的镜像源,类似于 Debian 系 Linux 发行版的 add-apt-repository 命令。在使用 WinGet 之前,可以替换软件源为中科大的镜像源。
3.3 常用命令:搜索软件包
3.4 常用命令:查看软件包
3.5 常用命令:安装软件包
3.6 常用命令:更新软件包
3.7 常用命令:卸载软件包
4. 使用 WinGet + GUI 管理软件
4.1 什么是 WingetUI
众所周知,Windows 被设计为一个图形界面的操作系统,整个系统的交互逻辑都是围绕着所见即所得的图形化方式设计的;而 WinGet 却是一个传统的命令行程序,对于日常管理来说,还是不够直观;并且整天面对黑乎乎的命令行窗口也难免审美疲劳。所以,开源软件 WingetUI 应运而生,完美解决了 WinGet 在面向普通用户的使用过程中的诸多痛点。
4.2 获取和使用 WingetUI
既然有了 WinGet,就可以直接从 WinGet 安装 WingetUI。如果遇到网络问题等不方便直接从 WinGet 下载安装的情况,还可以使用网络正常的电脑下载 WingetUI 安装包到本地,再拷贝回目标设备安装。
5. 使用 WinGet + PowerShell 管理软件
5.1 使用批处理或 PS 脚本管理 WinGet 软件包
在 Linux 发行版中,包管理器的作用是提供一个统一的应用程序分发平台,以便在维护、备份和迁移的过程中进行自动化部署和配置;对于普通用户,一个常见的做法是将安装部署应用程序的命令行保存为 Shell 脚本,以便快速安装。对于 Windows 平台下的 WinGet 也毫无疑问可以采用这种最常用的方法来管理程序:将 WinGet 命令保存为 *.bat *.cmd *.ps1 等批处理脚本或 PowerShell 脚本进行自动化部署。
5.2 使用 PS 脚本从网络批量下载来自 WinGet 的软件包
众所周知,因为历史遗留的兼容性包袱,Windows 平台的软件包不能说是包罗万象,只能说是千奇百怪。例如在安装软件时,安装程序通常提供可以指定为当前用户安装或为所有用户安装的选项、可以任意指定到自定义的目录、可以指定是否创建桌面和开始菜单快捷方式等等;其中大部分软件的安装配置都可以适应 WinGet 用于指定软件包的安装方式额外控制参数(详见 winget install 命令),但少数软件并不能适应 WinGet 安装命令的控制参数。遇到这种情况,通常的做法是直接访问软件提供商的官方网站去下载安装包,但如今有了 WinGet 包管理器,搭配实用的 PowerShell 工具,便可以编写脚本,从 WinGet 源直接获取软件包信息并下载到本地手动安装。