WinGet 配置

使用 WinGet 配置文件,可以将手动计算机设置和项目载入合并到一个可靠且可重复的命令中。 为此,WinGet 利用以下各项:

  • 一个 YAML 格式的 WinGet 配置文件,其中列出了在 Windows 计算机上设置开发环境的所需状态所需的所有软件版本、包、工具、依赖项和设置。
  • PowerShell Desired State Configuration (DSC)以自动配置 Windows 操作系统。
  • Windows 程序包管理器 winget configure 命令,以启动配置过程。

计算机设置和项目载入的好处

使用 WinGet 配置文件的好处包括:

  • 无人参与安装:输入 winget configure 命令,让 Windows 程序包管理器和 PowerShell DSC 自动安装和设置在 Windows 计算机上配置所需开发环境所需的所有要求。
  • 可靠且可重复:在加入新团队或项目时,不必为查找正确版本的软件、包、工具、框架,以及为开发环境配置正确的计算机设置而担忧,因为它们是使用 YAML 格式(通过 JSON 架构)在 WinGet 配置文件中预定义的。
  • 支持开源协作:WinGet 配置文件可以托管在 GitHub 存储库中,可在其中提交问题或贡献,也可以在安全的存储位置(如 OneDrive)中将其保留为私有文件,通过专用电子邮件或其他安全通道共享。

警告

在应用 WinGet 配置文件和任何关联的 PowerShell DSC 资源之前,应进行检查,以确保它们是可信的。

使用 WinGet 配置文件来配置计算机

若要使用 WinGet 配置文件设置计算机,可执行以下操作:

  1. 安装开发人员主页,转到“计算机配置”,选择“配置文件”,然后选择要使用的 WinGet 配置文件。 (若要创建配置文件,请参阅如何创作 WinGet 配置文件)。

  2. 在命令行中使用 winget configure。 若要使用 winget configure 命令,必须运行 WinGet 版本 v1.6.2631 或更高版本

WinGet 配置常见问题解答

查找有关 WinGet 配置的一些最常见问题的解答。

WinGet 配置文件的工作原理是什么?

WinGet 配置文件以 YAML 编写,用于定义设备上安装的内容以构成开发环境,以及计算机和已安装应用程序的配置状态。

WinGet 配置文件不是要遵循的命令性步骤序列,而是声明性的,用于定义所需的计算机配置状态结果。 通过使用 Windows 程序包管理器和 PowerShell DSC 资源,声明性 WinGet 配置文件可以安装、配置设置并将其应用于你的环境,从而生成编码就绪状态。

WinGet 将分析配置文件以确保其有效,然后下载实现所需状态所需的所有关联的 PowerShell 模块(包含 DSC 资源)。 下载这些资源,检查 WinGet 配置文件的可信度并同意已验证文件的安全性后,WinGet 将开始测试所有必需的断言并应用所需的状态。

WinGet 配置文件资源的排序顺序是无关紧要的。 某些安装和配置过程甚至可能并行运行。 断言直接对应于每个资源中定义的 dependsOn 字段。 如果资源包含对断言的依赖关系,则将首先检查断言。 如果断言失败,依赖资源也将失败。 但是,配置文件将继续运行,完成尽可能多的任务,即使某些断言或资源依赖项失败,也会让你的计算机尽可能多地完成设置过程。 配置完成后,由你负责检查任何故障。

例如,运行 WinGet 配置文件后,可能会看到如下所示的结果:

Assert:: OsVersion
The configuration unit could not be found.
Apply :: DeveloperMode
  This configuration unity was not run because an assert failed or was false.
Apply :: WinGetPackage [vsPackage]
  This configuration unity was not run because an assert failed or was false.

在此示例中,对所需版本的操作系统的断言检查失败,因此包含操作系统版本对该断言的依赖关系的 DeveloperMode 和 WinGetPackage 资源也失败。 但是,配置文件中列出的任何其他安装和配置任务将继续进行。

WinGet 配置文件的声明性(非顺序)性质的一个好处是,添加到文件的新资源的位置无关紧要。 这对于长配置文件尤其有用,因为只需将其他资源添加到文件底部即可。 只要正确定义了断言和依赖项,就无需考虑顺序,也无需考虑设置步骤是先执行还是后执行等等。

Screenshot of a PowerShell terminal running a WinGet Configuration file with the OSVersion assertion and dependent resources failing.

如何使用 WinGet 配置文件?

若要运行 WinGet 配置文件,请使用 winget configure 命令

如何创作 WinGet 配置?

若要创建 WinGet 配置文件,请按照如何创作 WinGet 配置文件文档中的指导进行操作。

如何确保 WinGet 配置文件可信?

建议在运行 WinGet 配置文件之前始终验证其完整性,方法是查看其内容并在隔离环境中测试配置。 请参阅如何检查 WinGet 配置文件的可信度

在哪里可以找到示例 WinGet 配置文件?

有关示例 WinGet 配置文件,可查看 Windows 开发人员主页存储库:https://aka.ms/dsc.yaml

在哪里可以找到包含 DSC 资源的 PowerShell 模块示例?

PowerShell 库托管数百个包含 Desired State Configuration (DSC) 资源的 PowerShell 模块。 可以通过应用“类别”下的“DSC 资源”筛选器来筛选搜索结果。

Desired State Configuration PowerShell module search results from the PowerShell Gallery

是否可以设置策略来阻止在组织中使用 WinGet 配置文件?

是的。 组策略对象 EnableWindowsPackageManagerConfiguration 和 EnableWindowsPackageManagerConfigurationExplanation 可用于在组织中禁用 WinGet 配置功能。

在哪里可以详细了解如何将 WinGet 配置与开发人员主页和开发人员驱动器结合使用?

请参阅使用开发人员主页设置 Windows 开发环境一文,详细了解如何使用 Windows 11 开发人员主页中的计算机配置工具。 你可能还有兴趣了解如何使用性能更加优化的开发人员驱动器存储卷。请参阅在 Windows 11 上设置开发人员驱动器

WinGet 配置疑难解答

WinGet 配置失败的最常见原因是 PowerShell DSC 资源需要管理访问权限才能应用所需状态。 并非所有 DSC 资源都会显示明确的失败原因。

我们很很快添加更多常见的故障排除问题。 同时,检查在 GitHub 上的 WinGet CLI 存储库中提交的相关问题。