WinGet(Windows Package Manager)是微软开发的 Windows 包管理器,它提供了一个命令行界面(CLI),允许用户自动化地安装、配置、更新和卸载 Windows 软件包。这个工具旨在简化软件管理过程,使得开发者和系统管理员可以更高效地管理 Windows 系统上的软件。
使用 WinGet 安装和管理应用程序 | Microsoft Learn
winget(Windows Package Manager)完整解构
全称:Windows Package Manager CLI,winget.exe 归属:
Microsoft.DesktopAppInstaller(应用安装程序,MSIX/UWP 包),开源仓库:microsoft/winget‑cli 定位:微软官方 Windows 软件包管理器;元数据编排器,不存储软件二进制包;通过 YAML manifest 清单驱动,完成搜索、安装、升级、卸载、导出导入软件列表。 底层 C++ 实现;winget.exe 是 MSIX 包内部的命令行入口,不是传统 Win32 独立 exe。
一、底层原理
整体架构
CMD/PowerShell终端 → winget.exe(UWP包内CLI入口)
↓
WinGet客户端内核:源管理器、Manifest解析器、下载器、哈希校验、安装器编排层
↓
1. 源索引:本地SQLite索引库(source.msix解压得到index.db);过期自动从CDN拉取更新源索引
2. 网络层:HTTP客户端下载安装包;校验文件哈希、Authenticode签名
↓
调用系统原生安装器:MSI / EXE / MSIX / Appx / 便携包执行静默安装;winget本身不实现安装逻辑,仅调用厂商安装程序
↓
Windows安装程序API、MSIX框架、Windows Installer服务(msiexec.exe)
核心关键点:
- winget不内置脚本引擎,和 Chocolatey/Scoop 不同,不能执行自定义 powershell 脚本;行为完全受 YAML manifest 约束博客园。
- 搜索优先查询本地 SQLite 索引,search 不会实时联网;只有刷新源、下载安装包才访问外网 CDN
cdn.winget.microsoft.com。 - 默认两个源:
winget社区源(winget‑pkgs 仓库)、msstore微软商店源;支持自定义私有源博客园。
内部核心模块
- 源管理器 Source Manager 管理多软件源;下载
source.msix(zip 格式容器),解压得到 SQLiteindex.db;控制源缓存过期、刷新逻辑;支持公有源、企业私有源。 - Manifest 解析器 Manifest Parser 解析 YAML 清单:软件 ID、版本、下载 URL、SHA256 哈希、静默参数、依赖、架构、系统最低版本、签名要求。
- 下载 & 校验模块 Download‑Validator HTTP 下载安装包;校验文件 SHA256;校验 Authenticode 数字签名;防止包被篡改。
- 安装编排器 Install Orchestrator 根据 manifest 选择调用对应系统安装后端:
- MSI → 调用
msiexec.exe - EXE → 调用 exe 静默参数
- MSIX/Appx → 调用
AppxInstallerAPI - Portable 便携包 → 文件解压 + 环境变量注册
winget 只负责调用外部安装程序,不实现解压、注册表写入等业务逻辑。
- 升级 / 卸载模块 查询系统已安装程序(ARP 注册表、Appx 数据库),与 manifest 版本比对;调用原软件自带卸载逻辑。
- 设置模块 读取用户 JSON 配置
settings.json,控制代理、安装根目录、安全策略、网络行为。
完整业务链路示例:winget install Git.Git
终端执行 winget install Git.Git
↓
winget.exe启动,加载UWP AppInstaller运行时;读取本地index.db SQLite索引
↓
判断源索引是否过期;过期则从cdn.winget.microsoft.com下载source.msix更新本地缓存
↓
根据PackageId匹配,读取对应YAML manifest清单
↓
解析manifest,获取下载URL、sha256、静默安装参数
↓
HTTP下载安装包,校验SHA256哈希、Authenticode签名
↓
调用msiexec/exe执行静默安装;winget等待安装进程退出,捕获返回码
↓
返回安装成功/失败;记录日志;不修改系统注册表,注册表写入由安装包本身完成
生命周期
- 系统启动:winget 不驻留后台,每次执行都是短生命周期进程,执行完毕直接退出;无常驻服务。
- 首次运行:初始化本地缓存目录,生成 SQLite 索引数据库。
- 源刷新:后台自动更新 source.msix;也可手动
winget source update。 - 结束:进程退出;安装残留交给系统安装程序处理。
二、依赖文件、依赖关系
winget.exe 存在于 MSIX 包
Microsoft.DesktopAppInstaller内部,路径:C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_xxxx\winget.exe,不会出现在 System32 目录下。
| 组件 | 路径 / 说明 | 依赖关系 |
|---|---|---|
| winget.exe | WindowsApps 下 AppInstaller 包内部,CLI 入口 | UWP/MSIX 框架承载;不能单独复制 exe 运行,必须完整 MSIX 包 |
| Microsoft.DesktopAppInstaller | MSIX 包(App Installer,应用安装程序) | winget 的宿主;微软商店更新该包即更新 winget 客户端版本 |
| source.msix | CDN 下载的源索引压缩包;本地解压生成 index.db (SQLite 数据库) | 软件源元数据库;search 命令依赖此库 |
| index.db | %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\State\index.db |
SQLite 本地软件索引缓存 |
| settings.json | %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\settings.json |
winget 用户配置文件,JSON 格式 |
| msiexec.exe | C:\Windows\System32\msiexec.exe |
MSI 安装包后端,Windows Installer 服务 |
| Appx / MSIX Runtime | Windows AppX 框架 | 处理 msix/appx 类型软件安装 |
| WinHTTP 系统组件 | 系统 HTTP 栈 | winget 网络下载模块底层依赖 |
注册表依赖
- 无独立服务注册表,winget 无后台服务,进程即开即毁。
- 读取已安装软件:
- 传统桌面软件:读取 ARP 注册表:
HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall、HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall - MSIX/UWP 应用:读取系统 Appx 数据库。
- 传统桌面软件:读取 ARP 注册表:
- 企业组策略:
HKLM\Software\Policies\Microsoft\WindowsPackageManager,管控源、安全策略、允许 / 阻止包。
缓存目录
%LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\
├─ State\index.db # SQLite源索引
├─ Downloads\ # 安装包临时下载缓存
└─ settings.json # 用户配置
三、配套链、工具、交互入口
- winget 子命令
winget search / install / upgrade / uninstall / list / export / import / source / settings。 - Manifest 清单仓库
- 公共源:GitHub
microsoft/winget‑pkgs,存放全部 YAML 清单,不存放二进制安装包。 - 私有源:企业可自建私有源(Rest 源、本地目录源)。
- 组策略:Windows 组策略模板,管控 winget 源、包阻止、安全校验。
- 日志:
%LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\Logs\,记录下载、校验、安装返回码。 - 离线部署:服务器无 Store 环境,手动安装
Microsoft.DesktopAppInstaller.msixbundle以及依赖 MSIX 包。 - 配套工具:
wingetcreate:微软官方 manifest 清单生成工具;WinGet.RestSource:私有源服务端参考实现。
四、边界、限制、坑点
✅能力边界
- 元数据驱动,不托管二进制安装包;安装包从软件厂商官方 URL 下载。
- 支持 EXE/MSI/MSIX/Appx/Portable 便携包;支持用户 / 机器两种安装范围。
- 支持导出导入软件清单,实现机器环境脚本化部署。
- 支持公有源、企业私有源;支持组策略管控。
- 开源客户端,系统原生,无需第三方安装。
❌边界与高频误区
- winget 是 UWP MSIX 包内的工具,不是独立 exe;不能直接复制 winget.exe 到别的机器运行,必须完整部署 AppInstaller 包。
- 没有后台守护进程;每次执行都是独立进程;不自动后台轮询升级,
winget upgrade --all需要手动执行或脚本调度。 - 不执行自定义脚本:不能像 choco 一样写 powershell 脚本;所有行为受 manifest 约束;这是安全设计,同时降低灵活性博客园。
- UWP 沙盒网络限制:winget 运行在 AppContainer 沙盒,默认不能访问本机 127.0.0.1 本地代理;本机代理会导致 winget 网络异常,需要配置 Loopback 豁免。
winget upgrade能力依赖厂商安装程序:部分老旧 EXE 安装包没有版本检测逻辑,winget 无法识别升级,只能卸载重装。- 源索引本地缓存:search 查询本地 db;新提交到 github 的 manifest 不会立刻生效,需要等 CDN 编译分发 source.msix,客户端刷新源。
- 权限:安装机器级软件需要管理员权限;普通用户只能安装用户级软件。
- Windows Server 默认不带 Microsoft Store,需要手动离线部署 AppInstaller MSIX 包,才能获得 winget。
- winget 只做编排;安装失败绝大多数是原厂商安装程序返回错误码,不是 winget 本身故障。
典型故障现象
- “winget 不是内部或外部命令”:AppInstaller 版本过低或未安装 MSIX 包;
- 搜索正常,下载失败:沙盒无法使用本地代理,网络访问 CDN 失败;
- 安装报错 0x8a15000f:SQLite 索引数据库损坏,删除 LocalState 下 State 目录,让其重新生成索引;
- upgrade 不识别新版本:目标软件安装程序不支持版本比对,manifest 版本信息不匹配 ARP 注册表;
- 源刷新失败:网络无法访问cdn.winget.microsoft.com。
记忆链路: winget 是
Microsoft.DesktopAppInstaller(AppInstaller MSIX包)内部的 C++ 命令行客户端;本身无后台服务;依靠 CDN 下发source.msix+ 本地 SQLite 索引;YAML manifest 描述软件信息;winget 只负责下载校验、调用系统原生安装程序;不执行自定义脚本;运行在 AppContainer 沙盒,存在本地代理访问限制。
winget(Windows Package Manager)完整演进历程
一、前期铺垫:背景阶段(2018–2020 预研发)
核心背景
- 2019 Build 大会首次公布 Windows Package Manager 规划;
- 依赖底层组件:App Installer(微软商店安装框架)、MSIX 打包标准、WinRT 安装 API;
- 初期仅支持微软商店 MSIX 包,不兼容传统 exe/msi 桌面程序。
二、阶段 1:预览内测版 v0.1–v1.0(2020–2021,独立安装包)
发布形式
关键迭代功能
- v0.1 初代基础命令
仅实现核心四条:
search / show / install / list,仅支持 MSIX 商店应用;无卸载、升级、导出导入。 - v0.2–v0.4 兼容传统安装包
新增对 MSI、EXE、InnoSetup、WiX 桌面安装程序解析,支持静默安装参数,脱离微软商店限制;新增
uninstall / upgrade,基础软件生命周期闭环成型。 - v0.5 源管理
source命令支持自定义私有源,企业内网离线仓库落地基础;支持多源并行检索。 - v1.0 正式预览里程碑(2021 年末)
- 新增
export / import清单批量部署,标准化装机核心能力; - 新增
hash / validate清单校验、安装包哈希防篡改; - 完善全局代理、日志、无交互静默参数
--disable-interactivity; - 底层重构:独立
winget.exe二进制,不再强依赖商店前台 UI。
- 新增
阶段短板
pin 版本锁定、无 repair 修复、无 download 离线下载、无 DSC 配置管理,实验性功能多、稳定性差。三、阶段 2:系统原生预装 v1.1–v1.20(2022,Win11 22H2 / Server 2022 内置)
架构分水岭:系统内置,开箱即用
winget.exe,路径 C:\Windows\System32\winget.exe,无需手动安装;Win10 21H2 及以下仍需手动升级应用安装程序。重大新增能力
pin版本锁定命令生产环境核心功能:锁定软件固定版本,winget upgrade --all不会强制更新,规避新版兼容故障。download离线下载命令仅拉取安装包不执行安装,支撑内网离线装机场景,配套企业隔离环境。repair程序修复命令调用 MSI 修复接口、EXE 安装程序修复参数,解决注册表 / 文件缺失损坏问题。- 全局配置
settings图形面板可视化管理源、代理、安装默认行为、日志等级,替代手动改注册表。 - 完善
--proxy / --no-proxy单次代理参数,适配机房多网络切换脚本。
配套生态完善
四、阶段 3:企业自动化 / 标准化 v1.21–v1.29(2023–2026,截图当前版本 v1.29.280)
核心定位转变:从个人装机工具 → 企业服务器基线标准化工具
标志性新增命令(截图全部新增高级能力)
configure系统基线标准化读取配置文件统一部署软件、环境变量、注册表、服务配置,实现服务器零人工标准化部署。dscv3DSC v3 资源配套命令对接 Windows Desired State Configuration,域环境批量管控上千台服务器软件基线、合规状态。features实验性功能查看统一管理预览开关(自定义安装路径、多架构筛选、软件过滤规则等)。mcpMCP 协议交互接口开放标准化调用接口,支持 Ansible/PowerShell/ 第三方运维平台对接 winget 包库。
底层与运维优化迭代
- 日志体系升级:
--verbose-logs完整调试日志、--open-logs一键打开日志目录,安装故障深度排错; - 无交互模式强化:
--disable-interactivity彻底屏蔽弹窗,适配定时任务、远程批量脚本; - 源安全加固:私有源支持证书校验、签名校验,防止离线仓库篡改恶意安装包;
- 多架构自动匹配:自动识别 x86/x64/ARM64 系统,下载对应架构安装程序;
- 带宽 / 网络控制:单次执行独立代理,不污染全局系统代理配置。
截图版本特征(v1.29.280,2026 新版)
- 完整覆盖 19 条顶层子命令,包含全部企业级 DSC、configure、mcp 高级命令;
- 全局参数完备,支持代理控制、静默屏蔽、日志分级、等待窗口;
- 底层兼容 ReFS/NTFS 离线存储,完美适配之前 diskpart/robocopy 配套离线装机链路。
五、未来演进方向(v1.30+ 规划)
- 双向同步清单:支持导入导出时区分生产 / 测试环境软件集;
- 内置漏洞扫描:检索已安装包对应 CVE 漏洞,配套运维安全审计;
- 轻量化容器适配:Windows 容器内最小化 winget 部署;
- 云原生对接:Azure Arc 远程批量执行 winget 脚本,统一管控本地 + 云服务器;
- 双向同步卸载清单,支持批量回滚软件版本。
分阶段核心功能演进对照表
| 版本阶段 | 代表版本 | 里程碑新增命令 | 核心场景突破 |
|---|---|---|---|
| 预览内测 | v0.1~v1.0 | install / list / search / uninstall / export / import | 基础软件生命周期、单机批量装机 |
| 系统预装起步 | v1.1~v1.20 | pin / download / repair / settings | 生产版本锁定、内网离线装机、程序修复 |
| 企业标准化成熟 | v1.21~v1.29 | configure / dscv3 / features / mcp | 域批量基线、DSC 合规、第三方运维平台对接 |
底层架构同步演进(三大核心变革)
1. 程序载体演进
- v0.x:依附「应用安装程序」商店组件,无独立二进制;
- v1.0 后:独立
winget.exe可执行文件,System32 系统目录托管; - v1.20+:拆分独立 DLL 包解析引擎,轻量化加载,服务器内存占用大幅降低。
2. 安装包兼容演进
- 初代:仅 MSIX 微软商店应用;
- v0.4:兼容 MSI/EXE 传统桌面程序;
- v1.20+:支持脚本安装包、自定义静默参数、预 / 后置执行脚本。
3. 管理模型演进
- 个人单机模式:单台电脑手动执行命令;
- 批量清单模式:
export/import复制单机环境; - 企业 DSC 标准化模式:
configure/dscv3全域统一基线管控,状态持续校验修复。
winget 配套链同步演进(和你之前工具联动变化)
- diskpart:早期仅分区,新版配合
winget download挂载 VHD 离线存储,缓存安装包; - robocopy:v1.20+ 主流配套流程:winget download 下载包 → robocopy 同步至内网服务器离线源;
- PowerShell:v1.29 完善 CIM/WMI 远程调用,批量远程服务器执行 winget 升级、导出资产清单;
- VSS/vssadmin:服务器装机备份链路:VSS 快照整机备份 + winget export 导出软件资产清单,双维度灾备。
关键演进设计逻辑变迁
- 2020 预览期:补齐基础能力
目标:替代手动下载安装、第三方 Chocolatey,提供官方原生基础包管理;
- 2022 预装期:面向桌面运维
目标:普通用户、IT 桌面运维,批量标准化办公电脑软件;
- 2023–2026 企业成熟阶段:面向服务器 / 域 / 云运维
目标:机房批量服务器基线、合规审计、离线隔离内网、Azure 混合云统一管控,新增 DSC、configure、私有源安全能力;
- 未来云原生阶段:零信任、容器、远程统一运维
目标:打通本地机房与公有云 Windows 节点,实现全域软件资产统一管控、漏洞批量修复。
Windows Package Manager CLI winget.exe v1.29.280 完整更新细节
版本基础定位
- 基线:RC 候选发布版,基于 v1.29.250 迭代修复,2026 年 6 月正式推送微软商店,对应截图内置完整 19 条顶层命令(
configure/dscv3/mcp企业级命令全部就绪)。 - 分发载体:捆绑
Microsoft.AppInstaller(应用安装程序),Win11/Server2022 系统内置,Win10 通过商店升级获取;底层配套 NuGet 包Microsoft.WindowsPackageManager.InProcCom 1.29.280、工具库Microsoft.WindowsPackageManager.Utils 1.29.280同步更新。 - 核心定位:面向企业自动化、DSC 标准化、CI/CD 流水线、内网私有源运维专项优化,修复 v1.29 分支高危崩溃 Bug,补齐批量部署、离线装机、配置基线短板。
一、v1.29 全系列前置新增能力(v1.29.0~v1.29.250 通用新特性,280 版继承)
1. 源管理:实验性功能「源优先级排序 Source Prioritization」
- 功能:在
settings.json为多仓库分配数字权重,高权重源检索优先匹配,减少多个包匹配交互弹窗。 - 适用场景:企业同时配置官方公共源 + 内网私有源,优先匹配内部定制软件,避免商店包覆盖企业自研工具。
- 启用方式:
features命令开启实验开关,默认关闭不影响存量环境。
2. 批量导出 / 导入重大升级(运维核心改进)
winget export完整持久化自定义安装参数:--override、--custom静默安装参数写入 JSON 清单;winget import复刻全部自定义安装指令,新服务器一键还原完全一致的静默部署配置,无需手动记录安装参数。
3. 自动化流水线专用全局参数新增
--no-progress:完全屏蔽动态旋转进度条,消除日志解析乱码,适配 PowerShell、Jenkins、Ansible CI/CD 脚本;winget list支持排序参数--sort [name/version/source]、--ascending/--descending,排序规则可写入 settings 全局保存;- MCP 协议扩展增强:新增
upgradeable/upgradeOnly过滤参数,第三方运维平台、AI 自动化代理可精准筛选待升级软件。
4. 安装包选择底层逻辑重构
MSIX > MSI > EXE,优先选择系统原生无依赖安装包,降低卸载 / 修复异常概率。5. 终端视觉增强(实验)
sixel 图形渲染支持,winget list --details 在 Windows Terminal 展示软件图标,需在 settings 开启enableSixels。6. PowerShell 生态优化
GH_TOKEN/GITHUB_TOKEN,访问官方 winget-pkgs 仓库规避 GitHub 接口限流,CI/CD 部署脚本稳定性提升。二、v1.29.280 相对 v1.29.250 专属修复 / 细化更新(核心补丁)
1. 高危崩溃修复(最高优先级)
0x8000ffff 致命崩溃:同时启用实验「Resume 断点续装」功能 + --disable-interactivity 无交互静默安装时,进程直接闪退,批量自动化脚本中断问题彻底解决。
2. DSC v3 标准化配置全套修复(dscv3/configure 命令)
- DSC 导出逻辑修复:
winget configure export可完整导出管理员级全局 winget 设置,旧版丢失管理员权限配置项,基线部署不完整; - DSC
Microsoft.WinGet/Package资源适配installMode属性:严格遵循清单内silent/interactive安装模式,不再强制覆盖静默参数; - 标准流程权限校验修复:配置基线 elevate 提权校验逻辑优化,普通用户执行 configure 不会直接权限阻断,给出清晰权限提示。
3. 源管理命令逻辑修正
winget source reset 行为变更:重置默认内置源配置,不再直接删除官方源,旧版执行 reset 会清空公共仓库,导致无法检索软件,隔离内网运维场景痛点修复。4. 清单校验 validate 语法规则优化
.yaml/.YAML、.json/.JSON均可正常校验,消除大小写语法报错。5. 安装程序路径空格兼容修复
SignFile.exe、makeappx.exe 执行路径自动添加双引号包裹,安装包路径含空格、中文目录不会触发签名 / 打包失败,离线下载装机场景兼容提升。6. 底层文件 / 注册表操作容错优化
三、全局通用参数、顶层命令配套细节优化(对应截图帮助页全部指令)
1. 全局日志、代理体系细化调整
--verbose-logs调试日志新增 DCS 配置、源检索、MCP 接口完整调用堆栈,排错覆盖配置基线部署故障;--proxy / --no-proxy单次执行代理隔离逻辑加固,不会覆盖系统全局代理设置,机房多网络切换脚本无冲突;--open-logs日志目录路径适配多系统语言,中文系统路径不会乱码。
2. 批量运维类命令细节优化
download离线下载:多架构包自动匹配系统,ARM64/x64/x86 安装包分目录缓存,配合 diskpart 挂载 VHD、robocopy 同步内网源更稳定;pin版本锁定:锁定清单导出至 configure 基线,批量服务器统一锁定软件版本,规避新版兼容故障;repair修复命令:MSI 修复参数自动适配静默模式,搭配--disable-interactivity无弹窗修复损坏程序。
3. 导出 / 导入资产清单边界优化
- 排除系统内置商店预装应用逻辑细化,导出清单可配置过滤商店包,仅保留运维手动安装软件;
- 导入失败断点记录:中途安装失败时,已成功安装包不会重复执行,提升批量装机效率。
4. features 实验性功能管理完善
features可查看各开关启用 / 禁用对install/configure/mcp命令的影响,企业基线可标准化管控实验能力开关。四、底层内核 / COM 架构更新细节
- InProc COM 组件
Microsoft.WindowsPackageManager.InProcCom1.29.280 重构接口引用类型,由布尔可选参数改为IReference标准 Windows 接口,第三方 PowerShell 封装、Ansible 模块调用兼容性大幅提升; - 安装解析引擎内存泄漏修复:循环批量
install --all升级上千软件时,内存持续占用释放逻辑优化,长时间自动化脚本无内存溢出; - 本地化语言包修复:中文、多语言环境报错提示、帮助文档无乱码,截图内中文帮助文本渲染正常。
五、企业运维配套链联动优化(结合 diskpart/robocopy/PowerShell)
- 离线装机链路:
winget download空格路径兼容修复 → robocopy 同步内网源无报错; - 服务器标准化:
configureDSC 导出完整 winget 管理员配置,域控批量下发基线; - 定时任务脚本:修复
--disable-interactivity崩溃,schtasks 夜间批量升级稳定运行; - 资产审计:
list --sort有序输出导出 CSV,结合 PowerShell 生成软件资产台账、漏洞审计报表。
六、已知约束与版本兼容边界
- 升级覆盖规则:v1.29.280 RC 不会自动关闭已启用实验性功能,存量
source优先级、Resume断点安装配置保留; - 系统兼容:最低支持 Win10 21H2、Server2022,Windows 家庭版完整支持所有基础命令,DSC / 域批量管控仅专业版 / 服务器版可用;
- 不兼容场景:老旧 v0.x 自定义清单导入会触发格式警告,建议重新 export 生成新版 JSON 基线;
- 弱协议淘汰:不再兼容老旧 HTTP 无加密私有源,私有源强制 HTTPS 证书校验,安全加固升级。
七、关键更新价值总结(分场景)
- 自动化 CI/CD 运维:新增
--no-progress、修复无交互崩溃,无人值守脚本可靠性质变; - 企业标准化 DSC 基线:完整导出管理员配置、规范 installMode,全域服务器软件统一管控;
- 内网私有源运维:源优先级排序、source reset 逻辑修复,多源环境检索歧义弹窗大幅减少;
- 离线批量装机:路径空格兼容、导出保存自定义安装参数,机房模板机复刻环境零人工干预;
- 排错审计:增强详细日志、有序 list 输出、完整 DSC 配置导出,满足等保软件资产审计要求。
winget(Windows Package Manager)全场景应用落地指南
install/upgrade/import/export/configure/dscv3 全生命周期命令,覆盖桌面运维、服务器标准化、离线内网部署、CI/CD 自动化、合规资产审计、混合云域管控、容器基线七大核心场景,同时区分个人轻量使用与企业级批量运维方案。一、桌面终端标准化运维(IT 桌面运维 / 办公电脑批量装机)
场景需求
配套命令组合
- 模板机导出软件清单
winget export -o C:\office_standard.json --disable-interactivity
- 新电脑一键复刻全套软件
winget import C:\office_standard.json --disable-interactivity
- 全网终端一键批量升级所有软件
winget upgrade --all --disable-interactivity --nowarn
- 锁定核心办公软件版本,禁止自动更新(规避兼容故障)
winget pin add --id Adobe.Acrobat.Reader.64-bit
细分落地场景
- 政企办公电脑标准化预装:Office、浏览器、解压工具、输入法、PDF 阅读器;
- 学校机房、图书馆终端统一环境部署,下课自动清理冗余软件;
- 外勤笔记本远程批量更新运维工具、安全客户端。
核心优势
二、Windows 服务器基线标准化部署(机房物理 / 虚拟机运维)
场景需求
配套命令组合
configure基线配置:一键部署软件 + 环境变量 + 注册表 + 服务配置
winget configure .\server_baseline.winget --disable-interactivity
- DSC v3 域环境全域状态管控(
dscv3企业专属)
# 导出服务器标准基线DSC配置
winget configure export --output dsc_server_config.yaml
# 批量推送至域内所有服务器校验并修复基线偏差
winget dscv3 apply .\dsc_server_config.yaml
- 修复损坏的服务器运维工具
winget repair --id Git.Git --disable-interactivity
细分落地场景
- 机房 Web / 数据库 / 缓存服务器标准化初始化;
- AD 域批量管控数百台业务服务器软件合规基线;
- 灾备服务器、堡垒机统一部署安全审计工具。
核心优势
三、隔离内网 / 离线机房无外网部署(涉密内网、工业工控机房)
场景需求
完整配套链路(winget download + diskpart + robocopy)
- 外网机器批量下载所有需要的安装包
winget download --id Notepad++.Notepad++ -d D:\offline_packages --no-proxy
- robocopy 将离线安装包同步至内网文件服务器(私有源存储目录)
- 内网服务器添加自建私有源
winget source add --name InternalRepo https://192.168.1.100/winget
- 内网无交互批量安装,全程不访问外网
winget import D:\offline_manifest.json --source InternalRepo --disable-interactivity
细分落地场景
- 工厂工控产线内网服务器、上位机软件离线部署;
- 政府、金融涉密隔离机房标准化装机;
- 无互联网校园机房、医院内网终端批量部署。
核心优势
download 单独缓存安装包,支持搭建 HTTPS 私有源,完全脱离公网,搭配磁盘分区、文件同步工具形成闭环离线运维链。四、CI/CD 流水线自动化构建(开发流水线、自动化测试)
场景需求
流水线专用命令模板
# 无交互、屏蔽进度条、精简日志,适配流水线日志解析
winget install --id Python.Python.3.11 --disable-interactivity --no-progress --nowarn
# 构建前校验已安装依赖版本,导出软件资产用于构建审计
winget list --sort name --ascending | Out-File build_software_audit.log
# 构建完成卸载临时测试工具
winget uninstall --id Postman.Postman --disable-interactivity
细分落地场景
- 软件编译流水线自动预装编译工具、SDK、运行库;
- 自动化 UI 测试虚拟机动态部署浏览器、测试工具;
- GitHub Actions Windows runner 标准化依赖预装。
核心优势
--disable-interactivity,屏蔽弹窗、进度条、警告干扰流水线;MCP 协议可对接自动化平台,程序化调用包管理能力。五、软件资产合规审计与漏洞排查(政企等保、安全运维)
场景需求
审计配套命令
- 导出本机完整软件清单(可存档用于审计溯源)
winget export -o "20260712_server_asset.json"
# 纯文本可读清单,导出CSV做台账
winget list | Out-File audit_software_list.txt
- 检索全部存在可升级漏洞的软件(统一批量修复)
winget upgrade | Out-File vulnerable_software.txt
winget upgrade --all --disable-interactivity
- 锁定合规稳定版本,禁止高危新版自动安装
winget pin add --id NodeJS.NodeJS.LTS --version 18.17.0
细分落地场景
- 金融、政务单位月度软件资产台账归档;
- 安全运维批量扫描全网老旧高危软件统一升级;
- 涉密环境管控未授权软件安装,基线校验异常告警。
核心优势
六、混合云 / 远程批量运维(Azure Arc、异地多机房)
场景需求
远程批量执行方案
- PowerShell 远程批量执行升级
# 批量对域内所有服务器执行全量软件升级
Get-ADComputer | ForEach-Object {
Invoke-Command -ComputerName $_.Name -ScriptBlock {
winget upgrade --all --disable-interactivity
}
}
- Azure Arc 远程统一下发
configure基线配置,管控云上 + 本地 Windows 节点
细分落地场景
- 异地多分支门店服务器远程批量更新收银、监控工具;
- 公有云 Windows 虚拟机集群标准化基线部署;
- 跨地域混合机房统一软件资产审计。
核心优势
七、Windows 容器轻量化基线部署(Docker Windows 容器)
场景需求
Dockerfile 示例片段
FROM mcr.microsoft.com/windows/servercore:ltsc2022
# 容器内预装Git、7-Zip、Python
RUN winget install --id Git.Git -e --disable-interactivity
RUN winget install --id Python.Python.3.11 -e --disable-interactivity
# 固化容器软件基线清单,用于镜像审计
RUN winget export -o C:\container_software_baseline.json
细分落地场景
- CI/CD Windows 编译容器标准化依赖预装;
- 业务 Windows 容器统一部署监控、日志采集客户端;
- 轻量化测试容器快速搭建干净测试环境。
核心优势
八、个人开发者 / 轻量本地开发(单机开发环境一键搭建)
场景需求
极简模板
# 一键批量安装开发全套工具
winget install Microsoft.VisualStudioCode Git.Git Python.Python.3.12 NodeJS.NodeJS HeidiSQL.HeidiSQL --disable-interactivity
# 定期一键更新所有开发工具
winget upgrade --all
场景选型速查表
| 业务场景 | 核心 winget 命令 | 配套工具 / 服务 | 核心价值 |
|---|---|---|---|
| 办公电脑批量装机 | export / import |
任务计划程序、PowerShell | 一键复刻标准化软件环境 |
| 服务器基线合规管控 | configure / dscv3 |
AD 域、DSC 配置管理 | 全域统一基线,自动修复偏差 |
| 隔离内网离线部署 | download / source add |
diskpart、robocopy、IIS 私有源 | 无外网批量装机,离线缓存安装包 |
| CI/CD 自动化流水线 | install / list --no-progress |
Jenkins、GitHub Actions | 无弹窗干扰流水线,标准化构建依赖 |
| 等保软件资产审计 | export / upgrade |
PowerShell 报表导出 | 完整软件台账,批量修复漏洞 |
| 混合云远程批量运维 | 远程 PowerShell + upgrade/configure |
Azure Arc、AD 域控 | 本地 + 云服务器统一远程管控 |
| Windows 容器构建 | install(Dockerfile) |
Docker Windows 镜像 | 容器内轻量化预装开发 / 运维工具 |
| 开发单机快速搭环境 | install --all upgrade |
本地 PowerShell | 一行命令搭建全套开发栈 |
不适用场景边界
- Linux/macOS 系统:winget 仅原生支持 Windows 平台,无官方跨系统移植;
- 驱动固件、底层内核组件更新:仅管理应用层软件,不处理硬件驱动、BIOS 固件;
- 实时双向软件同步:仅单向批量部署基线,无实时双向同步、文件冲突处理能力;
- 超大规模百万级终端分布式管控:无内置分布式调度,需搭配 Ansible/Azure Arc 上层调度平台。

winget 帮助页完整解读(版本 v1.29.280,Windows 官方包管理器)
一、基础总览
- 全称:Windows Package Manager CLI(winget.exe),微软官方原生软件包管理工具,预装 Win11 21H2+/Server 2022,Win10 可手动安装应用安装程序配套组件。
- 标准语法
winget [<命令>] [<选项>]
- 执行入口:PowerShell/CMD,图中执行
winget -?输出顶层全局帮助;单个子命令可追加-?查看细分参数,如winget install -?。
二、全部子命令功能分类(按运维场景划分)
1. 软件安装 / 卸载 / 升级核心操作
| 命令 | 核心用途 | 典型运维场景 |
|---|---|---|
install |
安装指定软件包(ID / 名称 / 本地清单) | 批量服务器初始化、自动化装机脚本 |
upgrade |
检索并升级已安装软件 | 机房统一批量更新办公 / 运维工具 |
uninstall |
卸载指定软件 | 清理冗余预装程序、安全下线老旧组件 |
repair |
修复损坏的已安装程序 | 软件安装包缺失文件、注册表损坏修复 |
download |
仅下载安装包,不执行安装 | 内网离线装机,提前缓存安装介质 |
2. 包检索、信息查询、本地清单管理
| 命令 | 核心用途 | 典型运维场景 |
|---|---|---|
search |
检索源内软件包,模糊匹配名称 / ID | 查找软件完整包 ID、筛选可用版本 |
show |
展示单款软件详情:版本、依赖、许可证、安装参数 | 审计软件合规许可、查看静默安装参数 |
list |
列出本机全部已安装包、版本、更新状态 | 批量导出软件资产台账、漏洞排查 |
hash |
生成安装程序哈希校验值 | 自制离线清单,校验安装包完整性防篡改 |
validate |
验证自定义清单 manifest 语法合法性 | 编写自动化装机配置前校验文件 |
3. 批量导入导出、环境标准化(企业自动化核心)
| 命令 | 核心用途 | 典型运维场景 |
|---|---|---|
export |
将本机所有已安装软件导出 JSON 清单 | 模板机导出标准化装机配置 |
import |
读取 JSON 清单批量安装全部软件 | 新服务器一键复刻标准软件环境 |
configure |
按配置文件标准化系统状态(环境变量、软件、注册表) | DSC 标准化基线部署、合规加固 |
dscv3 |
DSC v3 资源专用命令 | 域环境批量服务器状态管控 |
4. 源、版本、锁定与系统配置
| 命令 | 核心用途 | 典型运维场景 |
|---|---|---|
source |
添加 / 删除 / 切换软件源(官方源 / 私有内网源) | 内网隔离环境搭建私有 winget 源,阻断外网访问 |
pin |
锁定软件版本,禁止自动 upgrade 升级 | 生产环境锁定稳定版本,规避新版兼容故障 |
settings |
打开图形化配置面板,管理代理、安装行为、实验功能 | 全局配置静默安装、网络代理、日志路径 |
features |
查看实验性功能开关状态 | 开启预览版新能力(如自定义安装路径) |
mcp |
MCP 协议交互信息(扩展生态) | 第三方工具对接 winget 包库 |
三、全局通用选项(图中 [-?] 下方全局参数,所有子命令均可附加)
| 参数 | 作用说明 | 运维实操价值 |
|---|---|---|
-v, --version |
输出 winget 工具自身版本 | 脚本校验目标主机工具版本兼容性 |
--info |
输出工具运行环境、源、系统信息 | 排错时快速查看代理、源配置、权限状态 |
-?, --help |
输出当前命令帮助文档 | 查看子命令细分参数 |
--wait |
执行完毕后暂停,按任意键退出 | 批量脚本执行后留存窗口查看报错 |
--logs, --open-logs |
直接打开 winget 默认日志目录 | 安装失败排查,读取完整执行日志 |
--verbose-logs |
开启超详细调试日志 | 安装异常深度排错,捕获网络 / 注册表报错 |
--nowarn, --ignore-warnings |
屏蔽警告输出,仅保留错误 | 自动化脚本精简日志输出 |
--disable-interactivity |
完全禁用交互式弹窗、输入提示 | 无人值守脚本必备,防止弹窗阻塞任务 |
--proxy |
单次执行指定 HTTP/HTTPS 代理 | 临时切换代理下载外网软件 |
--no-proxy |
本次执行强制不使用全局代理 | 内网私有源下载时绕过代理链路 |
四、底层配套链(winget 完整运维闭环依赖组件)
- 系统服务 / API
AppX 安装框架、MSIX/EXE/MSI 安装器兼容层、Windows 注册表管理 API;
- 配套脚本工具
PowerShell:批量 export/import 标准化装机、远程服务器批量执行 winget;
- 私有源配套
IIS/Nginx 静态文件服务器:搭建内网离线 winget 源,
source add接入; - 合规审计配套
findstr/PowerShell 解析 export 导出的 JSON 清单,生成软件资产报表; - 配置管理配套
DSC PowerShell 资源、
configure标准化基线文件,域控批量下发软件策略。
五、生产级特殊 / 另类实操示例
示例 1:模板机导出软件清单,新服务器一键复刻环境
# 模板机导出全部软件清单
winget export -o C:\std_server_apps.json
# 新服务器离线批量安装清单内所有软件
winget import C:\std_server_apps.json --disable-interactivity
示例 2:内网隔离环境,仅下载安装包不安装(离线装机)
winget download --id Git.Git -d D:\OfflineInstaller --no-proxy
示例 3:锁定生产软件版本,禁止自动升级
# 锁定指定包,upgrade 不会更新此程序
winget pin add --id Oracle.VirtualBox
# 查看全部锁定包
winget pin list
示例 4:全局临时代理下载外网软件,脚本无交互静默安装
winget install Mozilla.Firefox --proxy http://192.168.1.100:8080 --disable-interactivity
示例 5:批量检索可升级软件并一键全量更新
# 查看可升级列表
winget upgrade
# 全部静默升级所有可更新软件
winget upgrade --all --disable-interactivity
示例 6:校验自制离线安装清单语法
winget validate C:\custom_manifest.json
示例 7:排查安装报错,开启详细日志并自动打开日志文件夹
winget install Notepad++.Notepad++ --verbose-logs --open-logs
六、与你之前查询工具的定位区分
- robocopy:文件同步 / 备份工具,专注磁盘文件迁移;
- diskpart:磁盘分区、VSS 快照存储底层磁盘管理;
- vssadmin:卷影副本快照备份配套;
- winget:应用程序包管理器,专注 Windows 软件安装、版本管控、批量标准化部署,无磁盘文件操作能力。
⚠️ 关键约束说明
- 权限:修改系统软件、全局源配置、安装机器级程序必须管理员 PowerShell;
- 网络:默认访问微软官方公共源
cdn.winget.microsoft.com,隔离内网需自建私有源; - 系统限制:Windows 家庭版功能完整,但域环境 DSC / 批量管控仅专业版 / 服务器版支持;
- 安装兼容:同时支持 MSIX、MSI、EXE、InnoSetup、WiX 等主流安装包格式。

C:\Users\Administrator>winget -?
Windows 程序包管理器 v1.11.510
版权所有 (C) Microsoft Corporation。保留所有权利。
WinGet 命令行实用工具可从命令行安装应用程序和其他程序包。
使用情况: winget [<命令>] [<选项>]
下列命令有效:
winget install 安装给定的程序包
winget show 显示包的相关信息
winget source 管理程序包的来源
winget search 查找并显示程序包的基本信息
winget list 显示已安装的程序包
winget upgrade 显示并执行可用升级
winget uninstall 卸载给定的程序包
winget hash 哈希安装程序的帮助程序
winget validate 验证清单文件
winget settings 打开设置或设置管理员设置
winget features 显示实验性功能的状态
winget export 导出已安装程序包的列表
winget import 安装文件中的所有程序包
winget pin 管理包钉
winget configure 将系统配置为所需状态
winget download 从给定的程序包下载安装程序
winget repair 修复所选包
winget dscv3 DSC v3 资源命令
如需特定命令的更多详细信息,请向其传递帮助参数。 [-?]
下列选项可用:
-v,--version 显示工具的版本
--info 显示工具的常规信息

C:\Users\Administrator>winget --info
Windows 程序包管理器 v1.11.510
版权所有 (C) Microsoft Corporation。保留所有权利。
Windows: Windows.Server v10.0.26100.6584
系统体系结构: X64
软件包: Microsoft.DesktopAppInstaller v1.26.510.0
Winget 目录
-------------------------------------------------------------------------------------------------------------------
日志 %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir
用户设置 %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\settings.json
可移植链接目录(用户) %LOCALAPPDATA%\Microsoft\WinGet\Links
可移植链接目录(计算机) C:\Program Files\WinGet\Links
可移植包根目录(用户) %LOCALAPPDATA%\Microsoft\WinGet\Packages
可移植包根目录 C:\Program Files\WinGet\Packages
可移植包根目录 (x86) C:\Program Files (x86)\WinGet\Packages
安装程序下载 %USERPROFILE%\Downloads
配置模块 %LOCALAPPDATA%\Microsoft\WinGet\Configuration\Modules
链接
----------------------------------------------------------------------------
隐私声明 https://aka.ms/winget-privacy
许可协议 https://aka.ms/winget-license
第三方声明 https://aka.ms/winget-3rdPartyNotice
主页 https://aka.ms/winget
Windows 应用商店条款 https://www.microsoft.com/en-us/storedocs/terms-of-sale
管理员设置 状态
------------------------------------------------
LocalManifestFiles 已禁用
BypassCertificatePinningForMicrosoftStore 已禁用
InstallerHashOverride 已禁用
LocalArchiveMalwareScanOverride 已禁用
ProxyCommandLineOptions 已禁用
DefaultProxy 已禁用
-?,--help 显示选定命令的帮助信息
--wait 提示用户在退出前按任意键
--logs,--open-logs 打开默认日志位置
--verbose,--verbose-logs 启用 WinGet 的详细日志记录
--nowarn,--ignore-warnings 禁止显示警告输出
--disable-interactivity 禁用交互式提示
--proxy 设置要用于此执行的代理
--no-proxy 禁止对此执行使用代理
可在此找到更多帮助: "https://aka.ms/winget-command-help"
| 命令 | 参数 | 描述 | 应用场景 | 示例 |
|---|---|---|---|---|
WinGet install |
<package> |
安装给定的程序包 | 安装新的软件或应用 | WinGet install vscode(安装 Visual Studio Code) |
WinGet show |
<package> |
显示包的相关信息 | 查看软件包的版本、描述等信息 | WinGet show nodejs(查看 Node.js 的相关信息) |
WinGet source |
<action> |
管理程序包的来源 | 添加、删除、列出程序包源 | WinGet source add <source_url>(添加源) |
WinGet search |
<query> |
查找并显示程序包的基本信息 | 搜索特定的软件包 | WinGet search python(查找与 Python 相关的包) |
WinGet list |
显示已安装的程序包 | 查看系统中已安装的软件包列表 | WinGet list(列出所有已安装的程序包) |
|
WinGet upgrade |
显示并执行可用升级 | 升级系统中已安装的程序包 | WinGet upgrade(升级所有已安装的软件包) |
|
WinGet uninstall |
<package> |
卸载给定的程序包 | 删除不需要的已安装软件包 | WinGet uninstall firefox(卸载 Firefox) |
WinGet hash |
<file> |
哈希安装程序的帮助程序 | 用于验证文件的完整性 | WinGet hash C:\path\to\file.exe(验证文件完整性) |
WinGet validate |
<file> |
验证清单文件 | 确保清单文件格式正确 | WinGet validate mylist.yaml(验证清单文件) |
WinGet settings |
打开设置或设置管理员设置 | 配置 WinGet 设置 | WinGet settings(打开 WinGet 设置界面) |
|
WinGet features |
显示实验性功能的状态 | 查看和管理实验性功能 | WinGet features(查看实验性功能状态) |
|
WinGet export |
导出已安装程序包的列表 | 生成已安装软件包的备份列表 | WinGet export > installed_packages.txt(导出列表) |
|
WinGet import |
<file> |
安装文件中的所有程序包 | 从文件中安装一系列程序包 | WinGet import mylist.txt(从文件中安装程序包) |
WinGet pin |
<package> |
管理包钉 | 固定或取消固定已安装的程序包 | WinGet pin vscode(固定 Visual Studio Code) |
WinGet configure |
<action> |
将系统配置为所需状态 | 配置系统或特定程序包的状态 | WinGet configure <desired_config>(配置系统状态) |
WinGet download |
<package> |
从给定的程序包下载安装程序 | 下载程序包的安装程序 | WinGet download nodejs(下载 Node.js 的安装程序) |
如需特定命令的更多详细信息,请向其传递帮助参数。 [-?]
下列选项可用:
WinGet -v,--version 显示工具的版本
WinGet --info 显示工具的常规信息
WinGet -?,--help 显示选定命令的帮助信息
WinGet --wait 提示用户在退出前按任意键
WinGet --logs,--open-logs 打开默认日志位置
WinGet --verbose,--verbose-logs 启用 WinGet 的详细日志记录
WinGet --disable-interactivity 禁用交互式提示
可在此找到更多帮助: "https://aka.ms/winget-command-help"

C:\Users\Administrator>winget upgrade -?
Windows 程序包管理器 v1.11.510
版权所有 (C) Microsoft Corporation。保留所有权利。
升级通过搜索已安装的包列表或直接从清单中找到的所选包。默认情况下,查询必须以不区分大小写方式匹配包的 ID、名称或名字对象。可通过传递相应的选项来使用其他字段。如果未提供参数,则显示具有可用升级的包
使用情况: winget upgrade [[-q] <query>...] [<选项>]
以下命令别名可用:
update
以下参数可用:
-q,--query 用于搜索程序包的查询
下列选项可用:
-m,--manifest 程序包清单的路径
--id 按 id 筛选结果
--name 按名称筛选结果
--moniker 按名字对象筛选结果
-v,--version 使用指定的版本;默认为最新版本
-s,--source 使用指定的源查找程序包
-e,--exact 使用精确匹配查找程序包
-i,--interactive 请求交互式安装;可能需要用户输入
-h,--silent 请求无提示安装
--purge 删除包目录中的所有文件和目录(可移植)
-o,--log 日志位置(如果支持)
--custom 除默认值外,参数传递到安装程序
--override 覆盖待传递的参数至安装程序
-l,--location 要安装到的位置(如支持)
--scope 选择已安装的程序包范围筛选器 (user 或 machine)
-a,--architecture 选择体系结构
--installer-type 选择安装程序类型
--locale 要使用的区域设置(BCP47 格式)
--ignore-security-hash 忽略安装程序哈希检查失败
--allow-reboot 如果适用,允许重启
--skip-dependencies 跳过处理包依赖项和 Windows 功能
--ignore-local-archive-malware-scan 忽略在从本地清单安装存档类型包时执行的恶意软件扫描
--accept-package-agreements 接受包的所有许可协议
--accept-source-agreements 在源操作期间接受所有源协议
--header 可选的 Windows-Package-Manager REST 源 HTTP 标头
--authentication-mode 指定身份验证窗口首选项(silent、silentPreferred 或 interactive)
--authentication-account 指定用于身份验证的帐户
-r,--recurse,--all 如果可用,将所有已安装的程序包更新为最新版本
-u,--unknown,--include-unknown 即使无法确定其当前版本,也可升级包
--pinned,--include-pinned 即使程序包拥有非阻止性包钉,也要升级程序包
--uninstall-previous 升级期间卸载以前版本的程序包
--force 直接运行命令并继续处理与安全无关的问题
-?,--help 显示选定命令的帮助信息
--wait 提示用户在退出前按任意键
--logs,--open-logs 打开默认日志位置
--verbose,--verbose-logs 启用 WinGet 的详细日志记录
--nowarn,--ignore-warnings 禁止显示警告输出
--disable-interactivity 禁用交互式提示
--proxy 设置要用于此执行的代理
--no-proxy 禁止对此执行使用代理
可在此找到更多帮助: "https://aka.ms/winget-command-upgrade"
"C:\Users\Administrator\AppData\Local\Temp\WinGet" "C:\Users\Administrator\AppData\Local\Temp\WinGet\cache\V2_M\Microsoft.Winget.Source_8wekyb3d8bbwe" "C:\Users\Administrator\AppData\Local\Temp\WinGet\cache\V2_PVD\Microsoft.Winget.Source_8wekyb3d8bbwe" "C:\Program Files\WindowsApps\Microsoft.Winget.Source_2025.915.1811.3_neutral__8wekyb3d8bbwe" "C:\ProgramData\Microsoft\Windows\AppRepository\Packages\Microsoft.Winget.Source_2025.915.1811.3_neutral__8wekyb3d8bbwe" "C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_1.26.430.0_neutral_split.scale-125_8wekyb3d8bbwe\Assets\WinGet" "C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_1.26.430.0_neutral_split.scale-100_8wekyb3d8bbwe\Assets\WinGet" "C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_1.26.430.0_x64__8wekyb3d8bbwe\Assets\WinGet" "C:\Users\Administrator\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\Microsoft.Winget.Source_8wekyb3d8bbwe" "C:\Users\Administrator\AppData\Local\Packages\Microsoft.Winget.Source_8wekyb3d8bbwe" "C:\Users\Administrator\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir\WinGet-2025-09-16-02-16-37.578.log" "C:\ProgramData\Microsoft\Windows\AppRepository\Microsoft.Winget.Source_2025.915.1811.3_neutral__8wekyb3d8bbwe.xml" "C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\winget.exe" "C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps\winget.exe" "C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_1.26.430.0_x64__8wekyb3d8bbwe\winget.exe" "C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_1.26.430.0_x64__8wekyb3d8bbwe\microsoft.winget.package.dsc.resource.json" "C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_1.26.430.0_x64__8wekyb3d8bbwe\microsoft.winget.source.dsc.resource.json" "C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_1.26.430.0_x64__8wekyb3d8bbwe\microsoft.winget.user-settings-file.dsc.resource.json" "C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_1.26.430.0_x64__8wekyb3d8bbwe\microsoft.winget.admin-settings.dsc.resource.json"
这些路径列出了与 WinGet 相关的文件夹和日志文件,WinGet 是一个 Windows 包管理工具,通常用于从命令行安装、升级和管理 Windows 应用程序。以下是对这些路径的一些描述和可能的应用场景:
1. WinGet 日志文件:
- 路径如:
"C:\Users\Administrator\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir\WinGet-2025-09-13-18-35-44.390.log" - 描述:这些是 WinGet 工具生成的日志文件,记录了安装、更新或管理应用时的详细信息。
- 应用场景:用于调试 WinGet 的操作问题,查看安装和升级过程中的错误或警告信息。
2. WinGet 缓存目录:
- 路径如:
"C:\Users\Administrator\AppData\Local\Temp\WinGet\cache\V2_M\Microsoft.Winget.Source_8wekyb3d8bbwe" - 描述:缓存文件夹用于存储从 WinGet 安装过程中下载的应用程序源数据和其他必要的临时文件。
- 应用场景:提高安装效率,防止重复下载应用程序文件,适用于多次安装相同应用时。
3. WinGet 安装文件夹:
- 路径如:
"C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_1.26.430.0_x64__8wekyb3d8bbwe\winget.exe" - 描述:这是 WinGet 的主可执行文件(
winget.exe),用于通过命令行界面管理 Windows 应用程序。 - 应用场景:可用于从命令行安装、卸载、查询、更新 Windows 应用,适合开发者和高级用户。
4. WinGet 配置文件:
- 路径如:
"C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_1.26.430.0_x64__8wekyb3d8bbwe\microsoft.winget.package.dsc.resource.json" - 描述:这些是 WinGet 的配置文件,包含关于应用包的信息,如源、版本、依赖关系等。
- 应用场景:可以用于管理应用程序源和设置,例如配置默认的应用源。
5. WinGet 源文件夹:
- 路径如:
"C:\Users\Administrator\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\Microsoft.Winget.Source_8wekyb3d8bbwe" - 描述:包含 WinGet 使用的应用程序源数据。
- 应用场景:管理和查看源文件,调整安装时所用的应用源设置。
这些路径涉及 WinGet 的日志、缓存、执行文件和配置文件。它们主要用于调试、管理安装源、执行包管理任务和缓存数据,适用于 IT 专业人员、开发者以及需要从命令行操作 Windows 应用的高级用户。
自建一个 WinGet 源服务器。WinGet 允许您使用自定义的源来管理应用程序,这对于企业或个人的特殊需求非常有用。自建源服务器的步骤大致如下:
1. 准备工作:
- 服务器环境:您需要一个可以托管源文件的服务器,可以是本地服务器或者云服务器。
- 应用包:您需要准备好 WinGet 支持的
.appxbundle或.msix等格式的应用包。 - WinGet 配置文件:每个应用源都需要一个描述文件,通常是一个
.json文件,里面包含了包的信息,比如应用的名字、版本、依赖关系等。
2. 创建自定义源:
- 在服务器上创建一个目录来存放应用包和相关的描述文件。
- 每个应用包需要一个对应的
.json文件,其中包含应用的详细信息。这个文件结构通常如下:json{ "PackageIdentifier": "com.example.app", "PackageVersion": "1.0.0", "PackageUrl": "http://server/path/to/package.appxbundle", "PackageType": "msix" } - 创建源文件夹时,可以使用任何 Web 服务器(如 Nginx 或 Apache)来托管文件,确保这些文件能被访问到。
3. 配置源:
- 使用
winget命令将自建的源添加到本地。可以通过以下命令来添加:bash
例如:winget source add --name <source_name> --url <source_url>bashwinget source add --name "MySource" --url "http://myserver.com/winget/source"
4. 管理和更新源:
- 通过命令来检查和更新源:
bash
winget source update - 如果您更新了应用包或描述文件,可以手动上传新版本文件,并使用上述命令更新源。
5. 自动化与管理:
- 对于大规模的管理,您可能需要使用脚本来自动化更新和上传应用包的过程,确保源的及时更新。
6. 验证和测试:
- 通过以下命令来测试源是否成功添加并能够使用:
bash
winget search <package_name> --source <source_name>
自建 WinGet 源的优势在于能够控制哪些应用程序可以通过 winget 管理,并且能够提供定制化的应用版本和配置,适合企业环境中的软件分发需求。
winget upgrade 命令及其参数、选项的分类和表格化展示,具有更精确的颗粒度,便于深入理解每个功能的用途。通过细化每个分类名称和子类,我们可以清晰地看到每个命令和选项所对应的功能。
winget upgrade 命令及其参数、选项(更精细分类)
| 类别 | 子类别 | 选项 | 描述 | 示例/值 |
|---|---|---|---|---|
| 基本命令 | winget upgrade |
更新已安装的程序包 | ||
winget update |
winget upgrade 的别名,执行相同操作 |
|||
| 查询与筛选 | 包查询 | -q, --query |
搜索并列出符合条件的程序包 | <query> |
--id |
按程序包的 ID 筛选结果 | <id> |
||
--name |
按程序包名称筛选结果 | <name> |
||
--moniker |
按程序包对象名称(别名)筛选结果 | <moniker> |
||
| 版本控制 | 版本指定 | -v, --version |
指定升级至的程序包版本(默认为最新版本) | <version> |
-a, --architecture |
指定程序包的体系结构(如 x86, x64, arm) |
<architecture> |
||
| 源与仓库 | 源选择 | -s, --source |
指定使用的源(可以选择官方源或自定义源) | <source> |
--locale |
设置程序包的区域设置(BCP47 格式) | <locale> |
||
| 交互与安装控制 | 安装模式 | -i, --interactive |
允许用户交互式安装(可能需要用户输入) | true/false |
-h, --silent |
启用无提示安装模式 | true/false |
||
--allow-reboot |
如果适用,允许系统在安装后重启 | true/false |
||
--disable-interactivity |
禁用所有交互式提示 | true/false |
||
--force |
强制执行命令,忽略潜在的安全警告 | true/false |
||
| 依赖与安装细节 | 依赖项处理 | --skip-dependencies |
跳过程序包的依赖项和 Windows 功能的处理 | true/false |
--ignore-local-archive-malware-scan |
忽略本地清单安装时的恶意软件扫描检查 | true/false |
||
| 日志与输出 | 日志文件 | --log |
设置日志文件路径 | <path> |
--verbose, --verbose-logs |
启用详细日志记录,输出更多安装过程信息 | true/false |
||
--nowarn, --ignore-warnings |
禁用所有警告输出 | true/false |
||
| 协议与接受 | 协议接受 | --accept-package-agreements |
接受程序包的所有许可协议 | true/false |
--accept-source-agreements |
接受源程序包在下载时的许可协议 | true/false |
||
| 卸载与更新控制 | 升级控制 | -r, --recurse, --all |
升级所有已安装的程序包 | true/false |
--uninstall-previous |
在升级过程中卸载之前的版本 | true/false |
||
| 安装包管理 | 自定义安装 | --custom |
将自定义参数传递给程序包的安装程序 | <custom_args> |
--installer-type |
指定安装程序的类型(如 msi, exe, appx 等) |
<installer_type> |
||
| 清理与管理 | 卸载与清理 | --purge |
删除程序包目录中的所有文件和目录(对于便携式程序包) | true/false |
| 身份验证与代理 | 身份验证 | --authentication-mode |
指定身份验证首选项(silent, silentPreferred, interactive) |
silent/silentPreferred/interactive |
--authentication-account |
提供身份验证的账户名称 | <account> |
||
| 代理设置 | --proxy |
设置代理服务器 | <proxy> |
|
--no-proxy |
禁用代理服务器 | true/false |
||
| 其他控制选项 | 扩展控制 | --header |
可选的 HTTP 请求头,用于 Windows-Package-Manager REST 源 | <header> |
--wait |
提示用户按任意键退出命令 | true/false |
||
--logs, --open-logs |
打开默认的日志文件位置 | true/false |
进一步解释
-
基本命令
winget upgrade是用来更新所有已安装程序包的基础命令,winget update是它的别名。
-
查询与筛选
- 通过
--query、--id、--name等参数,你可以在升级前筛选出特定的程序包。--moniker参数可以帮助按程序包的别名来筛选。
- 通过
-
版本控制
-v, --version用于指定安装的版本,支持传入具体的版本号,默认是最新版本。-a, --architecture用于选择程序包适配的体系结构,比如x86,x64,arm。
-
源与仓库
-s, --source用来指定源,支持自定义源以外的官方源。--locale可以设置程序包的语言区域。
-
交互与安装控制
- 允许用户选择是否启用交互式安装(
-i, --interactive),或者强制无提示安装(-h, --silent)。--force可以用来忽略任何潜在的安装警告。
- 允许用户选择是否启用交互式安装(
-
依赖与安装细节
--skip-dependencies跳过程序包的依赖安装,适用于需要精细控制安装过程的场景。
-
日志与输出
--log用来指定日志输出路径。--verbose启用详细日志,有助于排查问题。--nowarn可以禁止警告显示。
-
协议与接受
--accept-package-agreements用于自动接受程序包的协议,--accept-source-agreements用于自动接受源的协议。
-
卸载与更新控制
-r, --recurse, --all允许你在更新时一次性更新所有已安装程序包,--uninstall-previous则允许在升级时卸载之前的版本。
-
安装包管理
--custom用于传递自定义的安装参数,--installer-type则指定了安装程序的类型(例如.msi或.exe)。
-
清理与管理
--purge用于清理程序包目录中的文件,适用于便携式程序包。
-
身份验证与代理
- 如果需要身份验证或使用代理,
--authentication-mode和--proxy可以帮助指定。
- 如果需要身份验证或使用代理,
-
其他控制选项
--wait等选项用于进一步的用户交互控制,--header用来设置 HTTP 请求头。
这样表格化后的分类和细节能够让你更加清晰地理解和使用 winget upgrade 命令的各项功能。每个选项和参数都得到了精细的拆解,您可以根据具体需求灵活选择和组合使用。
winget 工具的命令及选项的多级分类和表格化总结。这些命令与选项为常用操作,帮助用户快速理解每个命令的功能及其可用选项。
winget 命令分类与选项表格
| 类别 | 命令 | 选项 | 描述 | 示例 |
|---|---|---|---|---|
| 程序包管理 | 安装 | -v, --version |
显示工具的版本信息 | winget install <package> --version |
--info |
显示工具的常规信息 | winget install <package> --info |
||
-?, --help |
显示命令帮助信息 | winget install <package> --help |
||
| 卸载 | --wait |
提示用户在退出前按任意键 | winget uninstall <package> --wait |
|
--logs, --open-logs |
打开默认日志位置 | winget uninstall <package> --logs |
||
--verbose, --verbose-logs |
启用 WinGet 的详细日志记录 | winget uninstall <package> --verbose |
||
| 升级 | --nowarn, --ignore-warnings |
禁止显示警告输出 | winget upgrade <package> --ignore-warnings |
|
--disable-interactivity |
禁用交互式提示 | winget upgrade <package> --disable-interactivity |
||
| 显示信息 | --info |
显示程序包的常规信息 | winget show <package> --info |
|
| 程序包源管理 | 源管理 | --proxy |
设置要用于此执行的代理 | winget source add --proxy http://proxy.example.com |
--no-proxy |
禁止对此执行使用代理 | winget source add --no-proxy |
||
| 搜索与查询 | 查找程序包 | -q, --query |
根据关键词查询程序包 | winget search --query "vscode" |
--exact |
精确匹配查询项 | winget search --query "vscode" --exact |
||
| 配置与设置 | 配置系统 | --wait |
提示用户在退出前按任意键 | winget configure --wait |
--logs, --open-logs |
打开默认日志位置 | winget configure --logs |
||
| 设置 | --verbose, --verbose-logs |
启用 WinGet 的详细日志记录 | winget settings --verbose |
|
| 导入与导出 | 导出程序包 | -v, --version |
显示工具的版本信息 | winget export --version |
| 导入程序包 | --proxy |
设置要用于此执行的代理 | winget import --proxy http://proxy.example.com |
|
| 钉住与固定 | 管理固定程序包 | --wait |
提示用户在退出前按任意键 | winget pin <package> --wait |
| 修复与下载 | 下载程序包 | --verbose, --verbose-logs |
启用 WinGet 的详细日志记录 | winget download --verbose |
| 修复程序包 | --logs, --open-logs |
打开默认日志位置 | winget repair --logs |
|
| 辅助工具 | 哈希工具 | --help |
显示哈希工具帮助信息 | winget hash --help |
| 验证清单文件 | --verbose, --verbose-logs |
启用 WinGet 的详细日志记录 | winget validate --verbose |
|
| 显示功能状态 | --info |
显示工具的常规信息 | winget features --info |
说明:
- 类别:根据命令的功能将其进行分组,如“程序包管理”、“源管理”、“搜索与查询”等。
- 命令:具体操作命令,如
install,upgrade,uninstall等。 - 选项:该命令下的可用选项,通常是某些功能的附加参数。
- 描述:对命令或选项的简要说明,帮助用户理解其作用。
- 示例:展示具体如何使用该命令或选项,帮助用户更好地理解命令格式和实际应用。
示例用法:
- 安装程序包并显示版本信息:
bashCopy Code
winget install <package> --version - 查找名为
vscode的程序包并精确匹配:bashCopy Codewinget search --query "vscode" --exact - 升级程序包并禁用交互式提示:
bashCopy Code
winget upgrade <package> --disable-interactivity - 导入程序包并设置代理:
bashCopy Code
winget import --proxy http://proxy.example.com
通过这张表格,用户可以方便地查找和使用 winget 提供的各项功能和命令,提升操作效率和灵活性。
更为详细的多级分类、子类别和选项表格化版本,旨在进一步细化每个类别与子类别,使得命令和参数的层次结构更加清晰,方便用户根据具体需求快速查找。
| 类别 | 子类别 | 三级子类 | 命令/选项 | 描述 | 示例 |
|---|---|---|---|---|---|
| 基本命令 | 基础命令 | 无 | winget list / winget ls |
列出已安装的所有程序包 | winget list |
| 查询与筛选 | 查询过滤 | 查询名称 | -q, --query <query> |
根据指定的查询关键词搜索程序包 | winget list -q "vscode" |
| 查询ID | --id <id> |
根据程序包 ID 进行筛选 | winget list --id "Microsoft.VisualStudioCode" |
||
| 查询别名 | --moniker <moniker> |
根据程序包的别名进行筛选 | winget list --moniker "vscode" |
||
| 精确查询 | 精确名称匹配 | --exact |
使用精确匹配进行查询 | winget list --exact "Visual Studio Code" |
|
| 标签筛选 | 标签筛选 | --tag <tag> |
根据程序包标签进行筛选 | winget list --tag "IDE" |
|
| 命令筛选 | 按命令筛选 | --cmd, --command <command> |
根据命令进行筛选 | winget list --cmd "code" |
|
| 源与范围 | 源管理 | 指定源 | -s, --source <source> |
使用指定的源进行查询 | winget list --source "winget" |
| 显示所有源 | --list-sources |
列出所有可用源 | winget list --list-sources |
||
| 安装范围 | 用户范围 | --scope user |
列出用户范围内的已安装应用 | winget list --scope user |
|
| 系统范围 | --scope machine |
列出机器范围内的已安装应用 | winget list --scope machine |
||
| 结果与输出控制 | 结果数量限制 | 限制结果数量 | -n, --count <count> |
限制输出结果数量 | winget list --count 5 |
| 过滤条件 | 升级可用程序包 | --upgrade-available |
仅列出有可用升级的程序包 | winget list --upgrade-available |
|
| 显示固定包 | --pinned, --include-pinned |
列出已固定的程序包,防止它们升级 | winget list --upgrade-available --include-pinned |
||
| 显示未知包 | --unknown, --include-unknown |
显示无法确定版本的程序包,通常与升级相关 | winget list --upgrade-available --include-unknown |
||
| 身份验证与协议 | 源协议 | 接受源协议 | --accept-source-agreements |
接受源协议以继续操作 | winget list --accept-source-agreements |
| 身份验证设置 | 身份验证模式 | --authentication-mode <mode> |
设置身份验证模式,如 silent、interactive 等 | winget list --authentication-mode silent |
|
| 设置身份验证账户 | --authentication-account <account> |
设置用于身份验证的帐户 | winget list --authentication-account user@example.com |
||
| 日志与调试 | 日志设置 | 启用详细日志 | --verbose, --verbose-logs |
启用详细日志输出 | winget list --verbose |
| 打开日志 | --logs, --open-logs |
打开日志文件的默认位置 | winget list --logs |
||
| 调试选项 | 显示帮助 | -?, --help |
显示帮助文档 | winget list --help |
|
| 忽略警告 | --nowarn, --ignore-warnings |
禁用警告输出 | winget list --ignore-warnings |
||
| 代理设置 | 代理配置 | 设置代理 | --proxy <proxy> |
设置代理服务器 | winget list --proxy "http://proxy.example.com" |
| 禁用代理 | --no-proxy |
禁用代理功能 | winget list --no-proxy |
||
| 交互设置 | 交互模式 | 禁用交互式提示 | --disable-interactivity |
禁用交互式提示,适用于脚本执行 | winget list --disable-interactivity |
| 等待用户输入 | --wait |
执行命令后等待用户输入 | winget list --wait |
||
| 其他设置 | 其他选项 | 无 | --list-versions |
显示程序包的所有版本 | winget list --list-versions |
| 无 | --hash <hash> |
使用哈希值查找特定的安装包 | winget list --hash <hash_value> |
说明:
- 类别:命令的大类,如查询与筛选、源与范围等。
- 子类别:根据类别进一步细分的功能项。
- 三级子类:子类别的细分项,能够具体指向某一操作或命令选项。
- 命令/选项:具体的命令选项名称,可以直接输入在
winget list命令中。 - 描述:对命令或选项的简要说明,帮助用户理解其作用。
- 示例:展示具体如何使用该命令或选项。
通过这种多级分类和层次结构的表格,您可以更容易地找到相关命令及其具体应用场景,帮助提高对 winget list 的理解与使用效率。
winget list 命令的多级分类表格化版本,包括所有的参数、选项以及它们的描述,便于更直观地了解如何使用 winget list 命令。
| 类别 | 子类别 | 命令/选项 | 描述 | 示例 |
|---|---|---|---|---|
| 基本命令 | 基本命令 | winget list / winget ls |
列出已安装的所有应用程序包 | winget list |
| 查询与筛选 | 查询 | -q, --query <query> |
根据指定的查询搜索程序包 | winget list -q "vscode" |
| ID筛选 | --id <id> |
根据程序包 ID 进行筛选 | winget list --id "Microsoft.VisualStudioCode" |
|
| 名称筛选 | --name <name> |
根据程序包名称进行筛选 | winget list --name "Visual Studio Code" |
|
| 单件对象筛选 | --moniker <moniker> |
根据名称的别名(moniker)进行筛选 | winget list --moniker "vscode" |
|
| 标签筛选 | --tag <tag> |
根据标签进行筛选 | winget list --tag "IDE" |
|
| 命令筛选 | --cmd, --command <command> |
根据命令进行筛选 | winget list --cmd "code" |
|
| 源与范围 | 源筛选 | -s, --source <source> |
使用指定的源查找程序包 | winget list --source "winget" |
| 安装范围筛选 | `--scope <user | machine>` | 筛选出在特定范围内已安装的程序包(user 或 machine) | |
| 结果与输出控制 | 结果数量限制 | -n, --count <count> |
显示介于 1 和 1000 之间的指定数量的结果 | winget list --count 5 |
| 精确匹配 | -e, --exact |
使用精确匹配进行程序包查找 | winget list --exact "Visual Studio Code" |
|
| 升级相关 | 升级可用性 | --upgrade-available |
仅列出具有可用升级的程序包 | winget list --upgrade-available |
| 未知包 | -u, --unknown, --include-unknown |
列出程序包,即使无法确定其当前版本。只能与 --upgrade-available 一起使用 |
winget list --upgrade-available --include-unknown |
|
| 已固定包 | --pinned, --include-pinned |
列出程序包,即使它们已固定阻止升级。只能与 --upgrade-available 一起使用 |
winget list --upgrade-available --include-pinned |
|
| 身份验证与协议 | 接受源协议 | --accept-source-agreements |
在源操作期间接受所有源协议 | winget list --accept-source-agreements |
| 身份验证模式 | --authentication-mode <mode> |
指定身份验证窗口首选项(silent、silentPreferred 或 interactive) | winget list --authentication-mode silent |
|
| 身份验证账户 | --authentication-account <account> |
指定用于身份验证的帐户 | winget list --authentication-account user@example.com |
|
| 日志与调试 | 显示帮助 | -?, --help |
显示选定命令的帮助信息 | winget list --help |
| 等待提示 | --wait |
在退出前提示用户按任意键 | winget list --wait |
|
| 打开日志 | --logs, --open-logs |
打开默认日志位置 | winget list --logs |
|
| 详细日志 | --verbose, --verbose-logs |
启用 WinGet 的详细日志记录 | winget list --verbose |
|
| 忽略警告 | --nowarn, --ignore-warnings |
禁止显示警告输出 | winget list --ignore-warnings |
|
| 代理设置 | 设置代理 | --proxy <proxy> |
设置要用于此执行的代理 | winget list --proxy "http://proxy.example.com" |
| 禁止代理 | --no-proxy |
禁止对此执行使用代理 | winget list --no-proxy |
|
| 交互性 | 禁用交互 | --disable-interactivity |
禁用交互式提示 | winget list --disable-interactivity |
说明:
- 类别:命令的主要功能分类,如查询与筛选、源与范围、升级相关等。
- 子类别:在每个类别下进一步细化的功能子项,如源筛选、结果数量限制等。
- 命令/选项:具体的
winget list命令或选项。 - 描述:简要解释命令或选项的功能。
- 示例:给出使用命令的具体示例,帮助理解如何应用。
通过这种方式,您可以快速找到需要的命令或选项,同时清楚了解每个命令的作用及其适用场景。
| 类别 | 子类别 | 命令 | 描述 | 示例 |
|---|---|---|---|---|
| 软件包管理 | 搜索与列出软件包 | winget search <应用> |
搜索指定应用包 | winget search vscode |
winget list |
列出已安装的所有应用包 | winget list |
||
| 安装软件包 | winget install <应用> |
安装指定的应用包 | winget install vscode |
|
| 升级软件包 | winget upgrade |
升级所有已安装的包 | winget upgrade |
|
winget upgrade <应用> |
升级指定的应用包 | winget upgrade vscode |
||
| 卸载软件包 | winget uninstall <应用> |
卸载指定的应用包 | winget uninstall vscode |
|
| 显示软件包信息 | winget show <应用> |
显示指定应用的详细信息,包括版本、描述等 | winget show vscode |
|
| 软件源管理 | 查看与配置源 | winget source list |
列出当前配置的软件源 | winget source list |
winget source add <源名> <源URL> |
添加一个新的软件源 | winget source add mysource https://source.example.com |
||
winget source remove <源名> |
移除指定的软件源 | winget source remove mysource |
||
| 清除缓存 | winget cache purge |
清除包管理器缓存 | winget cache purge |
|
| 导出与导入 | 导出已安装软件包 | winget export |
导出当前系统已安装的应用包列表到一个文件 | winget export -o apps-list.json |
| 导入软件包 | winget import |
导入已保存的包列表文件,安装其中的应用 | winget import -i apps-list.json |
|
| 帮助与信息 | 查看帮助信息 | winget --help |
显示 winget 的帮助信息,包含所有可用命令和选项 |
winget --help |
winget <命令> --help |
查看指定命令的帮助信息 | winget install --help |
||
| 查看版本信息 | winget --version |
显示 winget 的当前版本 |
winget --version |
|
| 高级操作 | 自定义操作与选项 | winget search <应用> --source <源> |
在指定的软件源中搜索应用 | winget search vscode --source winget |
winget install <应用> --silent |
以静默模式安装应用(无用户交互) | winget install vscode --silent |
||
winget uninstall <应用> --force |
强制卸载应用(即使出现依赖问题) | winget uninstall vscode --force |
||
| 批量操作 | 批量导入与导出 | winget export <文件名> |
将已安装的所有软件包导出到指定文件 | winget export -o apps-list.json |
winget import -i <文件名> |
从指定的文件导入应用包并安装 | winget import -i apps-list.json |
||
| 批量卸载 | winget uninstall --all |
卸载所有已安装的应用 | winget uninstall --all |
|
| 调试与日志 | 调试日志 | winget --debug |
启用调试日志输出 | winget install vscode --debug |
| 查看安装日志 | winget --log <日志文件> |
将日志输出到指定文件 | winget install vscode --log install.log |
|
| 其他命令 | 查看可用命令 | winget list --available |
列出可用的包而不仅仅是已安装的包 | winget list --available |
| 自动更新配置 | winget upgrade --auto |
自动升级所有支持的应用 | winget upgrade --auto |
说明:
- 类别:是命令的大类,代表了某一功能范围,例如软件包管理、帮助与信息等。
- 子类别:在每个类别下,命令可能涉及不同的操作,例如“搜索与列出软件包”、“安装软件包”。
- 命令:具体的
winget命令。 - 描述:简要说明该命令的作用。
- 示例:给出命令使用的具体示例。
通过表格化的形式,用户可以快速找到他们所需要的命令,同时对每个命令的功能有更明确的了解。
WinGet(Windows Package Manager)是什么?
WinGet 是微软开发的 Windows 包管理器,它提供了一个命令行界面(CLI),允许用户自动化地安装、配置、更新和卸载 Windows 软件包。这个工具旨在简化软件管理过程,使得开发者和系统管理员可以更高效地管理 Windows 系统上的软件。
为什么需要 WinGet?
WinGet(Windows Package Manager)的起源可以追溯到微软对提高Windows操作系统用户和开发者体验持续的关注和努力中。在WinGet正式推出之前,Windows平台上已经存在了多种第三方包管理器,如Chocolatey、Scoop等,这些工具在社区中相当受欢迎,因为它们提供了一种更简单、自动化的方法来安装、更新和管理软件。然而,尽管这些第三方工具功能强大,但Windows缺乏一个官方的、统一的包管理解决方案。
发展背景
-
第三方包管理器的普及:随着第三方包管理器在Windows用户和开发者中的普及,显然有一个市场需求,希望微软能提供一个官方的、集成的解决方案。
-
开发者和IT专业人员的需求:开发者和IT专业人员需要一种可靠、高效的方式来安装、管理和分发软件。手动下载和安装软件不仅效率低下,而且容易出错。
-
现代化Windows体验的追求:随着Windows 10和Windows 11的推出,微软一直在寻求现代化其操作系统的各个方面,其中包括如何安装和管理软件。
WinGet的推出
WinGet首次亮相是在2020年的Microsoft Build开发者大会上,作为Windows 10的一部分被介绍给公众。该项目的代码也被开源在GitHub上,允许社区贡献和提出改进建议,这一策略旨在促进透明度和社区参与。
目标和愿景
WinGet的推出目标是提供一个命令行界面(CLI),通过这个界面,用户可以发现、安装、升级、配置和删除软件包。微软的这一举措旨在简化软件管理流程,同时也是对现有第三方工具功能的认可和官方替代品的提供。WinGet的设计考虑了现代软件开发和部署的需求,支持自动化脚本和DevOps流程,从而加速和简化了软件的部署和管理。
WinGet的起源基于对Windows平台软件管理体验改进的需求,以及对第三方解决方案功能的官方认可。通过引入WinGet,微软旨在提供一个强大、灵活且易于使用的官方包管理工具,以满足现代Windows用户和开发者的需求。
在 WinGet 出现之前,Windows 用户通常需要手动下载和安装软件,或依赖于各种第三方软件管理工具,这些方法往往缺乏统一性和自动化能力。WinGet 的引入使得软件部署变得更加一致、简单和自动化,有助于提高生产力,特别是在需要管理大量设备和应用程序的企业环境中。
WinGet 怎么样?
WinGet 支持从命令行界面安装、更新、卸载和管理软件包,提供了以下主要功能:
- 搜索软件:可以快速搜索可用的软件包。
- 安装软件:通过简单的命令即可安装软件,支持批量安装。
- 更新软件:自动检查并更新已安装的软件包。
- 配置管理:支持配置文件,允许预定义和自动化软件安装流程。
- 依赖管理:自动处理软件依赖关系,确保软件正确安装。
此外,WinGet 还支持 PowerShell 模块和 COM(组件对象模型)API,为开发人员提供了更多编程和自动化的可能性。
WinGet 有什么影响?
- 提高自动化和效率:WinGet 使得软件安装和管理过程自动化,减少了手动操作的需求,提高了 IT 管理员和开发者的工作效率。
- 促进软件分发的标准化:通过使用官方支持的包管理器,软件分发和安装过程更加标准化,有助于减少软件安装错误和兼容性问题。
- 改善软件发现与部署:开发者可以将自己的应用程序提交到 Microsoft 的软件仓库,让用户更容易地发现和安装他们的软件。
- 安全性提升:WinGet 支持从受信任的源安装软件,减少了恶意软件的风险。同时,它还能确保软件始终保持最新,减少了因软件过时带来的安全漏洞。
WinGet 作为 Windows 的官方包管理器,对于简化和优化 Windows 软件的安装、管理和更新流程具有重要意义,对于提升 IT 管理效率和安全性都有积极影响。
WinGet(Windows Package Manager)自2020年首次亮相以来,经历了几个重要的发展阶段,逐步成为Windows平台上一个关键的软件管理工具。以下是其主要的发展里程碑:
1. 初始发布和早期阶段(2020年)
- 2020年5月:在Microsoft Build 2020开发者大会上,微软首次公开介绍了WinGet。这标志着微软对于Windows包管理器的官方支持的开始。此时,WinGet作为预览版本对开发者和早期采用者开放。
- 开源:WinGet的代码被开源在GitHub上,这允许社区参与到项目的开发中来,提出功能建议,报告问题,以及贡献代码。
2. 功能扩展和改进(2020年下半年至2021年)
- 增加功能:微软根据社区反馈不断增加新功能,如
list、upgrade命令,以及对软件包依赖性的支持,使得WinGet更加强大和易用。 - 性能优化:对WinGet进行了多项性能优化,提高了搜索和安装软件的效率。
- 用户体验改进:改进了错误消息和日志记录,使用户在使用过程中遇到问题时能够更容易地诊断和解决。
3. 正式版发布(2021年)
- 2021年5月:随着Windows 10的21H1更新,WinGet正式版发布。这一版本包含了多项新功能和改进,标志着WinGet成为Windows平台官方支持的成熟软件管理工具。
4. 持续迭代和集成(2021年至今)
- 集成与Windows 11:WinGet与Windows 11紧密集成,成为推荐的软件管理解决方案之一。
- 功能和性能持续优化:微软继续根据用户反馈和技术发展对WinGet进行优化和扩展,包括改进的包依赖处理、用户界面改进、以及新增的命令和选项。
- 社区参与:社区对WinGet的贡献持续增长,无论是通过提交软件包清单,还是通过直接参与到项目的代码贡献中。
结论
从预览版到正式发布,再到持续的功能扩展和改进,WinGet已经成为Windows平台上不可或缺的软件管理工具。它不仅简化了软件的安装和管理流程,也促进了软件分发的现代化和标准化。随着更多功能的引入和性能的优化,WinGet将继续在Windows生态系统中扮演重要角色。
|
Windows 程序包管理器 v1.9.25200 WinGet 命令行实用工具可从命令行安装应用程序和其他程序包。 使用情况: winget [<命令>] [<选项>] 下列命令有效:
如需特定命令的更多详细信息,请向其传递帮助参数。 [-?] 下列选项可用: 可在此找到更多帮助: "https://aka.ms/winget-command-help" |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
超细化的
|
| 主类 | 子类 | 命令 | 描述 |
|---|---|---|---|
| 程序包管理 | 安装与卸载 | install <package> |
安装指定程序包。 |
uninstall <package> |
卸载指定程序包。 | ||
| 升级与更新 | upgrade |
升级所有可用的程序包。 | |
upgrade <package> |
升级指定程序包。 | ||
| 包列表与搜索 | list |
列出所有已安装的程序包。 | |
search <query> |
搜索程序包(按关键字)。 | ||
| 显示与详情 | show <package> |
显示指定程序包的详细信息。 | |
| 程序包操作 | repair <package> |
修复已安装程序包的损坏。 | |
pin <package> |
将程序包钉住(防止升级)。 | ||
unpin <package> |
取消程序包钉住状态。 | ||
| 程序包管理器 | source <command> |
管理程序包源(如添加、删除源)。 | |
| 批量操作 | 导入导出 | export <file> |
导出已安装程序包的清单文件。 |
import <file> |
导入已安装程序包的清单文件。 | ||
| 系统配置与设置 | 设置管理 | settings |
打开或修改 winget 的设置。 |
configure <key> <value> |
配置系统参数。 | ||
| 更新与版本管理 | features |
查看和管理实验性功能。 | |
| 帮助与调试 | 帮助文档 | --help |
显示命令的帮助信息。 |
--? |
显示命令的帮助信息(简写)。 | ||
| 调试与日志 | --verbose |
启用详细输出,帮助调试。 | |
--logs |
打开 winget 的日志文件位置。 |
||
--nowarn |
禁用警告信息的输出。 | ||
--info |
显示 winget 工具的常规信息。 |
||
| 交互与等待 | --wait |
在操作完成后要求用户按任意键继续。 | |
| 网络与代理 | 代理设置 | --proxy <url> |
设置代理服务器。 |
--no-proxy |
禁用代理。 | ||
| 清单管理与验证 | 验证与检查 | validate <file> |
验证导入的清单文件的正确性。 |
hash <file> |
计算并显示程序包的哈希值。 | ||
| 高级功能 | 自动化与脚本 | --disable-interactivity |
禁用所有交互式提示。 |
--json |
输出 JSON 格式的数据,方便自动化脚本使用。 | ||
| 网络连接与访问 | 网络配置 | --network-timeout <seconds> |
设置网络请求的超时时间。 |
--disable-cache |
禁用程序包缓存。 | ||
| 系统环境与版本控制 | 操作系统与版本 | --version |
显示 winget 的版本信息。 |
| 设备与平台 | --platform |
显示当前设备和平台的信息。 |
分类说明
-
程序包管理:这是
winget最基础的功能类别,包括安装、卸载、升级、修复等常见操作。可以通过不同命令对程序包进行增删改查等操作。- 安装与卸载:用于直接管理程序包的安装与卸载。
- 升级与更新:包括升级所有程序包或指定包。
- 包列表与搜索:管理已安装包的查看,支持搜索功能。
- 显示与详情:查看程序包的详细信息。
- 程序包操作:包括修复、钉住等特定操作。
- 程序包管理器:管理源的添加和删除,支持自定义源。
-
批量操作:此类命令用于批量管理程序包,例如导入导出已安装的程序包清单,可以方便地迁移或恢复系统状态。
- 导入导出:导出当前安装包的清单,或导入清单进行批量安装。
-
系统配置与设置:管理
winget工具和环境的设置、配置,帮助用户个性化配置或修改工具行为。- 设置管理:打开设置界面,修改用户首选项。
- 更新与版本管理:查看并配置
winget的实验性功能。
-
帮助与调试:提供命令行帮助、调试和日志功能,帮助用户更好地理解工具和进行故障排除。
- 帮助文档:显示工具的帮助信息。
- 调试与日志:提供详细的输出、日志和错误信息。
- 交互与等待:启用或禁用交互式提示,控制工具的行为。
-
网络与代理:配置与网络访问相关的参数,支持通过代理访问,处理网络请求相关的设置。
- 代理设置:配置代理服务器。
- 禁用代理:关闭代理功能。
-
清单管理与验证:帮助用户验证清单文件的正确性,计算安装程序的哈希值,确保程序包的一致性。
- 验证与检查:验证清单文件的准确性。
- 哈希计算:检查程序包的哈希值以验证其完整性。
-
高级功能:用于自动化、脚本化
winget工具的执行,适合有开发需求的用户。- 自动化与脚本:禁用交互式提示,输出 JSON 格式的数据,方便脚本处理。
-
网络连接与访问:控制网络请求的超时,管理缓存等,以提高网络操作的可靠性和效率。
- 网络配置:配置超时和缓存选项。
-
系统环境与版本控制:显示
winget的版本,检查工具的安装环境和设备平台。- 操作系统与版本:查看
winget版本信息。 - 设备与平台:查看系统信息和硬件平台。
- 操作系统与版本:查看
WinGet(Windows Package Manager)自从推出以来,已经成为Windows平台上一个非常重要的软件管理工具。它提供了一系列特色功能,旨在简化和自动化Windows软件的安装、更新和管理过程。以下是WinGet的一些主要特色功能:
1. 命令行界面(CLI)
WinGet通过命令行界面提供操作,使得软件管理任务可以快速、高效地完成,这对于开发者和IT专业人员特别有用,因为它们可以轻松地集成到脚本和自动化流程中。
2. 大量软件库
WinGet连接到一个庞大的软件仓库,用户可以通过简单的命令搜索、安装、更新几乎任何Windows软件。这个仓库包含了从常用应用程序到开发工具的各种软件。
3. 自动化软件安装和更新
用户可以通过简单的命令来自动安装或更新软件,无需手动下载安装包或执行安装向导。这不仅节省了时间,也确保了软件部署的一致性和准确性。
4. 依赖管理
WinGet能够处理软件依赖关系,确保在安装软件时自动安装所有必需的依赖项。这简化了复杂软件的安装过程,并减少了配置错误。
5. 批量安装
通过支持使用清单文件,WinGet允许一次性安装多个应用程序,这对于新设备的初始设置或恢复环境非常有用。
6. 源管理
WinGet支持多个软件源,用户可以添加自己的私有源或第三方源,从而扩展可用软件的范围。这使得WinGet在企业环境中尤其有用,因为它可以适应特定的软件分发需求。
7. Manifest-based安装
软件通过Manifest(清单)文件进行管理,这些文件描述了软件的安装和配置细节。这种方式使得软件安装更加透明和可控。
8. 开源和社区支持
WinGet是一个开源项目,这意味着它受到了广泛的社区支持。用户和开发者可以贡献代码,增加新功能,或者帮助改进现有功能。
9. 集成到Windows 11
在Windows 11中,WinGet得到了更深层次的集成,提供了更加无缝的用户体验,使得它成为Windows平台上的首选软件管理工具。
WinGet通过其强大的功能集,为Windows用户和管理员提供了一个强大、灵活且易于使用的软件管理解决方案,大大简化了软件的安装、更新和管理过程。
WinGet的进阶使用和未来展望
除了上述提到的特色功能外,WinGet还提供一些高级功能和特性,这些功能使得它在软件管理方面更加强大和灵活。
进阶使用:
-
自定义安装选项:WinGet允许用户在安装软件时指定自定义参数,这对于需要特定配置的软件安装非常有用。通过这种方式,用户可以控制安装过程中的各种细节,如安装位置、功能选择等。
-
卸载功能:虽然WinGet最初的重点是安装和管理软件,但随着时间的推移,也增加了对软件卸载的支持。这使得用户可以通过相同的工具来管理软件的整个生命周期。
-
导出和导入软件列表:WinGet支持导出当前系统上安装的软件列表到一个文件中,然后可以在另一台机器上导入这个列表,实现快速的软件部署。这对于批量设置新设备或恢复工作环境非常有用。
未来展望:
-
图形用户界面(GUI):虽然WinGet是一个命令行工具,但社区和用户对于拥有一个图形用户界面(GUI)的需求日益增长。微软可能会考虑开发一个官方的GUI或支持第三方GUI项目,以便那些更喜欢图形界面操作的用户也能轻松使用WinGet。
-
更广泛的软件覆盖和支持:随着时间的推移,可以预见WinGet将会支持更多的软件包和应用程序。这不仅包括更多的第三方软件,也可能包括更深层次的Windows组件和服务的管理。
-
更紧密的操作系统集成:随着WinGet在Windows生态系统中的地位不断提升,它可能会与Windows操作系统实现更紧密的集成,例如在系统设置或应用商店中直接集成WinGet的功能。
-
增强的企业功能:WinGet可能会引入更多针对企业用户的功能,如更好的组策略支持、软件分发控制和安全性功能。这将使WinGet成为企业IT管理的强大工具。
WinGet作为Windows包管理器的地位正在不断巩固和扩展。通过不断增加的功能和改进,以及对社区反馈的响应,WinGet正成为Windows平台软件管理的核心组成部分。随着技术的发展和用户需求的变化,WinGet将继续演进,为Windows用户提供更加高效、便捷的软件管理体验。
持续优化和改进
- 性能提升:随着软件库的不断增长,WinGet将需要持续优化其性能,确保软件搜索、安装和更新过程快速高效。
- 用户体验改善:尽管WinGet主要是命令行工具,但微软可能会对其进行改进,使其命令更加直观易懂,错误消息更加清晰,从而降低新用户的学习曲线。
安全性和可靠性
- 增强的安全机制:随着WinGet被更广泛地应用于企业和个人电脑,其安全性将成为重点。微软可能会引入更多的安全特性,如自动软件签名验证,以确保通过WinGet安装的软件是安全且未被篡改的。
- 稳定性和可靠性:微软将持续提高WinGet的稳定性和可靠性,确保即使在复杂的网络环境和系统配置下,软件安装和管理也能顺利进行。
社区和开源项目的进一步整合
- 更紧密的社区合作:WinGet作为一个开源项目,其发展离不开社区的贡献。微软可能会进一步鼓励和促进社区参与,通过举办黑客松、编写文档、提供反馈等方式,让社区成员更加积极地参与到WinGet的发展中来。
- 支持更多开源项目:随着开源软件在各个领域的影响力日益增大,WinGet可能会增加对更多开源项目的支持,包括更简单的提交和维护流程,以及更好的可视化工具来帮助用户发现和安装开源软件。
企业级功能
- 更好的企业集成:WinGet可能会引入更多企业级功能,如对企业软件目录的支持、集成到企业软件分发平台等,这将使IT管理员能够更有效地管理组织内的软件部署和更新。
- 策略管理和控制:为了更好地适应企业环境,WinGet可能会增加更多的策略管理工具,允许IT管理员控制哪些软件可以安装、如何更新等,以符合企业的合规性和安全性要求。
教育和培训资源
- 增加教育资源:为了帮助用户更好地利用WinGet的强大功能,微软可能会发布更多的教程、指南和最佳实践文档。这些资源将帮助新手快速上手,同时也允许高级用户深入了解如何最大化利用WinGet。

浙公网安备 33010602011771号