跳转到主要内容
Splashtop20 years of trust
登录免费试用
+86 (0) 571 8711 9188登录免费试用
A person working on a computer in an office.

如何使用 Intune 部署 WinGet 应用:4 种行之有效的方法

阅读时间:15分钟
已更新
免费试用 Splashtop
远程访问、远程支持和端点管理一体化解决方案。
免费试用联系销售

当您想用 Intune 部署 WinGet 应用时,这本该是一个简单直接的过程。毕竟,WinGet 已经知道成千上万个 Windows 应用的安装程序 URL、版本和静默开关,所以您应该可以让 Intune 指向该目录并进行部署,对吧?

不过,这里有个问题。Intune 没有可直接从 WinGet 社区存储库部署的应用类型,只能部署来自 Microsoft Store 的应用。更复杂的是,当脚本以 SYSTEM 身份运行时,WinGet 命令行工具不受支持,而这正是 Intune 在将应用的安装行为设置为 System 时使用的上下文。

考虑到这一点,如何使用 Intune 部署 WinGet?我们总结出了四种可让部署更轻松的方法,下面来看看它们分别是什么、各自的成本是多少、如何进行设置,以及如何解决您可能遇到的任何问题。

Intune 能原生部署 WinGet 应用吗?

部分如此。Intune 的 Microsoft Store app (new) 类型使用 Windows Package Manager 从 Microsoft Store 中查找并安装应用。它无法访问 WinGet 社区存储库——这是大多数 WinGet 指南使用的公共目录,而且 Intune 没有任何应用类型可从中部署。要部署社区存储库中的应用,需要使用脚本包装器或 Win32 包。

这种差异归根结底在于 WinGet 的组织方式。它主要从两个来源提取应用:Microsoft Store(msstore)和 GitHub 上的 WinGet 社区存储库。Intune 的 Store 集成取代了已停用的 Microsoft Store for Business,但它只连接到前者。

在 Intune WinGet 相关讨论中,您也可能会看到提到 Microsoft 的Enterprise App Catalog。它是一个独立的 Win32 应用库,由 Microsoft 准备并托管,而且 Microsoft 表示它不使用 WinGet。它还需要 Intune Plan 1 或 Plan 2 之外的额外订阅。

使用 WinGet 和 Intune 的四种方法

如果想通过 Intune 部署 WinGet 应用,仍然有办法做到。以下是通过 Intune 使用 WinGet 的四种最常见方式,包括它们最适合的使用场景及其局限性:

方法

应用源

额外许可

主要限制

适用场景

1. Microsoft Store 应用(新版)

Microsoft Store(msstore)

除了 Intune 外没有其他要求

仅限 Store 上架的应用;Win32 Store 应用仍处于预览阶段

供应商发布到 Microsoft Store 的应用

2. 将 WinGet 脚本封装为 Win32 应用

WinGet 社区存储库

除了 Intune 外没有其他要求

编写并维护安装、检测和卸载脚本;必须在 SYSTEM 下找到并运行 WinGet

一份简短的社区应用列表,以及一支熟悉 PowerShell 的团队

3. 运行 WinGet 升级的修复措施

WinGet 社区存储库

Windows Enterprise E3/E5 或 Education A3/A5

保持已安装应用为最新版本;不处理首次安装

更新已安装这些应用的设备上的应用卫生状况

4. 从安装程序构建的原生 Win32 安装包

通过 WinGet 清单或供应商找到的安装程序

除了 Intune 外没有其他要求

为每个应用及其各个版本提供打包、检测规则和测试

可控、经过测试的大规模部署

以下是每种方法的具体操作步骤。

方法 1:使用 Microsoft Store 应用(新)类型部署 Microsoft Store 应用

第一种(也可以说是最简单的)部署应用的方法,是通过 Microsoft Store 应用。只需几个简单步骤即可完成:

  1. 在 Intune 管理中心,前往“应用”→“所有应用”→“创建”,然后在“商店应用”下选择“Microsoft Store 应用(新)”。

  2. 选择“搜索 Microsoft Store 应用”,然后按名称、发布者或 Store 应用 ID 搜索所需应用。结果将显示每个应用是 Win32 还是 UWP。

  3. 检查预填的应用信息,将“安装行为”设置为“系统”或“用户”(请注意,某些应用仅支持其中一种),并设置 Company Portal 选项(如精选应用和类别)。

  4. 将该应用分配为“必需”“已注册设备可用”或“卸载”,并设置最终用户通知、重启宽限期和安装截止时间。

  5. 检查并创建。当有新版本发布时,Intune 会让应用保持最新状态。

话虽如此,还是有一些限制和前提条件需要注意。这些因素可能会让流程变得更复杂,也意味着可能需要尝试其他方法:

  1. 设备需要安装 Intune Management Extension、至少两个处理器核心,以及对 Store 和发布商内容的网络访问权限。

  2. Store 中的 Win32 应用仍处于预览阶段,并非每个 Win32 应用都可搜索。同样,付费应用和 ARM64 安装程序也不受支持。

  3. 仅当来自 Store 的 Win32 应用仍分配在 Intune 中时,它们才会保持更新。

  4. Entra 注册的设备必须使用系统安装行为(因此不能选择“用户”)。

方法 2:将 WinGet 命令封装到 Win32 应用中

如果 Microsoft Store 应用无法满足需求,也可以通过将 WinGet 命令封装到 Win32 应用中,经由 Intune 部署 WinGet。在这些情况下,Win32 应用比普通的平台脚本更可靠,因为它包含状态检测、返回码和卸载命令,而这些都是单行脚本部署所不具备的。

为什么 Intune 以 SYSTEM 身份运行时 WinGet 会失败

当 Win32 应用的安装行为设为 System 时,Intune 会以 SYSTEM 身份运行其安装命令,而这正是 WinGet 出问题的地方。由于 WinGet CLI 包含在 App Installer 中,而 App Installer 是一个按用户注册的打包(MSIX)应用,因此SYSTEM 上下文不支持 WinGet CLI。因此,在 SYSTEM 脚本中按名称调用 WinGet 通常会失败,因为 SYSTEM 无法定位它。

有一些变通方法。社区脚本通常通过在 C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_*_x64__8wekyb3d8bbwe 下解析 winget.exe 来解决此问题,但这不是 Microsoft 支持的方法。Microsoft 支持的方案是使用 Microsoft.WinGet.Client PowerShell 模块,它可在系统上下文中用于已在整机范围安装的应用。

编写安装脚本

要编写安装脚本,先找到安装包 ID,然后通过该精确 ID 从社区存储库中进行安装。可以使用 winget search <app name> 查找 ID,或者无需命令行,直接在 winstall(Splashtop 提供的免费 WinGet 目录浏览器)中查找。获取 ID 后,安装命令大致如下:winget install --id Git.Git -e --source winget --silent --accept-package-agreements --accept-source-agreements

对于 SYSTEM 安装,建议加入 --scope machine。请注意,Microsoft 警告说,EXE 安装程序对 scope 的处理并不一致。

对于 Microsoft Intune,安装命令可以是一个不超过 50 KB 的 PowerShell 脚本。在命令字段中使用 powershell.exe 会启动 32 位版本,而使用 Sysnative 路径则可使用 64 位 PowerShell。

添加检测脚本

请务必添加一个脚本,用于检测并确认应用何时已正确安装。仅当脚本以代码 0 退出并将输出写入 STDOUT 时,Intune counts the app as installed;任何 STDERR 输出都会被视为未安装。该脚本通常会检查应用的安装文件夹、文件版本或卸载注册表项。如果使用 winget list 进行检查,也会遇到同样的 SYSTEM 问题,因此最好使用文件或注册表检查。

打包脚本并上传 Win32 应用

最后,使用 Microsoft Win32 Content Prep Tool 封装这些脚本,以生成 .intunewin文件。然后,您可以在 Apps → All apps → Add → Windows app (Win32) 下添加该文件,将安装行为设置为 System,并添加卸载命令、检测脚本和要求。在卸载命令中使用完整路径,因为 Intune 不会在其中展开环境变量。

请记住,每个应用都需要各自的脚本集和更新,而且安装了 WinGet 的每台设备上都必须已安装并正常运行 WinGet。因此,与其他方法相比,这种方法的维护负担可能更高。

方法 3:使用 Intune Remediations 保持 WinGet 应用为最新状态

借助 Intune Remediations,可以将检测脚本与修正脚本配对使用。对于 WinGet,检测脚本会检查已安装应用是否有新版本可用;如果有,修正脚本就会针对该包 ID 运行 winget upgrade。这可以作为一种与方法 2 和 4 搭配的更新方式,但无法处理初始安装。

首先要看许可。Intune Remediations 需要 Windows Enterprise E3 或 E5(包含在 Microsoft 365 F3、E3 或 E5 中),并且设备必须由 Intune 管理或协同管理,同时运行 Windows Enterprise、Professional 或 Education。

如需使用 Intune Remediations 保持应用为最新状态,只需按照以下几个简单步骤操作:

  1. 在 Intune 管理中心中,前往“设备”→“管理设备”→“脚本和修正措施”。

  2. 创建一个包含检测脚本的脚本包,用于检查该包 ID 是否有可用升级。

  3. 添加一个修复脚本,使用 --silent 和两个 --accept 标志为该 ID 运行升级。

  4. 将其分配给设备组,并设置检查更新的日程。

请务必以要升级的特定程序包 ID 为目标。虽然可以使用 winget upgrade --all,但这会更新 WinGet 识别到的每个应用,包括 IT 尚未批准或测试的应用。还要注意,WinGet 会从存储库安装最新版本,因此它可能会在 IT 团队有机会测试之前就推出更新。如果修正脚本以 SYSTEM 身份运行,就会遇到与方法 2 中所述相同的 WinGet 限制。

方法 4:将安装程序打包为原生 Win32 应用

也可以将安装程序重新打包为原生 Win32 应用。在这种情况下,WinGet 充当的是应用信息来源,而不是应用本身。通过使用 WinGet 清单查找安装程序及其静默开关,可以将该安装程序作为标准 Win32 应用进行部署。

这意味着设备无需可正常运行的 WinGet 客户端即可部署应用,SYSTEM 上下文问题不再适用,并且还可以使用 Intune 完整的 Win32 功能。

只需几个步骤,即可将安装程序打包为 Win32 应用:

  1. 使用 winget search 查找程序包 ID(或在 winstall 上查询),并检查其清单,确认安装程序类型、下载 URL 以及静默安装参数。(WinGet 要求列出的每个安装程序都支持静默安装。)

  2. 使用 WinGet 或从供应商处下载安装程序。

  3. 确认该安装程序类型的静默安装命令。我们的MSI 静默安装和EXE 静默安装指南介绍了各类安装程序的开关参数。

  4. 使用 Microsoft Win32 Content Prep Tool 封装安装程序,以创建 .intunewin 文件文件。

  5. 将其添加为 Windows 应用(Win32),包括安装和卸载命令、检测规则(按 MSI 产品代码、文件或注册表)、要求和返回代码。

  6. 在推广到更多设备之前,先在一台干净的测试设备上测试应用的安装效果、是否能检测到安装已完成,以及卸载是否正常。

  7. 每当发布新版本时,都需要重新执行构建,并使用 supersedence 替换旧应用。

此选项可为 IT 团队提供最高程度的自定义和控制,不过这也意味着他们必须为每个应用和更新重复这一流程。因此,应用目录庞大的团队可能难以跟上这项工作量。

那么,哪种方法最有效?我们可以逐一拆解,看看什么时候这种权衡是值得的,什么时候其他方法更好。

WinGet 与 Intune 中的 Win32 应用:哪种方式更适合

核心选择在于,设备是在安装时运行 WinGet,还是接收您提前打包好的 Win32 应用。以下是两者的对比:

因素

安装时使用 WinGet(方法 2 和 3)

封装的 Win32 应用(方法 4)

设备上的 WinGet 客户端

必需,且必须能在 SYSTEM 下运行

不需要

安装程序的来源

从清单中的 URL 下载到每台设备

作为 .intunewin 文件一次上传到 Intune文件

可安装的版本

无论存储库列出了什么内容,除非使用 --version 固定版本

您打包并测试过的确切构建版本

检测

由您编写并维护的脚本

内置 MSI、文件或注册表规则,或脚本

更新

修正措施或为每个应用创建新脚本

新建程序包并设置取代关系

前期工作量

每个应用成本低

每个应用的成本更高

比较这些选项后,我们可以看到几个重要细节。对于少量低风险实用工具,WinGet 脚本可以更快,前期所需投入也更少。对于业务应用、受监管设备或大型应用目录,打包的 Win32 应用更可靠,因为它能在大规模推出前提供可预测的版本并完成测试。

如果该应用已在 Microsoft Store 上架,方法 1 通常是最省事的选择。

使用 Intune 部署 WinGet 应用时的常见问题

即使采用了正确的方法,通过 Intune 部署 WinGet 应用仍然存在一些挑战。IT 团队在部署应用时可能会遇到一些常见问题,但也可以识别并解决这些问题。

常见问题包括:

1. Intune 脚本中无法识别 WinGet

如果脚本报告无法识别 winget,那么脚本很可能是在 SYSTEM 下运行;在该环境中不支持 WinGet CLI,因为 App Installer 是按用户注册的。这个问题可以通过将 winget.exe 解析为其完整路径来解决,也可以像方法 2 中提到的那样,使用 Microsoft.WinGet.Client PowerShell 模块。

2. 应用安装到了错误的用户或错误的位置

如果应用安装到了错误的位置,或者安装给了错误的用户,那就是安装范围的问题。在 SYSTEM 下,用户范围会解析为 SYSTEM 自己的配置文件,而 EXE 安装程序在用户范围和计算机范围的处理上并不一致。要解决此问题,请在 SYSTEM 安装中使用 --scope machine(请务必先进行测试,再更大范围地部署该应用)。

3. 下载失败,并显示 403 Forbidden 错误

如果下载返回 403 Forbidden 错误,软件供应商可能在其下载服务器上屏蔽了 WinGet 的 user agent。如果安装程序在浏览器中可以正常下载,那很可能就是原因。发生这种情况时,可以直接下载安装程序,并像方法 4 中所述那样,将其作为打包的 Win32 应用进行部署。

4. 商店应用未显示在 Intune 搜索结果中

如果搜索某个 Store 应用时没有显示,可能有以下三个原因:1. 该应用在您所在地区不可用;2. 该应用是付费应用,因此不受支持;3. 其平台不受支持。无论原因是什么,先确认该应用的列表信息;如果无法访问,请使用方法 2 或 4 进行安装。

5. UWP Store 应用报告 "安装后未检测到"(0x87D1041C)

如果看到此警报,说明某个 UWP 应用被以 System 安装行为分配到了某台设备,而该设备上已经有这个应用。这种情况下,不用担心;该应用仍会正确安装。Microsoft 也建议不要对同一个应用混用用户上下文和系统上下文。

6. 查找 WinGet 安装失败的原因

如果 WinGet 安装失败,而您不确定原因,可以进行调查以确定并解决问题原因。在命令中添加 --verbose-logs 可获取完整日志,还可以运行 winget error <code>,将退出代码转换为说明。请注意,这涵盖了 WinGet、MSIX 和 MSI 代码,但许多 EXE 安装程序可能使用非标准代码。我们的EXE 静默安装指南介绍了如何找到这些代码。

Splashtop Agentic Packr 如何将 WinGet 应用转换为经过测试的 Intune 软件包

使用 Intune 部署 WinGet 应用可能很复杂,但其实不必如此。借助合适的自动化,团队可以快速高效地打包安装程序,而无需占用 IT 资源。

这就引出了 Splashtop Agentic Packr,这是一款面向现代 IT 团队、由 AI 驱动的应用打包与部署工具。Agentic Packr 可通过 Microsoft Intune、SCCM 等平台打包、验证和部署应用,大幅减少手动工作量。

Splashtop Agentic Packr 提供多项功能和优势,包括:

1. 将 WinGet 作为源,设备上无需安装 WinGet 客户端

Splashtop Agentic Packr 可以从经过验证的 WinGet 目录、通过 WinGet 或 Chocolatey 软件包 ID,或从自有安装程序对应用进行打包。它会构建原生适配 Intune 的 Win32 应用,因此无需担心用户经常遇到的 WinGet 和 SYSTEM 上下文问题。

2. 在任何内容发布前,先编写并测试检测规则

当 AI 驱动的代理读取安装程序时,它会编写检测规则,并在干净的虚拟机上测试该构建版本。这些测试会检查安装、检测和卸载是否正常运行,执行恶意软件扫描,并生成 QA 评分卡和日志,供 IT 管理员在应用进入 Intune 并部署到各设备之前进行审核。

3. 无需手动重新构建即可发布和推出新版本

Splashtop Agentic Packr 无需在每次发布新更新时手动重建安装包。借助一键连接 Intune 租户的 Express 方式和自动版本更新功能,Agentic Packr 能够检测新更新、打包、测试,并推出更新后的安装包,无需管理员手动处理每次更新。

4. 控制用户看到的内容

Splashtop Agentic Packr 让 IT 能够控制安装和更新向用户显示的方式。团队可以自定义最终用户通知、延后选项、重启提示和宽限期,从而降低必需安装和更新在用户执行任务过程中造成中断的可能性。

将 WinGet 应用部署到 Intune,无需维护脚本

WinGet 是应用信息的重要来源,Intune 也非常适合部署应用,但 Intune 不能直接从 WinGet 社区存储库进行部署。可扩展的方法是将 WinGet 条目转换为经过测试的 Win32 包。

借助 Splashtop Agentic Packr,您可以用少得多的手动工作来构建、测试和发布应用程序包。Agentic Packr 让打包更快、更轻松,通过单一控制台即可完成应用打包、部署和更新,同时让管理员始终掌控全局。

想通过 Intune 部署 WinGet 应用,却不想被繁琐流程困扰?了解 Splashtop Agentic Packr 今天如何为您提供帮助。

告别手动打包应用
让 Splashtop Agentic Packr 为 Intune 构建、测试并发布每个应用和更新。团队只需审核结果,设备即可保持最新,无需手动编写脚本。


分享
RSS 订阅源订阅

常见问题解答

Intune 可以从 WinGet 存储库部署应用吗?
如何使用 Intune 部署 WinGet 应用?
为什么 winget 在我的 Intune 脚本中不起作用?
在 Intune 中,WinGet 应用和 Win32 应用有什么区别?
Intune 企业应用管理使用 WinGet 吗?
如何让 Intune 中的 WinGet 应用保持最新?
Splashtop Agentic Packr 如何与 WinGet 和 Intune 配合使用?

相关内容

Two coworkers typing code on their computers.
智能体应用打包

静默安装 EXE:如何查找并使用正确的开关参数

了解更多
A man working on a computer with code on-screen in an office.
智能体应用打包

如何运行 msiexec 静默安装:命令和开关

A man typing on a computer in an office.
智能体应用打包

什么是 AI 应用打包?智能体打包如何运作

A person working at their computer.
智能体应用打包

为什么缓慢的 Intune 应用打包会让第三方应用暴露于风险之中

查看所有博客
联系我们
微信关注领福利🧧
QR Code
电话咨询: 0571-87119188
工作日 9:00-17:00
获取最新的 Splashtop 新闻
  • 规范与标准
  • 隐私政策
  • 使用条款
版权所有© 2026 Splashtop Inc.保留所有权利。
浙公网安备 33010602011788号 浙ICP备17034078号-3
QR Code
关注公众号 随时随地留言咨询
电话咨询: 0571-87119188
工作日: 9:00-17:00
WeChat关注官方微信公众号