客户端使用、安装与开发构建完全指南)
包管理器CLI【免费下载链接】winget-cliWinGet is the Windows Package Manager. This project includes a CLI (Command Line Interface), PowerShell modules, and a COM (Component Object Model) API (Application Programming Interface).项目地址https://gitcode.com/gh_mirrors/wi/winget-cli点击查看免费下载WinGet 是微软官方推出的 Windows 包管理器本文基于 winget-cli 仓库的 README.md 展开系统讲解客户端的核心概念、默认源机制、安装与升级渠道、PowerShell 模块用法、管理员权限注意事项以及从源码构建、调试和运行单元测试的完整流程。读完本文你将掌握 WinGet 的日常使用与故障排查方法并能基于本仓库自行编译出可用的wingetdev开发版客户端。WinGet 是什么一条命令管理你的软件环境Windows Package Manager的目标是帮助你快速、轻松地发现并安装那些让 PC 环境与众不同的软件包。借助它你只需一条命令即可完成软件的安装winget install package该命令从已配置的源Sources中检索软件包的元数据下载并执行安装程序。按 README.md 的定义源就是一组软件包的集合客户端围绕源这一抽象概念构建源提供了发现和获取软件包元数据的能力客户端据此完成查询、安装、升级、卸载等操作。客户端内置了两个默认源winget来自 Windows Package Manager 社区仓库 的软件包清单这是绝大多数开源与商业软件进入 WinGet 的主要渠道msstore来自 Microsoft Store 的软件包目前包含评级为E所有人的免费应用。此外你还可以自建私有源通过微软提供的 winget-cli-restsource 项目托管基于 REST 协议的软件包源适用于企业内网分发或需要对包列表完全可控的场景。[!NOTE] 组策略Group Policy可能会被配置并修改已配置的源。运行winget --info可以查看当前生效的策略配置。安装客户端系统要求与三种获取方式系统要求客户端当前要求Windows 10 1809build 17763、Windows 11、Windows Server 2025 或更高版本。Windows Server 2019 与 2022 可以通过解压.msixbundle的方式实验性运行官方不提供支持。由于对 IsWow64Process2 和 MSIX 的硬依赖客户端无法在 Windows Server Core 或早于 Windows 10 1809 的系统上运行。方式一Microsoft Store推荐WinGet 客户端随App Installer包分发。这是最推荐的方式安装 App Installer 后即可获得 WinGet且会跟随 Microsoft Store 自动更新始终保持在稳定版本。方式二开发版Pre-Release需要尝鲜新功能的开发者可通过以下任一渠道获取开发版本安装 Windows 10 或 Windows 11 的Insider版本从仓库Releases页面手动下载开发版构建使用 PowerShell 模块Microsoft.WinGet.Client中的Repair-WinGetPackageManagercmdlet并加上-IncludePrerelease参数。[!NOTE] 如果你从 GitHub 安装了最新 release并且已成功加入 Insider 计划那么在下一个开发版发布到 Microsoft Store 时你会自动收到更新。安装完成后可以执行winget features查看当前版本启用了哪些实验性功能。部分用户反馈过客户端不在 PATH 中的问题详见下文常见问题章节。方式三手动更新同一个 Microsoft Store 包也会发布在仓库的Releases页面。需要注意直接安装该包只会给你 WinGet 客户端不会启用 Microsoft Store 的自动更新——除非你已加入 Windows Package Manager Insider 计划。[!NOTE] 在较旧的 Windows 10 版本上如果遇到缺少框架包missing framework packages的错误可能需要先安装VC v14 Desktop Framework Package参见微软官方关于桌面桥框架包的安装与更新说明该问题通常只出现在较老的 Windows 10 构建上。安装问题排查如果安装或运行遇到问题请优先阅读仓库内的 故障排查指南其中涵盖了版本检查、常见错误码与对应的解决办法。PowerShell 模块以原生 cmdlet 驱动 WinGet仓库的src/PowerShell目录下维护着 Microsoft.WinGet.Client PowerShell 模块它为 Windows Package Manager 提供了一组原生 cmdlet使脚本化的安装、查询、升级与自修复成为可能。从 PowerShell Gallery 安装Install-Module -Name Microsoft.WinGet.Client安装后即可使用以下常用命令# 搜索软件包 Find-WinGetPackage -Query Visual Studio Code # 安装软件包 Install-WinGetPackage -Id Microsoft.VisualStudioCode # 列出已安装的软件包 Get-WinGetPackage # 更新软件包 Update-WinGetPackage -Id Microsoft.VisualStudioCode # 修复 WinGet 包管理器安装 Repair-WinGetPackageManager这些 cmdlet 都有对应的 C# 实现源码位于 src/PowerShell/Microsoft.WinGet.Client.Cmdlets/Cmdlets 目录例如Find-WinGetPackage对应 FindPackageCmdlet.cs其[Cmdlet(VerbsCommon.Find, Constants.WinGetNouns.Package)]特性声明了命令动词与名词并支持-Id、-Name、-Moniker、-Source、-Query、-Tag、-Command、-Count等筛选参数最终调用FinderPackageCommand.Find在配置的源中执行搜索Repair-WinGetPackageManager对应 RepairWinGetPackageManagerCmdlet.cs别名rpwgpm支持-AllUsers对所有用户修复需要管理员权限、-Force强制关闭正在运行的进程、-Version与-IncludePrerelease等参数通过WinGetPackageManagerCommand.Repair下载指定版本或最新版本含预发布的包完成修复。除上述示例外模块还提供Get-WinGetVersion、Get-WinGetSource/Add-WinGetSource/Remove-WinGetSource/Reset-WinGetSource、Export-WinGetPackage、Repair-WinGetPackage、Uninstall-WinGetPackage、Assert-WinGetPackageManager以及Get/Enable/Disable/Test/Set系列设置管理 cmdlet。更多信息可参阅模块在 PowerShell Gallery 的文档页面。管理员权限注意事项提权与 UACWinGet的行为会因是否以管理员权限运行而不同非管理员运行部分应用在安装时需要提权。安装程序运行时Windows 会弹出 UAC 提权提示如果你选择不提升权限应用将安装失败。管理员命令行运行不会看到提权提示。请始终谨慎对待以管理员身份运行的命令行窗口只安装你信任的应用。从源码构建客户端Build Your Own官方明确表示虽然自行构建的客户端功能上完全可用但在官方分发机制之外运行的客户端暂不提供完整支持。可以提交 Issue这里提炼核心步骤。前提条件Windows 10 180917763或更高版本已启用开发者模式Developer ModeVisual Studio 2026需包含以下工作负载.NET Desktop DevelopmentDesktop Development with CUniversal Windows Platform Development完整组件列表见仓库根目录的.vsconfig文件Windows SDK for Windows 1110.0.26100可通过winget install Microsoft.WindowsSDK.10.0.26100安装或在 Visual Studio 的获取工具和功能 单个组件中选择 Windows 10 SDK (10.0.26100.0)Microsoft Visual Studio Installer Projects 2022扩展兼容 Visual Studio 2026。构建步骤克隆本仓库在项目根目录下用仓库自带的配置清单配置开发环境必须在根目录执行以保证相对路径正确解析VS Communitywinget configure .config/configuration.wingetVS Professionalwinget configure .config/configuration.vsProfessional.wingetVS Enterprisewinget configure .config/configuration.vsEnterprise.winget在 VS 的 Developer Command Prompt / Developer PowerShell 中执行vcpkg integrate install一次性步骤。然后在 Visual Studio 中打开src\AppInstallerCLI.sln并构建。当前只支持通过解决方案构建命令行方式构建 VS 解决方案理论上同样可行。运行与调试构建完成后通过Build Deploy Solution部署解决方案即可在命令行使用wingetdev运行开发版客户端。若要启用单步调试在解决方案资源管理器中右键AppInstallerCLIPackage→ 属性 → 切到Debug标签页将 Application process 与 Background task process 的调试器类型改为Native Only即可设置断点并单步执行客户端主入口在 src/AppInstallerCLI/main.cpp其wmain直接调用WindowsPackageManagerCLIMain完成参数解析与命令分发。最推荐的调试方式是在 Debug 标签页选择Do not launch, but debug my code when it starts按F5启动调试会话然后在终端中执行wingetdev命令或运行任意调用 COM API 的 PowerShell 代码调试器会自动捕获。运行单元测试单元测试位于AppInstallerCLITests项目。解决方案构建后测试程序编译输出在src/架构/Debug|Release/AppInstallerCLITests目录下生成为AppInstallerCLITests.exe。直接执行即可运行全部测试查看全部选项请运行AppInstallerCLITests.exe --help。[!TIP] 只想运行某个特定测试时直接把测试名作为参数传给可执行文件即可例如AppInstallerCLITests.exe EnsureSortedErrorList。源码仓库构成与更多资料本仓库是WinGet 客户端源码仓库Client Repository包含用于构建客户端的全部源码。仓库鼓励开发者参与客户端开发Issues 中有大量 backlog 功能待实现可以投票、补充甚至认领一个开始开发。仓库还包含丰富的配套文档供深入阅读开发指南完整的构建、调试与测试流程故障排查常见问题与错误码处置设置文档winget settings的完整配置项说明版本发布路线图Windows Package Manager 的发布计划Release 说明 与 历史版本归档各版本变更记录功能规格文档包括 ZIP 支持、修复Repair支持、代理Proxy支持、设置命令、包固定Package Pinning、COM API 等数十份技术规格配置与清单 JSON Schema包含 settings、configuration、manifests 的 JSON Schema 定义。常见问题与错误码排查执行winget无任何输出没有输出通常意味着系统上的 WinGet 版本正在使用已退役的 CDNContent Delivery Network。用winget --info检查版本若版本低于 1.6.3482请按以下步骤处理安装最新版 WinGet任选其一通过 Microsoft Store 安装最新版 App Installer安装 GitHub Releases 中的 MSIX 包安装 https://aka.ms/getwinget 提供的 MSIX 包执行winget source update强制更新源。若仍无法解决请提交 Issue 并附带 Windows 版本与 App Installer 版本信息。执行winget不显示帮助在 CMD 中会报winget is not recognized as an internal or external command在 PowerShell 中会报The term winget is not recognized as the name of a cmdlet...或Program winget.exe failed to run: The file cannot be accessed by the system。按顺序排查以下原因App Installer 不包含 Windows Package Manager用Get-AppxPackage microsoft.desktopappinstaller确认 App Installer 版本大于 1.11.11451应用执行别名被禁用在应用 应用执行别名App execution aliases设置中启用 Windows Package Manager 的别名PATH 环境变量缺失将%userprofile%\AppData\Local\Microsoft\WindowsApps加入 PATH。可用%LOCALAPPDATA%\Microsoft\WindowsApps\wingetCMD或 $env:LOCALAPPDATA\Microsoft\WindowsApps\wingetPowerShell验证——若直接调用完整路径可运行而winget不行则几乎可以确定是 PATH 问题包未注册到当前用户应用默认按用户注册。若 App Installer 安装在另一个用户账户下需要在当前账户重新安装用Get-AppxPackage Microsoft.DesktopAppInstaller | Select Name, PackageFullName获取PackageFullName执行Add-AppxPackage -register C:\Program Files\WindowsApps\{PackageFullName}\appxmanifest.xml -DisableDevelopmentMode重新切换 winget 的应用执行别名App Installer 包损坏重置该包Windows 11Get-AppxPackage Microsoft.DesktopAppInstaller | Reset-AppxPackageWindows 10$Manifest (Get-AppxPackage Microsoft.DesktopAppInstaller).InstallLocation \appxmanifest.xml; Add-AppxPackage -DisableDevelopmentMode -Register $Manifest常见错误码错误码含义与处置0x80072efd网络相关对应ERROR_INTERNET_CANNOT_CONNECT可能与 TLS 有关。尝试启用 TLS 1.2或刷新 DNS 缓存ipconfig /flushdns0x801901a0与传递优化Delivery Optimization, DO相关。可在 WinGet 设置中加入network: {downloader: wininet}改用标准WININET库0x80d03002同样与 DO 相关处置方式同上network: {downloader: wininet}0x80070490安装某些 appxbundle 时报 Element not found。可尝试安装 KB5005565 更新并重启后重试其中network: {downloader: wininet}是winget settings网络下载器配置完整配置项可参考 doc/Settings.md。更新源失败Failed in attempting to update the source: wingetwinget 社区仓库源需要网络访问https://cdn.winget.microsoft.com/cache。根据 WinGet 版本会下载并安装source.msix或source2.msix——这是包含本地元数据副本的预索引包WinGet 查询时直接读取该本地副本。如果winget source update无法解决问题且你的 WinGet 为 1.10 或更新版本可以尝试卸载当前的 Windows Package Manager Source (winget) V2 源再运行任意 winget 命令使其重建或手动从https://cdn.winget.microsoft.com/cache/source2.msix安装该源若遇到 404可尝试使用无痕窗口下载。数据与遥测隐私说明winget.exe客户端内置了遥测埋点会向微软发送使用情况和诊断错误数据用于改进产品。以下两点值得注意自行构建的客户端不会启用遥测不会向微软发送任何数据客户端尊重机器级隐私设置用户可按微软 Windows 隐私声明选择退出也可通过winget settings显式禁用遥测。具体退出方式Windows 11设置隐私和安全性诊断和反馈诊断数据取消勾选发送可选诊断数据Windows 10设置隐私诊断和反馈选择所需诊断数据。更详细的隐私说明见仓库内的 PRIVACY.md。参与贡献项目欢迎任何贡献与建议。大多数贡献需要签署贡献者许可协议CLA声明你有权且确实授予项目使用你的贡献的权利。提交 Pull Request 时CLA 机器人会自动判断是否需要签署 CLA并按提示操作即可在所有使用 CLA 的仓库只需签署一次。项目还采用了微软开源行为准则Microsoft Open Source Code of Conduct。参与前请阅读 CONTRIBUTING.md。结语从一条winget install package命令到源码级的wingetdev调试WinGet 既面向普通用户提供了开箱即用的包管理体验也为开发者保留了完整的构建、测试与扩展路径。本文以 README.md 为主线结合 doc/Developing.md、doc/troubleshooting/README.md 与仓库源码为你梳理了从安装、使用、排错到二次开发的全链路知识。如果你正准备为企业环境批量部署、或想为客户端贡献新功能建议继续阅读 设置文档 与 功能规格文档 中的对应章节。赞分享包管理器CLI【免费下载链接】winget-cliWinGet is the Windows Package Manager. This project includes a CLI (Command Line Interface), PowerShell modules, and a COM (Component Object Model) API (Application Programming Interface).项目地址https://gitcode.com/gh_mirrors/wi/winget-cli点击查看免费下载相关推荐Windows平台酷安UWP客户端安装与使用完全指南Windows平台酷安UWP客户端安装与使用完全指南 在Windows系统上畅享酷安社区体验UWP应用为您带来全新的数码生活互动方式。本指南将详细解析从环境准社交TigerVNC Windows客户端安装及使用完整指南TigerVNC Windows客户端安装及使用完整指南 TigerVNC是一个高性能的开源远程桌面工具基于Virtual Network Computing网络桌面应用通信Windows NFS 4.1 客户端安装与使用指南Windows NFS 4.1 客户端安装与使用指南 项目概述 ms nfs41 client 是一个支持NFSv4.1协议和pNFS功能的Windows客户端存储网络驱动开发上一篇Fcitx5-android虚拟键盘定制指南从基础设置到高级主题下一篇VoxCPM语音合成API开发Python接口的高级应用技巧创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考