MSIX 部署故障排除

本文可帮助你诊断和解决 MSIX 安装和部署失败。 其中介绍了常见的错误代码、如何读取部署日志,以及针对最常报告的问题进行修复。

注释

本文中对 .msix 的引用同样适用于.msixbundle加密.appx.appxbundle变体(.emsix.eappx等等),除非另有说明。

步骤 1:读取部署日志

当 MSIX 安装失败时,UI 中显示的错误代码通常是一个概要摘要。 事件查看器和 PowerShell 日志包含根本原因。

事件查看器

打开事件查看器并导航到:Applications and Services Logs > Microsoft > Windows > AppxDeployment-Server

查找与安装失败时间匹配的 严重错误警告 级别的事件。 详细信息窗格通常包含比向用户显示的错误代码和说明更具体的错误代码和说明。

PowerShell

Get-AppxLog | Where-Object {$_.EventId -eq 404} | Select-Object -Last 20

若想查看交互式的可筛选视图:

Get-AppxLog | Out-GridView

步骤 2:检查常见错误代码

下表介绍了开发人员最常报告的错误代码。 如果未列出代码,请参阅 Windows 应用程序的打包、部署和查询故障排除获取完整参考。

错误代码 名称 常见原因 修复
0x80073CF0 ERROR_INSTALL_OPEN_PACKAGE_FAILED 无法打开包文件 — 缺少文件、错误路径或权限问题 .msix验证文件是否存在于指定的路径。 如果通过 PowerShell 进行安装,请使用本地路径,而不是 UNC/网络共享路径。 使用管理员权限运行 PowerShell。
0x80073CF3 ERROR_INSTALL_PACKAGE_DOWNGRADE 已安装包的较新版本 首先卸载现有版本,或将程序包清单中的版本号更改为更高的值。
0x80073CF6 ERROR_INSTALL_REGISTRATION_FAILURE 包注册失败 — 通常是损坏的包注册数据库或系统文件 运行 wsreset -i 以重置Microsoft Store缓存。 如果问题仍然存在,请运行 sfc /scannow 以修复系统文件,或尝试 安装设置 > 应用 > [应用名称] > 高级选项 > 修复。 检查事件查看器是否有更具体的内部错误。
0x80073CF9 ERROR_INSTALL_PACKAGE_NOT_FOUND 在安装过程中找不到包或依赖项包 确保在主包之前安装所有依赖项包(VCLibs、.NET、WinAppSDK 运行时)。 可以在相同的命令中安装它们: Add-AppxPackage main.msix -DependencyPath dep1.msix, dep2.msix
0x80073CFA ERROR_REMOVE_FAILED 卸载/删除操作失败 — 应用可能正在运行,其状态可能已损坏,或者它是受保护的收件箱应用 关闭应用的所有实例,然后重试。 对于损坏状态,请在“清理启动”环境中尝试。 无法通过 Remove-AppxPackage 删除系统/收件箱应用。
0x80073CFB ERROR_PACKAGE_ALREADY_EXISTS 此用户已注册相同的套餐 首先卸载现有包: Get-AppxPackage <PackageName> | Remove-AppxPackage
0x80073D02 ERROR_PACKAGES_IN_USE 包当前正由正在运行的进程使用 在更新或卸载之前关闭应用的所有正在运行的实例。 使用任务管理器或 Get-Process 确认。
0x8007000D ERROR_INVALID_DATA 包已损坏、格式错误或清单中的发布者与签名证书不匹配 请核实 Publisher 字段(或在 Visual Studio 中的 Package.appxmanifest)是否与您的签名证书的 Subject完全匹配,包括空格和大小写。 重新生成并重新对包进行签名。
0x8BAD0042 CertNotTrusted 设备不信任签名证书(在下层Windows上使用 MSIX Core 时通常看到) 将签名证书导入目标设备上的 本地计算机 > 受信任人员 存储(而不是当前用户存储),或使用受信任的 CA 颁发的证书。 请参阅 受信任的证书
0x80070005 E_ACCESSDENIED 权限不足 使用管理员权限运行安装命令或脚本(例如,使用以管理员身份运行的命令提示符Run as administrator)。
0x80070002 ERROR_FILE_NOT_FOUND 清单中引用的文件在包中不存在 检查AppxManifest.xml中引用的资产或资源是否存在缺失。 重新生成包,并使用 MakeAppx unpack 验证其内容。

小窍门

从网络共享进行安装? 误导性错误的常见原因(尤其是 0x80073CF0 和 0x80070002)是在 UNC 路径上运行 Add-AppxPackage (\\server\share\app.msix)。 先将 .msix 文件复制到本地文件夹,然后安装。

步骤 3:验证先决条件

许多安装失败是由未满足的先决条件引起的,而不是包本身的问题。

证书信任 — 包签名证书必须位于 本地计算机 > 受信任人员 存储中,而不是当前用户的证书存储区。

Sideloading — 在 Windows 10 1809 版本(RS5)之前,旁加载需要单独的策略设置。 从 RS5 开始,默认允许受信任的应用包安装;在Windows 11上,不需要其他设置。 有关当前要求,请参阅 “启用设备进行开发 ”。

Dependencies — Windows 应用 SDK应用要求目标设备上安装Windows 应用 SDK运行时,除非使用的是自包含部署。 将 -DependencyPath 参数与 Add-AppxPackage 主包一起安装依赖项包。

应用安装程序应用 - 如果双击文件 .msix 不执行任何操作,则应用安装程序应用可能缺失。 从 Microsoft Store 安装它。

步骤 4:验证包清单

清单错误是安装失败的常见源。 使用 MakeAppx 验证包结构并检查清单:

# Unpack the package and inspect the manifest
MakeAppx unpack /p "C:\path\to\app.msix" /d "C:\unpack-output"

在输出文件夹中检查 AppxManifest.xml 以下内容:

  • XML 有效性(没有格式不正确的标记或缺少结束元素)
  • Publisher 字段应与签名证书的 Subject 完全匹配
  • 使用目标 OS 版本的正确命名空间的功能名称
  • 仅适用于 Windows 11 扩展的 MinOSVersion 约束

有关支持的属性和命名空间,请参阅 应用包清单架构参考

常见的 DEP 错误代码

具有 DEP 前缀的Visual Studio和 MSBuild 图面部署错误。 最常见的方法:

Code 含义 修复
DEP0700 包注册失败 通常,这是清单架构错误 - 请检查是否有无效的 XML、不支持的 xmlns 声明或不在允许列表中的功能名称。
DEP3300 找不到依赖项 在部署之前安装所需的框架包(VCLibs、.NET、WinAppSDK)。
DEP3301 包已经在不同的体系结构中注册 在部署其他体系结构生成之前,请卸载冲突的体系结构。

其他资源

有疑问? 使用 msix 标记询问 GitHub Copilot 或搜索 Stack Overflow。