使用 winget 工具进行调试和问题故障排除

当 Windows 程序包管理器安装、搜索或列出应用程序时,有时需要查看日志文件才能更好地了解行为。

WinGet 日志

默认情况下,Windows 程序包管理器会在执行命令时创建日志文件。 这些日志包含有助于调试 WinGet 问题的信息。 日志文件没有最大大小。 它们通常只有几 KB 的大小。 当目录中的日志文件数超过 100 时,将开始删除最早的日志文件。 没有基于时间的日志删除,这些设置不可配置。 如果已达到 100 个文件日志容量,只需将想要保留的任何 WinGet 日志移到其他目录中。

使用命令 winget --info 查找 WinGet 日志文件的目录路径。 WinGet 日志文件的默认路径为:

%LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir

可将 --logs 或 --open-logs 选项包含在任何命令中,以便在命令完成后打开日志目录。 以下是使用 --logs 选项的一些示例:

> winget list --logs
> winget source update --open-logs

--verbose-logs

如果需要更全面的日志文件(它们提供与 CDN 和源的完整通信),还可以在命令行上包含 --verbose 或 --verbose-logs。 以下是使用 --verbose-logs 选项的一些示例:

> winget install vscode --verbose-logs
> winget search -n visual --verbose-logs
> winget source add -n mysource -t Microsoft.REST -a https://www.contoso.org --verbose

已知问题

Windows 程序包管理器客户端存储库中,已知问题以及源和行为的列表会保持最新状态。 如果使用 winget 工具时遇到问题,请转到此处进行故障排除。

退出代码

winget 工具返回退出代码,以指示命令是成功还是失败。 有关退出代码及其含义的表格,请参阅 Windows 程序包管理器客户端存储库的“返回代码”文件

特定用户的范围与计算机的范围

并非所有安装程序都支持在“用户”范围与“计算机”范围内进行一致安装。

  • 基于 MSIX 的包:可靠的 WinGet 行为。
  • 基于 MSI 的包通常支持可靠的 WinGet 配置,但在某些情况下,该包嵌套在基于 .exe 的安装程序中,因此可能具有更大的可变性。
  • 基于 EXE 的安装程序围绕范围的行为不一定具有确定性。 在某些情况下,用于指定范围的参数并不可用,而在其他情况下,安装程序可能会根据用户是否是本地管理员组的成员来做出决定。 在用户范围内安装的包可能仍需要管理员的 UAC(用户帐户控制)授权。

在 GitHub 上的 WinGet 产品存储库中查看有关范围相关问题的更多详细信息。