WinGet 快速指南:包管理新体验
WinGet 是 Windows 的官方包管理器,通过命令行和 PowerShell 模块简化软件安装与管理。本教程帮助你轻松上手,掌握常用操作。
1. WinGet 是什么?解决哪些痛点?
本章要介绍 WinGet 是什么,以及它解决了哪些常见的痛点。
首先确保你的系统已经安装了最新版的 Windows 10 或 Windows 11,并且启用了可选组件中的“App Installer”。
我们先来看一下 WinGet 的基本概念。WinGet 是微软推出的一个命令行工具,用于简化应用程序的安装、更新和卸载过程。
winget --version这条命令可以查看你当前安装的 WinGet 版本号。
WinGet 解决了手动下载和安装软件时遇到的各种麻烦,比如:
- 手动查找下载地址耗时费力。
- 下载来源不可靠,容易感染恶意软件。
- 不同应用有不同的安装方式,难以统一管理。
通过 WinGet,你可以直接从命令行快速获取官方或社区维护的应用程序列表,并一键完成安装。例如:
winget search vscode这条命令会列出所有名称包含 "vscode" 的软件包及其相关信息。
此外,WinGet 还支持自动检查已安装软件的更新并进行批量升级:
winget upgrade --all这个命令会尝试将所有可以通过 Winget 更新的应用都升级到最新版本。
记住一点:使用 WinGet 可以大大提高工作效率,减少因软件管理带来的困扰。
2. 安装 WinGet:推荐方法与注意事项
本章要解决如何在 Windows 上正确安装 WinGet,并提供一些注意事项,让你能够顺利开始使用这个强大的包管理工具。
首先确保你的系统已经安装了最新版的 Windows 10 或 Windows 11,并且启用了可选组件中的“App Installer”。
我们先来确认是否已经安装了 WinGet。打开命令提示符(cmd)或 PowerShell,输入以下命令:
winget --version如果显示版本号,则表示已安装 WinGet;如果没有找到该命令,则需要按照下面的方法进行安装。
推荐方法
方法一:通过 Microsoft Store 安装
- 打开 Microsoft Store。
- 在搜索栏中输入 "App Installer" 并点击进入详情页面。
- 点击“获取”按钮安装 App Installer。
- 安装完成后,重新启动计算机。
重启后再次运行 winget --version 检查是否成功安装。
方法二:通过 PowerShell 脚本自动安装
如果你更喜欢使用脚本自动化流程,可以直接运行以下命令:
Add-AppxPackage -Path https://aka.ms/getwinget这会从指定 URL 下载并安装 WinGet。
注意事项
- 权限问题:确保你有足够的权限来安装应用。通常情况下,管理员账户可以顺利完成安装。
- 网络连接:由于需要从互联网下载文件,请确保设备有稳定的网络连接。
- 防火墙设置:某些防火墙可能会阻止下载过程。请检查防火墙设置,必要时添加例外规则。
- 系统要求:WinGet 需要在 Windows 10, version 2004 或更高版本(内部版本 19041 或更高),或者任何版本的 Windows 11 上运行。低于这些版本的操作系统无法使用 WinGet。
实际案例
假设你在一台全新的 Windows 11 设备上首次使用 WinGet 来安装 Visual Studio Code。以下是具体步骤:
- 确认是否已启用 App Installer 并重启电脑。
- 打开 PowerShell 输入
winget search vscode查找 Visual Studio Code 的软件包信息。 - 找到合适的软件包后,使用
winget install <PackageName>命令进行安装。例如:winget install Microsoft.VisualStudioCode - 等待安装完成,然后启动 Visual Studio Code 验证是否正常工作。
本章小结
- 学习了两种常用的 WinGet 安装方法:Microsoft Store 和 PowerShell 脚本。
- 注意了可能影响安装成功的几个关键因素:权限、网络、防火墙和系统要求。
- 实践了一个简单的实际案例,在全新设备上通过 WinGet 完成了一个常用软件的安装验证过程。
3. 基本命令详解:搜索、安装、更新软件
本章要解决的问题是如何使用 WinGet 进行软件包的搜索、安装和更新。通过学习本章,你将能够熟练地利用 WinGet 来查找、安装和维护你的应用程序。
首先,确保你已经在 Windows 10, version 2004 或更高版本(内部版本 19041 或更高),或者任何版本的 Windows 11 上成功安装了 WinGet,并且已经启用了 App Installer。
搜索软件包
我们先来搜索一个软件包。打开 PowerShell 输入以下命令:
winget search vscode这会列出所有包含 "vscode" 关键字的软件包及其相关信息。
安装软件包
找到合适的软件包后,使用 winget install <PackageName> 命令进行安装。例如,安装 Visual Studio Code:
winget install Microsoft.VisualStudioCode等待安装完成后,你可以启动 Visual Studio Code 来验证是否正常工作。
更新软件包
如果你想更新某个已安装的软件包,可以使用 winget upgrade 命令。例如,更新 Visual Studio Code:
winget upgrade Microsoft.VisualStudioCode这条命令会检查是否有可用的新版本,并自动下载和安装最新版本。
列出已安装的软件包
有时候你需要查看当前系统上通过 WinGet 安装的所有软件包。可以使用以下命令:
winget list这个命令会显示所有已安装的软件包列表及其详细信息。
示例:管理 Node.js
假设你想在你的开发环境中管理 Node.js 版本。首先搜索可用的 Node.js 版本:
winget search nodejs找到合适的一个版本后进行安装,比如 LTS 版本:
winget install OpenJS.NodeJSLTS一段时间后,Node.js 将被安装到你的系统中。你可以通过以下命令确认安装情况:
node -v如果想升级到最新的 LTS 版本,只需执行:
winget upgrade OpenJS.NodeJSLTS本章小结
- 学习了如何使用
winget search查找所需的软件包。 - 掌握了
winget install命令来安装指定的应用程序。 - 理解了如何通过
winget upgrade更新已有的应用至最新版。 - 知道了如何用
winget list获取当前系统上的所有 WinGet 安装记录。
4. PowerShell 模块:更强大的包管理功能
PowerShell 模块:更强大的包管理功能
本章教你如何利用 PowerShell 模块来增强 WinGet 的功能,包括搜索、安装、列出和更新软件包。完成这章后,你将能够直接在 PowerShell 中使用这些高级命令。
前置条件
确保你已经安装了最新版本的 WinGet 和 PowerShell 7 或更高版本。可以通过以下命令检查 PowerShell 版本:
$PSVersionTable.PSVersion第一步:安装 Microsoft.WinGet.Client 模块
首先,我们需要从 PowerShell Gallery 安装 Microsoft.WinGet.Client 模块:
Install-Module -Name Microsoft.WinGet.Client这条命令会自动下载并安装该模块及其依赖项。
第二步:导入模块
安装完成后,导入模块以便立即使用其中的 cmdlet:
Import-Module Microsoft.WinGet.Client这样就可以调用新的 cmdlet 来管理软件包了。
第三步:使用 Find-WinGetPackage 搜索软件包
我们可以使用 Find-WinGetPackage 来查找想要安装的软件包。例如,搜索 Visual Studio Code:
Find-WinGetPackage -Query "Visual Studio Code"这条命令会返回所有匹配的软件包列表。
第四步:使用 Install-WinGetPackage 安装软件包
确定要安装的具体软件包后,使用 Install-WinGetPackage 进行安装。这里以 Visual Studio Code 为例:
Install-WinGetPackage -Id Microsoft.VisualStudioCode执行此命令后,WinGet 会开始下载并安装 Visual Studio Code。
第五步:使用 Get-WinGetPackage 列出已安装的软件包
如果你想查看当前系统上通过 WinGet 安装的所有软件包,可以运行:
Get-WinGetPackage这条命令会显示所有已安装的软件包及其详细信息。
第六步:使用 Update-WinGetPackage 更新软件包
当你需要更新某个已安装的软件包时,可以使用 Update-WinGetPackage。继续以 Visual Studio Code 为例:
Update-WinGetPackage -Id Microsoft.VisualStudioCode这条命令会检查是否有新版本可用,并自动更新到最新版本。
第七步:启用 Winget 自动补全功能
为了提高工作效率,在 PowerShell 中输入 Winget 命令时启用自动补全是很有帮助的。将以下脚本添加到你的 $PROFILE 文件中:
Register-ArgumentCompleter -Native -CommandName winget -ScriptBlock {
param($wordToComplete, $commandAst, $cursorPosition)
[Console]::InputEncoding = [Console]::OutputEncoding = $OutputEncoding = [System.Text.Utf8Encoding]::new()
$Local:word = $wordToComplete.Replace('"', '""')
$Local:ast = $commandAst.ToString().Replace('"', '""')
winget complete --word="$Local:word" --commandline "$Local:ast" --position $cursorPosition | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
}
}这段代码会在每次打开新的 PowerShell 会话时生效。
本章小结
- 学习了如何通过 PowerShell Gallery 安装
Microsoft.WinGet.Client模块。 - 掌握了
Find-WinGetPackage、Install-WinGetPackage、Get-WinGetPackage和Update-WinGetPackage等 cmdlet 的用法。 - 启用了 Winget 的自动补全功能,提升输入效率。
5. 管理员权限下的 WinGet 使用技巧
本章要解决的问题是如何在管理员权限下使用 WinGet 进行高效的软件管理和维护。读完后,你能掌握如何以管理员身份执行安装、更新和卸载操作,并了解一些高级设置技巧。
前置条件:确保你已经按照前几章的内容成功安装了 WinGet,并且对基本命令有所了解。
首先,我们需要以管理员身份打开 PowerShell 或命令提示符。右键点击开始菜单,选择“Windows 终端(管理员)”或“命令提示符(管理员)”。
whoami /groups这行命令用于确认当前用户是否具有管理员权限。如果看到 BUILTIN\Administrators 组,说明已经是管理员身份。
接着,我们来试试用管理员权限安装一个软件。这里以安装 Visual Studio Code 为例:
winget install Microsoft.VisualStudioCode这条命令会直接下载并安装最新版本的 Visual Studio Code。由于我们是以管理员身份运行的,所以不需要额外的确认步骤。
如果你遇到错误信息类似 Access denied 或 You need admin rights to perform this action.,请检查你的终端是否确实是以管理员身份运行。
有时候,在某些公司网络环境中可能会有策略限制普通用户的安装行为。这时你需要联系 IT 支持团队获取帮助。
完成上述步骤后,我们可以尝试更新已安装的应用程序到最新版本:
winget upgrade Microsoft.VisualStudioCode同样地,这个操作也需要管理员权限才能顺利进行。
最后,我们要学习一下如何更改 WinGet 的配置文件来适应不同的需求。打开默认编辑器中的 settings.json 文件:
winget settings在这个文件中你可以调整许多选项,比如更改源、设置代理服务器等。下面是一个简单的例子,展示如何添加一个新的源地址:
{
"source": {
"autoUpdateIntervalInMinutes": 3,
"sources": [
{
"name": "CustomRepo",
"arg": "https://custom-repo.example.com/api/v2/",
"type": "msix"
},
{
"name": "winget",
"arg": "https://winget.azureedge.net/cache",
"type": "default"
}
]
}
}保存修改后的文件并退出编辑器后,WinGet 将会从新的源位置查找软件包。
一个小例子:假设你在公司的内网环境中工作,并且有一个内部的软件仓库可以提供更快捷的安全更新路径。通过上述方法将该仓库添加为 Winget 的源之后,在执行 winget upgrade --all 更新所有应用程序时将会优先考虑来自内部仓库的新版本。
本章小结
- 学习了如何以管理员身份运行 PowerShell 并执行 WinGet 命令。
- 掌握了在管理员权限下进行软件安装和升级的方法。
- 了解了如何查看和编辑 WinGet 的配置文件以满足特定需求。
6. 常见问题排查与解决方案
本章要解决的问题是帮助你快速排查和解决使用 WinGet 过程中常见的问题,确保你能顺利地管理和维护你的软件包。
前置条件:你需要已经安装并配置好了 WinGet,并且熟悉基本的命令操作。
第一步操作:检查 WinGet 版本
winget --version这行命令会显示当前安装的 WinGet 版本号,确认你使用的是最新版本。
接着:如果遇到软件找不到的情况
winget search <软件名>例如:
winget search vscode这行命令会列出所有匹配的软件包信息,确认是否拼写正确或者是否存在该软件。
如果你遇到权限不足的问题 尝试以管理员身份打开 PowerShell 并重新运行之前的命令。右键点击开始菜单 -> Windows PowerShell(管理员) 或 Windows Terminal(管理员),然后再次执行安装或更新命令。
如果依然失败,可能需要修复 WinGet 包管理器:
Repair-WinGetPackageManager这条命令会自动检测并修复可能存在的问题。
一个小例子:假设你想安装 Visual Studio Code,但是输入 winget install vscode 后提示找不到该应用。首先确认拼写无误后,使用 winget search vscode 查看是否有正确的选项。如果有,则尝试完整 ID 安装:
winget install Microsoft.VisualStudioCode本章小结
- 学习了如何检查 WinGet 版本以确保是最新的。
- 掌握了排查软件找不到原因的方法。
- 了解了如何处理权限不足的问题以及如何修复 WinGet 包管理器。
7. WinGet 与其他包管理器对比:如何选择
本章要解决的问题是如何在不同的包管理器之间做出明智的选择。通过对比 WinGet 和其他常见的包管理器,你会明白各自的优缺点,并根据具体需求来决定使用哪个工具。
前置条件:你需要已经安装并熟悉基本使用的 WinGet。
我们先看看几个常用的包管理器有哪些:
| 包管理器 | 支持平台 | 主要优点 | 缺点 |
|---|---|---|---|
| WinGet | Windows | 简单易用,集成微软商店 | 可能不如 Linux 上的丰富 |
| Chocolatey | Windows | 非常丰富的软件库 | 需手动配置 |
| Scoop | Windows | 轻量级,支持便携式程序 | 更新频率可能较低 |
| APT | Debian/Ubuntu | 强大的依赖解析 | 对于非 Debian 系统用户不太友好 |
| YUM/DNF | CentOS/RHEL/Fedora | 适用于 Red Hat 生态系统 | 学习曲线较陡峭 |
第一步操作,查看 WinGet 的默认源:
winget source list这行命令会列出当前配置的所有软件源,默认情况下包括 msstore 和 winget。
接着,我们来看看 Chocolatey 如何列出已安装的软件:
choco list -lo这个命令会显示本地所有通过 Chocolatey 安装的软件包。
如果你遇到权限不足的问题,记得以管理员身份运行 PowerShell 或 Command Prompt。
一个小例子:假设你想安装 Node.js。你可以分别使用 WinGet 和 Chocolatey 来完成这个任务。 对于 WinGet:
winget install OpenJS.Nodejs.LTS对于 Chocolatey:
choco install nodejs-lts注意观察两个命令的结果和速度差异。
本章小结
- 对比了 WinGet、Chocolatey、Scoop、APT 和 YUM/DNF 的特点。
- 学习了如何查看不同包管理器中的已安装软件列表。
- 实践了在不同平台上安装同一个软件的过程。
常见问题
问题:如何解决“winget”不在系统路径中的问题?
解答:如果在安装后发现无法直接运行winget命令,可能是因为它没有被添加到系统的PATH环境变量中。可以通过以下步骤手动将其添加:
- 打开开始菜单,搜索并打开“环境变量”。
- 在弹出的窗口中,点击“编辑系统变量”,然后找到并选择“Path”变量,点击编辑。
- 点击“新建”,然后输入
winget可执行文件所在的目录路径,默认情况下是C:\Program Files\WindowsApps\<winget版本号>\。请注意,由于权限限制,你可能需要先复制该文件夹到一个非受保护的位置再进行操作。 - 完成上述设置后,重启命令提示符或PowerShell以使更改生效。
问题:我可以在Windows Server上使用WinGet吗?
解答:目前官方不支持在Windows Server 2019上使用WinGet,因为Microsoft Store在此版本服务器上不可用且缺少必要的更新依赖项。对于Windows Server 2022,则被认为是实验性支持,并且需要手动安装依赖项才能工作。
问题:如何通过PowerShell模块来管理软件包?
解答:你可以通过安装Microsoft.WinGet.Client PowerShell模块来实现对软件包的高级管理和查询功能。首先,在PowerShell中运行以下命令来安装模块:
Install-Module -Name Microsoft.WinGet.Client之后可以使用如下的cmdlets来进行各种操作:
- 搜索软件包:
Find-WinGetPackage -Query "<软件名称>" - 安装软件包:
Install-WinGetPackage -Id <软件ID> - 查看已安装的软件包列表:
Get-WinGetPackage - 更新指定的软件包:
Update-WinGetPackage -Id <软件ID> - 修复WinGet程序包管理器:
Repair-WinGetPackageManager
问题:为什么某些应用在使用WinGet时会要求管理员权限?
解答:当使用WinGet安装应用程序时,如果该应用需要更高的权限才能完成安装过程(例如修改系统级别的设置),那么将会触发用户账户控制(UAC)机制询问是否允许提升权限。此时可以选择接受以继续安装或者拒绝则会导致安装失败。为了安全起见,请确保只从可信来源获取和安装软件。
问题:WinGet与Chocolatey相比有哪些优势?
解答: 虽然两者都是用于Windows平台上的开源包管理工具,但它们之间存在一些差异:
集成度: WinGet作为微软官方推出的工具,已经深度集成到了Windows操作系统之中,并且随着新版本Windows的发布而不断改进和完善其功能特性;而Chocolatey则是由第三方开发维护的一个独立产品。
默认源: WinGet默认连接至微软商店以及社区贡献者维护的应用仓库获取可用的应用程序资源;相比之下Chocolatey主要依靠自己的社区构建索引来提供下载链接和服务。
兼容性: Chocolatey具有更广泛的跨平台支持能力,并能够处理更多类型的部署场景及需求;而WinGet现阶段专注于优化本地化体验和简化日常任务自动化流程。
总之,在大多数情况下如果你是在标准版Windows环境下寻找简单易用的一键式解决方案的话,推荐优先考虑内置支持的WinGet服务;而对于有特殊定制化需求或是希望获得更加灵活强大功能的朋友来说,则更适合尝试采用更为成熟的Chocolatey生态体系内的相关组件和技术栈。