Windows应用分发功能的当前状态

此页面记录了Windows应用分发功能的当前状态,这些功能已更改、已知存在限制或行为不同于其文档可能建议的行为。 随着平台的发展,它会更新。

上次审阅时间: 2026 年 4 月


ms-appinstaller URI 协议

状态:默认禁用(自 2023 年 12 月以来)

ms-appinstaller:?source= URI 协议处理程序允许网页触发一键式应用安装程序安装,而无需用户先下载文件。 2023 年 12 月 12 日发布的应用安装程序版本 1.21.3421.0 中默认禁用 了此功能,以响应 Emotet 恶意软件活动(CVE-2021-43890 攻击模式)的滥用行为。

背景 地位
使用者设备(默认值) ❌ 禁用
企业设备(由 IT 管理) ✅ 可以通过组策略重新启用

Impact: Microsoft Learn 上的教程页面演示了<a href="ms-appinstaller:?source=...">Install</a> Web 链接不再适用于大多数用户。

解决方法:

  • 直接链接到 .appinstaller 文件 — 用户下载并双击它。 这仍然有效,建议用于非企业方案。
  • 发布到 Microsoft Store — 提供一键式安装体验,无需协议依赖项。
  • 企业重新启用:通过DesktopAppInstaller CSP将组策略EnableMSAppInstallerProtocol设置为启用。 注意:策略值 Disabled 表示“未配置设置”(双负);设置为 Enabled 重新启用协议。

References:App Installer 安全功能


.appinstaller 文件架构版本

Status:默认情况下,Visual Studio生成过时的架构

.appinstaller XML 文件支持多个架构版本,每个版本具有不同的功能。 默认情况下,Visual Studio使用 2017/2 架构生成文件,不支持多个重要的更新配置属性。

Attribute 2017/2 架构 2021 架构
ShowPrompt ❌ 不支持 ✅ 受支持
UpdateBlocksActivation ❌ 不支持 ✅ 受支持
HoursBetweenUpdateChecks ❌ 不支持 ✅ 受支持
关于启动的基本更新 ✅ 受支持 ✅ 受支持

Impact:依赖Visual Studio生成 .appinstaller 文件的开发人员,然后配置 ShowPromptUpdateBlocksActivation 会在运行时以无提示方式忽略这些设置。

修复: 手动更新 .appinstaller 文件中的 xmlns 属性:

<!-- Change this: -->
<AppInstaller xmlns="http://schemas.microsoft.com/appx/appinstaller/2017/2" ...>

<!-- To this: -->
<AppInstaller xmlns="http://schemas.microsoft.com/appx/appinstaller/2021" ...>

References:自动更新和修复应用程序 · WindowsAppSDK 讨论 #5125


SmartScreen 信誉度:EV 证书不再提供直接绕过的权限

状态:2024 年的行为已更改

在 2024 年之前,扩展验证 (EV) 代码签名证书会立即赋予 SmartScreen 信誉,这样新签名的二进制文件不会显示下载警告。 Microsoft 在 2024 年更新了受信任根计划的要求,删除了特定于 EV 的 OID。 无论证书类型(OV 或 EV)如何,SmartScreen 信誉现在都是基于哈希的, 会随时间推移累积

影响: 为新版本购买 EV 证书而专门绕过 SmartScreen 警告的开发人员将发现 EV 证书不再提供此权益。

Current behavior:所有非商店、非Microsoft签名的二进制文件在首次下载时会显示 SmartScreen 提示,直到为该文件哈希累积足够的下载历史记录。

有关预期行为和建议的完整详细信息,请参阅 smartScreen Windows 应用开发人员的声誉


Windows 10 上的 MSIX 与 Windows 11

Status:一些 MSIX 功能仅适用于 Windows 11

MSIX 同时适用于 Windows 10 和 Windows 11,但多个功能(包括共享包容器、可变包目录和 MSIX 持久标识)只有在 Windows 11 上可用,且尚未移植到 Windows 10。 在 Windows 10 中,动态依赖项也通过 Windows 应用 SDK(Mdd* API/引导程序)得到支持,而在 Windows 11 中则另外提供了原生的操作系统实现。 此外,Windows 10主流支持于 2025 年 10 月 14 日结束。

有关完整比较表、已知未回移植的限制和每项功能的解决方法,请参阅 Windows 10 和 Windows 11 上的 MSIX。


MsixPackaging@1 Azure DevOps任务

状态:使用过时的依赖项

Azure DevOps管道中的 MsixPackaging@1 任务使用 MSBuild 4.8.4161.0(而不是 MSBuild 16+),针对节点 16 生成(在 2023 年 9 月达到生命周期结束)。 这可能会导致现代管道配置中的构建失败。

Workaround:直接在管道中使用 MSBuild,而不是在 MsixPackaging@1 任务中使用它,或者使用带有 microsoft/setup-msbuild 的 GitHub Actions。

References:GitHub问题 #518 · GitHub问题 #679