← 返回首页目录
# 使用WinGet安装和管理应用程序——完整操作指南

**作者:吉祥法师**

## 一、WinGet概述

WinGet是微软推出的Windows包管理器命令行工具,它为用户提供了一种高效、统一的方式来发现、安装、升级、移除和配置应用程序。这一工具广泛支持Windows 10、Windows 11以及Windows Server 2025操作系统,是Windows Package Manager服务的客户端接口。通过WinGet,用户不再需要手动访问各个软件官方网站下载安装程序,只需在命令行中执行简单指令,即可完成软件的自动化安装与管理,极大提升了软件部署和系统维护的效率。

## 二、WinGet的安装与获取

### 2.1 系统要求与预装情况

WinGet作为App Installer系统组件的一部分,预装于Windows 11、现代版本的Windows 10以及Windows Server 2025系统中。该组件在Windows桌面版本上通过Microsoft Store进行分发和更新,而在Windows Server 2025上则通过系统更新渠道维护。需要注意的是,WinGet命令行动态工具仅支持Windows 10版本1809(内部版本号17763)或更高版本的操作系统,低于此版本将无法使用。

### 2.2 首次登录与注册机制

WinGet的注册机制较为特殊,它需要用户首次登录Windows系统后,Microsoft Store才会通过异步流程完成Windows Package Manager的注册。如果用户在首次登录后发现WinGet尚未就绪,可以打开PowerShell并执行以下命令手动触发注册:

```powershell
Add-AppxPackage -RegisterByFamilyName -MainPackage Microsoft.DesktopAppInstaller_8wekyb3d8bbwe
```

### 2.3 App Installer的补充安装

在某些设备上,App Installer可能未被预装。此时,用户需要从微软官方渠道手动下载并安装该组件。这可以通过访问微软官方网站或使用系统更新功能来完成,确保WinGet能够正常运行。

## 三、WinGet预览版安装(面向开发者)

对于希望提前体验Windows Package Manager新功能的开发者,可以通过以下两种方式获取WinGet预览版:

**方式一:直接下载预览版安装包**。从微软官方渠道下载最新的WinGet预览版本,并阅读对应的发布说明以了解新增功能。需要注意的是,通过此方式安装的预览版不会自动从Microsoft Store接收新版本更新。

**方式二:加入Windows Insider计划**。使用Microsoft账户(MSA)、工作账户、学校账户或Microsoft Entra ID(原Azure Active Directory)账户注册Windows Insider计划的Canary或Dev频道,这些频道包含WinGet预览版新版本的自动更新。

## 四、在Windows Sandbox中安装WinGet

Windows Sandbox提供了一个轻量级桌面环境,用于安全地隔离运行应用程序。但需要注意,Windows Sandbox默认不包含WinGet和Microsoft Store应用,需要手动引导安装。安装步骤相对复杂但操作明确,可以从GitHub的WinGet releases页面下载最新包,或使用Repair-WinGetPackageManager命令进行安装。

推荐使用PowerShell命令执行以下安装流程:

```powershell
$progressPreference = 'silentlyContinue'
Write-Host "正在从PSGallery安装WinGet PowerShell模块..."
Install-PackageProvider -Name NuGet -Force | Out-Null
Install-Module -Name Microsoft.WinGet.Client -Force -Repository PSGallery | Out-Null
Write-Host "正在使用Repair-WinGetPackageManager引导WinGet..."
Repair-WinGetPackageManager -AllUsers
Write-Host "安装完成。"
```

若需安装机器范围内的WinGet PowerShell模块,可在Install-Module命令中添加`-Scope AllUsers`参数。如需要预览版本,可在Repair-WinGetPackageManager后添加`-IncludePrerelease`参数。用户还可通过`Get-Help Repair-WinGetPackageManager -Full`查看该命令的完整参数说明。

## 五、管理员权限注意事项

管理员权限对WinGet的安装行为有重要影响。当以普通用户身份运行WinGet时,部分应用程序的安装过程可能要求提升权限,系统会弹出用户账户控制(UAC)提示窗口,由用户确认是否允许安装。选择不允许则会导致安装失败。而在管理员命令提示符中运行WinGet时,系统不会显示权限提升提示,因此建议用户仅在信任的应用程序上使用管理员模式执行安装,避免因权限过高而带来安全隐患。

## 六、WinGet核心命令详解

成功安装App Installer后,用户可以在命令提示符中输入`winget`来启动工具。以下为最常用的操作场景及对应命令:

### 6.1 搜索软件

搜索所需软件的基本命令格式为`winget search <应用名称>`。例如,搜索Visual Studio Code可以输入`winget search vscode`,系统将返回与关键词匹配的可用软件列表。

### 6.2 安装软件

确认所需软件在库中后,执行`winget install <应用名称>`即可完成安装。WinGet会自动启动安装程序并执行安装过程。除基本的install和search命令外,WinGet还提供了一系列其他功能命令,用户可通过`winget --help`查看完整的命令列表。

## 七、WinGet全部命令与选项

### 7.1 支持的命令

| 命令 | 功能描述 |
|------|----------|
| install | 安装指定的应用程序 |
| show | 显示指定应用的详细信息 |
| source | 管理WinGet访问的软件源 |
| search | 搜索应用程序 |
| list | 显示已安装的软件包列表 |
| upgrade | 升级指定的应用程序 |
| uninstall | 卸载指定的应用程序 |
| hash | 生成安装程序的SHA256哈希值 |
| validate | 验证提交到仓库清单文件的格式 |
| settings | 打开WinGet设置 |
| features | 显示实验性功能的状态 |
| export | 导出已安装程序包列表 |
| import | 从文件安装所有软件包 |
| pin | 管理软件包版本固定 |
| configure | 将系统配置为所需状态 |
| download | 下载指定应用的安装程序 |
| repair | 修复选定的应用程序 |
| dscv3 | PowerShell Desired State Configuration v3资源命令 |

### 7.2 支持的选项

| 选项 | 功能描述 |
|------|----------|
| -v, --version | 显示WinGet当前版本号 |
| --info | 显示详细的WinGet信息,包括许可、隐私声明及组策略配置链接 |
| -?, --help | 显示附加帮助信息 |
| --wait | 用户按任意键后方才退出 |
| --logs, --open-logs | 打开日志默认位置 |
| --verbose, --verbose-logs | 启用详细日志记录 |
| --nowarn, --ignore-warnings | 抑制警告输出 |
| --disable-interactivity | 禁用交互式提示 |
| --proxy | 为本次执行设置代理 |
| --no-proxy | 禁用本次执行的代理 |

## 八、支持的安装程序格式

WinGet支持多种主流安装程序格式,包括EXE(支持静默和带进度静默模式)、ZIP压缩包、INNO、NULLSOFT、MSI、WIX、APPX、MSIX、BURN、PORTABLE以及FONT等类型。这种广泛的格式支持确保了绝大多数Windows应用程序都能通过WinGet进行统一管理和部署。

## 九、脚本化使用与扩展

对于需要自动化操作的用户,微软提供了Microsoft.WinGet.Client PowerShell模块,该模块可通过PowerShell Gallery获取。这一功能使得系统管理员能够将WinGet集成到自动化脚本中,实现对多台机器的批量软件部署和管理,显著提升运维效率。

## 十、故障排查与调试

WinGet提供了完善的日志系统以帮助用户排查问题。当遇到安装失败或软件运行异常时,可通过`--logs`选项或访问默认日志位置查看详细记录。如果社区仓库中不存在某些用户需要的工具,用户可以向Windows Package Manager仓库提交软件包,经过审核后即可供所有用户使用。

此外,WinGet CLI作为一个开源项目,其源代码托管在GitHub的https://github.com/microsoft/winget-cli/ 仓库中。开发者可以克隆仓库,使用Visual Studio 2022 C++环境进行构建,并遵循项目规范参与社区贡献。GitHub仓库还维护了常见问题和错误代码的解决方案,例如"未识别"、"运行失败"以及特定的错误代码0x801901a0、0x80d03002、0x80070490等疑难杂症的修复方法。

## 十一、自定义WinGet设置

用户可以通过修改settings.json文件来定制WinGet的命令行体验,包括调整代理设置、更改安装默认行为等。具体配置项说明可参阅`settings`命令对应的官方文档页面,这为高级用户提供了灵活的工具定制能力。

综上所述,WinGet作为现代Windows系统内置的包管理工具,以其强大的功能和灵活的配置选项,为用户、开发者和系统管理员提供了统一、高效的软件管理与运维解决方案,是提升Windows平台工作效率的重要工具。