此页面记录了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 文件的开发人员,然后配置 ShowPrompt 或 UpdateBlocksActivation 会在运行时以无提示方式忽略这些设置。
修复: 手动更新 .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