
1. 开篇为什么Windows用户都需要winget如果你还在用浏览器搜索软件官网、下载安装包、一路点击“下一步”的安装向导那你真的该认识一下winget了。winget是Windows官方的包管理器全称Windows Package Manager简单理解就是Windows的“应用商店命令行版”。你可以把它当成一个统一入口让你在终端里输入一条命令就能完成软件的搜索、下载、安装、升级和卸载。这个工具对于开发者和普通用户的价值都很直接装Python、装Git、装Docker、装VS Code以前要打开浏览器、找官网、挑镜像、走安装向导现在一行命令搞定。而且winget管的是真正的官方源不是第三方打包站安全性比你在搜索引擎里乱找安装包高出一个量级。这篇文章我不打算只复述微软的官方文档而是结合我自己在装winget、用winget过程中踩过的坑和摸索出来的经验把安装方式、验证方法、常见问题和进阶玩法都讲清楚。适合刚接触命令行的新手也适合想优化工作流程的老手。开始之前先说明一点winget本质上是一个命令行工具它的所有操作都围绕winget这个命令展开。所以读这篇文章时如果看到“在终端里执行以下命令”你需要在Windows Terminal、PowerShell或者CMD里操作这三者都可以。我个人强烈建议优先用Windows Terminal因为它的字体、配色和复制粘贴体验比CMD好太多后面我会顺便讲怎么用它。2. 动手前的准备工作2.1 确认系统版本和组件依赖winget不是所有Windows版本都能直接用的。它依赖两个底层组件一个是App Installer一个是微软商店应用框架。如果系统版本太老或者App Installer被精简掉了winget就装不上或者装上了也报错。从我的实测经验来看Windows 10 1809及以上版本、Windows 11全版本基本都没问题。Windows 10 1809以下的老系统建议先更新一下系统因为winget的很多内部API依赖新版系统组件。怎么快速确认系统版本按Win R输入winver回车弹窗里会显示详细的版本号。记住这里的版本号后面排查问题时会用到。确认系统版本之后再检查一下App Installer是否存在于系统中。打开“设置 - 应用 - 可选功能”在列表里找“应用安装程序”。如果你能看到它说明系统已经预置了基础组件后面装winget会顺利很多。如果找不到也不用慌后面的安装方法中会涉及如何手动补齐这个组件。这里有个容易踩的坑有些人会去网上下载所谓“万能版App Installer”或者“精简版winget”装完之后发现命令能用但一安装软件就提示“安装源配置损坏”或者“找不到包”。我之前也犯过这个错后来才发现原因是版本不匹配。所以我的建议很直接尽量走官方渠道安装winget别在第三方网站下打包好的exe尤其是那些来历不明的“绿色版”、“精简版”。2.2 准备工作提高安装成功率的小细节安装winget本身不难但有几个小细节会影响成败我在实操中吃过亏先列出来提醒你。第一关闭系统的“开发者模式”。这个听起来有点反常识但我在Windows 11上测试时发现开启开发者模式后有时候由于PowerShell执行策略的限制winget安装脚本反而会报错。如果你系统之前为了装WSL或者调试设备开启过开发者模式建议先临时关闭再执行安装。装好之后可以重新打开不影响使用。第二确保Windows更新服务没有被手动停用。winget安装过程中会调用ms-appinstaller协议这个协议依赖AppX部署服务。很多“优化过”的系统会把Windows Update相关服务设置为手动或者禁用这时候安装winget会卡在协议注册环节症状是安装进度条走到一半就闪退或者报0x800706D9错误。检查方式按Win R输入services.msc找到Windows Update服务确认启动类型是“自动”。如果是“禁用”改成自动并启动重启后再试。第三保证网络连接稳定。winget安装时无论走哪种方式都需要从微软官方服务器拉取文件国内网络环境下偶尔会超时。建议提前准备好一个稳定的网络方案否则容易在下载阶段反复失败。这个不展开讲懂的都懂。3. 三种主流安装方法详解winget有几种安装路径每种都有适用场景和坑点。我按照复杂度从低到高排列你可以根据自己的实际情况选择。3.1 方法一Microsoft Store安装新手最推荐这是最简单的办法。打开Microsoft Store搜索“App Installer”找到后点击安装。这个应用就是winget的载体装完它系统里自然就带了winget命令。如果你在Microsoft Store里搜索“App Installer”可能会看到两个条目一个是微软官方的“应用安装程序”另一个可能是第三方工具。认准发布者是Microsoft Corporation的那个图标是一个蓝色的窗口形图案不要装错。安装完成后不需要重启直接打开PowerShell运行winget --version能输出版本号说明已经就绪。如果没有输出大概率是系统环境变量还没刷新关掉终端重开就好。这个方案的优点是省心缺点是有些精简版的Windows把Microsoft Store整个移除了那就没有条件走这条路。另外Windows Server版本默认不带Microsoft Store所以服务器场景下这个方法直接不可用。这时候就得看方法二或方法三。3.2 方法二通过GitHub Release手动下载最通用如果系统没有Microsoft Store或者Store里怎么都搜不到App Installer那就走GitHub Release路线。winget的项目地址是microsoft/winget-cli官方会在GitHub上发布编译好的release版本。具体操作如下打开浏览器访问GitHub上microsoft/winget-cli的Release页面。找到最新版本的release展开Assets资源列表。下载名为winget.msixbundle的文件这是App Installer的安装包格式。下载完成后右键点击该文件选择“属性”在“数字签名”选项卡里确认签名者是Microsoft Corporation。双击运行系统会弹出安装界面按照提示完成安装。这里要提醒两点。第一winget.msixbundle是一个捆绑包里面包含不同架构的安装包所以体积会比单文件大一些这是正常的不要下载单个.appx文件那个不够完整。第二如果双击安装包提示“无法在你的设备上安装此应用”尝试在PowerShell中运行以下命令手动部署Add-AppxPackage -Path C:\下载路径\winget.msixbundle如果这条命令报错提示缺少依赖还要再一次检查App Installer的依赖组件比如Microsoft.VCLibs和Microsoft.UI.Xaml。这两个组件在Release页面里通常也有对应的下载链接一并安装就行。这个方法虽然略微麻烦但不受系统限制Windows 10 1809以上的几乎所有版本都能用包括Server版。我在Windows Server 2016上测试过不过Server 2016的版本太旧需要先安装新版VCLibs依赖否则Add-AppxPackage会直接失败。3.3 方法三官方脚本自动安装极客最爱微软官方提供了一个用于安装winget的脚本可以在PowerShell里直接运行。不过我提前说明这个脚本本身也不是万能的遇到老系统照样报错它的优势主要是自动处理依赖关系比手动下载更容易成功。执行方式如下右键开始菜单选择“终端(管理员)”或“Windows PowerShell(管理员)”。输入以下命令回车Invoke-WingetInstallCommand别急上面这条命令是我开玩笑的实际不存在这个命令。真实做法是需要先下载微软官方提供的安装脚本。推荐从官方文档或者GitHub仓库的tools/Install-Winget.ps1路径获取脚本内容然后本地执行。如果你觉得下载脚本有门槛还有一个更接地气的办法打开一个空的PowerShell窗口粘贴以下命令Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser这一步是放开当前用户的PowerShell脚本执行限制否则后续运行脚本会被系统拦截。执行时如果提示确认输入Y回车。接下来下载Install-Winget.ps1脚本到本地可以用Invoke-WebRequest也可以直接浏览器下载然后在脚本所在目录下执行.\Install-Winget.ps1脚本会自动检测系统版本、依赖组件并下载合适的winget版本进行安装。整个过程如果顺利大概两三分钟就能完成。我现在帮朋友装系统时统一用这种方法因为它对系统环境的感知能力比手动下载强能把缺的依赖一并补上。4. 安装后的验证与快速上手4.1 验证安装是否成功无论你用的是哪种方法装完之后第一件事就是验证。打开PowerShell或Windows Terminal执行winget --version正常情况下会输出版本号比如v1.9.25200之类的。如果这个命令报错说明安装没有成功或者命令行的环境变量没有被正确刷新可以关掉当前终端再开一个新的试试。如果新终端还是不行就需要检查一下环境变量PATH是否包含%LOCALAPPDATA%\Microsoft\WindowsApps因为应用安装程序默认安装在这个目录下。验证通过后可以顺手对winget做初始化配置。执行以下命令把默认安装源设置为微软官方仓库winget source update这一步会拉取最新的软件源信息。如果网络状况不好这个命令可能会失败但不用担心winget会将上一次成功同步的源缓存保留下来即便源更新失败后续搜索和安装功能也基本不受影响。4.2 换源操作解决下载慢问题这里必须说实话。winget在下载应用时消息来源是进入了CDN的不同网络环境下速度差异很大。有些朋友反馈说用winget安装软件时下载速度只有几十KB/s甚至直接超时。针对这个问题我实践下来最有效的是换源。winget支持配置第三方源其中国内的Mirror源是社区维护的比如winget-proxy之类的项目但使用前需要谨慎评估安全和更新及时性。因为winget的核心思考是安全和可信度换源相当于把信任边界扩大到了第三方所以我的建议是日常使用官方源只有在官方极致卡顿的时候才切换并且不要用来源不明的源。如果只是下载安装包速度慢还有一个更取巧的方案用winget搜索到软件后让winget输出软件下载链接然后用浏览器或下载工具下载安装包再手动安装。具体操作是winget show --id Python.Python.3.12结果显示的下载URL字段会给出官方安装包的直链。把链接丢给下载工具速度往往能拉满。这个方法虽然绕了一点但胜在稳定也能帮你在特定网络环境下节省大量时间。5. 常见问题排查实录5.1 命令不存在或无法识别症状输入winget提示“无法将“winget”项识别为 cmdlet、函数、脚本文件或可运行程序的名称”。这个问题的本质是系统找到了winget命令也可能没有但当前终端环境不知道去哪里找它。排查步骤从简单到复杂依次如下关掉当前终端窗口重新打开一个新的。PowerShell对新装的App包环境变量刷新不灵敏重开终端是最快的方法。检查环境变量PATH。按Win R输入sysdm.cpl打开“环境变量”在“用户变量”的Path里确认有%LOCALAPPDATA%\Microsoft\WindowsApps。如果没有手动添加后重启终端。检查App Installer是否真的装上了。在PowerShell里执行Get-AppxPackage Microsoft.DesktopAppInstaller输出里的Version字段不为空就说明已安装。如果为空说明安装过程其实失败了重新走一遍方法二或方法三。5.2 哈希校验失败与网络问题在运行winget install时有时候会在中途报错提示安装包的哈希值与预期不符。这个报错往往让新手一头雾水但实际上多半是因为网络下载过程中文件损坏或者是本地配置的镜像源返回了不同的文件。处理思路很明确先清空winget的下载缓存然后重新安装。清理命令是winget cache clean如果清理后还是报哈希错误把安装命令加一个--force参数试试强制忽略校验winget install --id Python.Python.3.12 --force这个方法只建议在确认下载文件无安全问题的前提下使用。因为哈希校验是防止安装包被篡改的重要机制你把它忽略了就等于把安全防线主动降了一级。如果软件来源清晰、网络环境可信可以临时绕过去。但如果反复出现哈希错误说明网络中间环节有问题这时候换个时间段再试往往能自愈。还有一个高频报错0x80072EFD。这个错误码对应的是网络连接失败。我实际遇到这个报错时大多是因为系统代理设置不对导致winget的连接请求被拦截。解决方式是检查系统代理设置或者临时关闭代理后再执行winget命令。关闭代理后winget访问官方源的直接速度未必最快但连接成功率会高很多。这个思路适用于所有Windows系统下工具连接不上官方服务器的场景。5.3 GitHub Release下载速度慢或中断有些系统没有Microsoft Store只能走GitHub Release。但GitHub的下载速度在国内网络环境下并不稳定msixbundle文件动辄几十MB下载到一半断线的情况我也见过多次。这里有一个实用技巧不要用浏览器直接下载GitHub的文件而是把下载链接复制到支持断点续传的下载工具里。方法是在GitHub的Release页面右键点击winget.msixbundle选择“复制链接地址”然后粘贴到下载工具中。这样即使下载中断也能从断点继续不用重新来过。下载完成后回到本地的PowerShell执行部署命令就可以后续步骤跟前面方法二一致。6. winget的进阶玩法与实操心得6.1 用winget批量安装软件只要winget顺利跑起来你就打开了新世界的大门。举个我日常用的场景每次给同事配新开发机以前至少要花半小时装各种基础软件现在把下面这段命令丢到终端里几分钟就完事winget install --id Git.Git -e winget install --id Microsoft.VisualStudioCode -e winget install --id Python.Python.3.12 -e winget install --id OpenJS.NodeJS -e winget install --id Docker.DockerDesktop -e--id参数指定软件唯一ID-e表示精确匹配这个名字避免搜到同名的其他工具。这样一条条命令跑下来每个软件都是静默安装模式不会再弹出一大堆“下一步”的向导窗口配合PowerShell的运算符还能实现“前一条成功才继续下一条”的链式操作winget install --id Git.Git -e winget install --id Microsoft.VisualStudioCode -e再进一步你还可以把常用软件列表写进一个配置文件然后用winget import命令批量恢复环境。具体做法是先用winget export导出当前已安装列表生成一个JSON文件保存下来。之后在任何一台新机器上执行winget import -i 文件路径就能把所有软件一次性装回去。这个功能对开发环境迁移来说特别实用我之前换新电脑时全靠它保住了全套工具链。当然也要提醒一点winget import并不是百分百能成功还原因为个别软件可能在源里不存在或者需要管理员权限交互。如果碰到个别失败的包用winget list检查一遍单独补装就行。6.2 维护软件更新避免版本碎片化用winget不只是能装软件它还能帮你做软件升级。日常维护时输入以下命令就能列出所有已安装且可用更新的软件winget upgrade看到列表后执行winget upgrade --all一键更新。这个功能对开发者特别友好比如你想用最新版的Node.js或者Python不用挨个去官网查版本winget直接推送更新。不过我建议不要对每天都要用的IDE工具开自动更新。因为有些软件的新版本会和现有插件不兼容我踩过一次坑某天顺手执行了upgrade --all把VS Code从1.88升到了1.89结果有个内网插件直接罢工后来回滚才恢复正常。从那以后我养成了一个习惯核心开发工具手动更新边缘小工具用--all批量更新。这个习惯从实际效果来看既省时间又稳妥。6.3 winget和WSL的配合既然热搜词里有windows安装wsl这里就顺便多说一句。winget不光能装Windows原生程序还能用来安装WSL发行版和Windows Terminal。比如winget install --id Microsoft.WindowsTerminal -e winget install --id Microsoft.WSL -eWSL装好后你再想装它里面的Linux软件就不是winget的管辖范围了需要用发行版自带的包管理器比如Ubuntu用apt。这两者一个管Windows侧一个管Linux侧配合起来就是一套完整的开发环境搭建组合拳。我之前搭过一个组合Windows端用winget装VS Code和Docker DesktopWSL里用apt装Node.js和Python再在VS Code里装个Remote-WSL插件直连子系统整个工作流非常顺畅。这套方案扛住了我半年的日常开发稳定性和效率都让人满意。6.4 我的踩坑经验总结最后把我这几年用winget攒下的经验集中发给你都是血泪教训。第一禁用第三方“绿色版软件”习惯。如果你用winget就意味着你有了官方软件源的权限没必要再去使用网上流传的精简版、破解版安全隐患是谁都兜不住的。第二安装失败时先看错误码再乱猜原因。winget的报错虽然看起来复杂但其实都有规律。0x800706D9是服务依赖缺失0x80072EFD是网络问题0x8E5E0503是Appx部署策略限制。记住这三个错误码基本能解决七成问题其余的问题用winget --verbose跑一遍它会打印完整日志能定位到具体请求失败的环节。第三别在生产服务器上乱跑winget upgrade --all。开发机上更新失败大不了回滚生产环境更新一个依赖组件引发连锁反应就不是开玩笑的事了。如果想在服务器上用winget建议单独挑一台测试机先试装一遍确认无影响再推广。第四也是最重要的一条不要什么都不看就直接装第三方源。winget给了你换源的能力但那把钥匙是开给“可信软件源”的不是让你随便接不可信源的。设置源的时候多留个心眼稍微花点时间检查一下源的提交记录和仓库活跃度总比日后电脑出问题再排查来得实在。