对 Windows 应用的打包、部署和查询进行故障排除

使用这些建议可以解决你作为开发人员打包、部署或查询 Windows 应用包 (.msix/.appx) 时遇到的问题。

注意

本文适用于开发人员。 如果你不是开发人员,并且正在寻找有关 Windows 应用安装错误的帮助,请参阅 Windows 支持

获取诊断信息

API 失败时,会返回描述问题的错误代码。 如果错误代码未提供足够的信息,则可以在详细的事件日志中找到更多诊断信息。

若要使用事件查看器访问打包和部署事件日志,请执行以下步骤:

  1. 执行以下步骤之一:

    • 单击 Windows 菜单上的开始,键入事件查看器,然后按 Enter
    • 运行 eventvwr.msc
  2. 在左侧页面中,展开事件查看器(本地)>应用程序和服务日志>Microsoft>Windows

  3. 检查以下类别下的可用日志:

    • AppxPackagingOM>Microsoft-Windows-AppxPackaging/Operational
    • AppXDeployment-Server>Microsoft-Windows-AppXDeploymentServer/Operational

首先查看 AppXDeployment-Server 下的日志。 如果错误是由 0x80073CF0ERROR_INSTALL_OPEN_PACKAGE_FAILED 引起的,则 AppxpackagingOM 日志中可能出现其他详细信息。

还可以在 PowerShell 中使用 Get-AppxLog 命令获取前几个记录的事件。 以下示例显示与最近的部署操作相关联的日志。

Get-Appxlog

以下示例在单独窗口中的交互式表中显示与最近的部署操作相关联的日志。

Get-Appxlog | Out-GridView

常见错误代码

下表列出了一些最常见的错误代码。 如果需要有关其中一个错误的进一步帮助,或者遇到不在此列表中的错误代码,请参阅其他帮助选项

错误代码 描述和可能的原因
E_FILENOTFOUND 0x80070002 未找到文件或路径。 这可能发生在 COM 类型库验证期间,因为验证要求目录的路径实际存在于 MSIX 包中。
ERROR_BAD_FORMAT 0x8007000B 包的格式不正确,需要重新生成或重新签名。
如果签名证书使用者名称和 AppxManifest.xml 发布者名称不匹配,则可能会出现此错误。
请参阅如何使用 SignTool 对应用包进行签名
E_INVALIDARG 0x80070057 一个或多个参数无效。 如果检查 AppXDeployment-Server 事件日志并看到以下事件:“安装包时,系统由于以下错误而无法注册 windows.repositoryExtension 扩展:参数不正确。”
如果清单元素 DisplayName 或 Description 包含 Windows 防火墙不允许的字符(例如 |),则可能会出现此错误,因为 Windows 无法为包创建 AppContainer 配置文件。 请从清单中删除这些字符,并尝试安装包。
ERROR_INSTALL_OPEN_
PACKAGE_FAILED
0x80073CF0 无法打开包。
可能的原因:
  • 未对包进行签名。
  • 发布者名称与签名证书使用者不匹配。
  • 缺少 file:// 前缀,或者无法在指定位置找到包。
有关详细信息,请检查 AppxPackagingOM 事件日志。
ERROR_INSTALL_PACKAGE_
NOT_FOUND
0x80073CF1 无法找到包。
删除未为当前用户安装的包时,可能会出现此错误。
ERROR_INSTALL_INVALID_
PACKAGE
0x80073CF2 包数据无效。
ERROR_INSTALL_RESOLVE_
DEPENDENCY_FAILED
0x80073CF3 包未通过更新、依赖项或冲突验证。
可能的原因:
  • 传入包与已安装的包冲突。
  • 找不到指定的包依赖项。
  • 包不支持正确的处理器体系结构。
有关更多信息,请查看 AppXDeployment-Server 事件日志。
ERROR_INSTALL_OUT_
OF_DISK_SPACE
0x80073CF4 计算机上的磁盘空间不足。 请释放一些空间,然后重试。
ERROR_INSTALL_NETWORK_
FAILURE
0x80073CF5 无法下载包。
ERROR_INSTALL_
REGISTRATION_FAILURE
0x80073CF6 无法注册包。
有关更多信息,请查看 AppXDeployment-Server 事件日志。
ERROR_INSTALL_
DEREGISTRATION_EFAILURE
0x80073CF7 无法取消注册包。
删除包时可能会出现此错误。
有关更多信息,请查看 AppXDeployment-Server 事件日志。
ERROR_INSTALL_CANCEL 0x80073CF8 用户取消了安装请求。
ERROR_INSTALL_FAILED 0x80073CF9 包安装失败。 请与软件供应商联系。
有关更多信息,请查看 AppXDeployment-Server 事件日志。
ERROR_REMOVE_FAILED 0x80073CFA 包删除失败。
在卸载包期间发生的故障可能会导致此错误。
有关详细信息,请参阅 RemovePackageAsync
ERROR_PACKAGE_
ALREADY_EXISTS
0x80073CFB 提供的包已安装,并且阻止重新安装包。
如果安装的包与已安装的包在位上不相同,则可能会出现此错误。 请注意,数字签名也是包的一部分。 因此,如果重新构建或重新签署一个包,它将不再与先前安装的包相同。 修复此错误的两个可能选项是: (1) 增加应用程序的版本号,然后重新生成并重新签名包 (2) 在安装新包之前,为系统上的每个用户删除旧包。
ERROR_NEEDS_REMEDIATION 0x80073CFC 无法启动应用。 请尝试重新安装应用。
ERROR_INSTALL_
PREREQUISITE_FAILED
0x80073CFD 无法满足指定的安装先决条件。
ERROR_PACKAGE_
REPOSITORY_CORRUPTED
0x80073CFE 包存储库已损坏。
如果此注册表项引用的文件夹不存在或已损坏,则可能会出现此错误:
HKLM\Software\Microsoft\Windows</strong>
CurrentVersion\Appx\PackageRepositoryRoot
若要从此状态恢复,请刷新电脑。
ERROR_INSTALL_
POLICY_FAILURE
0x80073CFF 若要安装此应用,需要开发人员许可证或支持旁加载的系统。
如果包不满足以下要求之一,则可能会出现此错误:
  • 该应用在 Visual Studio 中使用 F5 部署在具有 Windows 开发人员许可证的计算机上。
  • 该包使用 Microsoft 签名进行签名,并作为 Windows 的一部分或从 Microsoft 应用商店进行部署。
  • 该包使用受信任的签名进行签名,并安装在具有开发人员许可证的计算机上、启用了 AllowAllTrustedApps 策略的已加入域的计算机,或者启用了 AllowAllTrustedApps 策略的 Windows 旁加载许可证的计算机。
ERROR_PACKAGE_UPDATING 0x80073D00 无法启动该应用,因为它当前正在更新。
ERROR_DEPLOYMENT_
BLOCKED_BY_POLICY
0x80073D01 包部署操作被策略阻止。 请与系统管理员联系。
可能的原因:
  • 应用程序控制策略阻止了包部署。
  • 包部署被“允许特殊配置文件中的部署操作”策略阻止。
其中一个可能的原因是需要漫游配置文件。 有关在用户帐户上设置漫游用户配置文件的信息,请参阅部署漫游用户配置文件。 如果系统上未配置任何策略,但仍然看到此错误,则可能是使用临时配置文件登录的。 请注销并重新登录,然后重试该操作。
ERROR_PACKAGES_IN_USE 0x80073D02 无法安装包,因为它修改的资源当前正在使用中。
ERROR_RECOVERY_
FILE_CORRUPT
0x80073D03 无法恢复包,因为恢复所需的数据已损坏。
ERROR_INVALID_
STAGED_SIGNATURE
0x80073D04 签名无效。 若要在开发人员模式下注册,AppxSignature.p7x 和 AppxBlockMap.xml 必须有效或不存在。
如果你是在 Visual Studio 中使用 F5 的开发人员,请确保生成的项目目录不包含该包以前版本的签名或块映射文件。
ERROR_DELETING_EXISTING_
APPLICATIONDATA_STORE_FAILED
0x80073D05 删除包以前存在的应用程序数据时出错。
如果模拟器正在运行,则可能会出现此错误。 关闭模拟器。 如果在应用数据中打开了文件(例如,如果在文本编辑器中打开了日志文件),也可能会出现此错误。
ERROR_INSTALL_
PACKAGE_DOWNGRADE
0x80073D06 无法安装包,因为已安装此包的更高版本。
ERROR_SYSTEM_
NEEDS_REMEDIATION
0x80073D07 检测到系统二进制文件中的错误。 若要解决此问题,请尝试刷新电脑。
ERROR_APPX_INTEGRITY_
FAILURE_EXTERNAL
0x80073D08 在系统上检测到损坏的非 Windows 二进制文件。
ERROR_RESILIENCY_
FILE_CORRUPT
0x80073D09 无法恢复操作,因为恢复所需的数据已损坏。
ERROR_INSTALL_FIREWALL_
SERVICE_NOT_RUNNING
0x80073D0A 无法安装包,因为 Windows 防火墙服务未运行。 请启用 Windows 防火墙服务,然后重试。
ERROR_PACKAGE_MOVE_FAILED 0x80073D0B 包移动操作失败。
ERROR_INSTALL_VOLUME_
NOT_EMPTY
0x80073D0C 部署操作失败,因为卷不为空。
ERROR_INSTALL_VOLUME_
OFFLINE
0x80073D0D 部署操作失败,因为卷处于脱机状态。 对于包更新,卷是指所有包版本的已安装卷。
ERROR_INSTALL_VOLUME_
CORRUPT
0x80073D0E 部署操作失败,因为指定的卷已损坏。
ERROR_NEEDS_REGISTRATION

0x80073D0F 部署操作失败,因为需要首先注册指定的应用程序。
ERROR_INSTALL_WRONG_
PROCESSOR_ARCHITECTURE
0x80073D10 部署操作失败,因为包的目标处理器体系结构错误。
ERROR_DEV_SIDELOAD_
LIMIT_EXCEEDED
0x80073D11 你已达到此设备上允许的开发人员旁加载包的最大数量。 请卸载旁加载包,然后重试。
ERROR_INSTALL_OPTIONAL_
PACKAGE_REQUIRES_
MAIN_PACKAGE
0x80073D12 需要主应用包才能安装此可选包。 请先安装主包,然后重试。
ERROR_PACKAGE_NOT_
SUPPORTED_ON_FILESYSTEM
0x80073D13 此文件系统不支持此应用包类型。
ERROR_PACKAGE_MOVE_
BLOCKED_BY_STREAMING
0x80073D14 在应用程序完成流式传输之前,包移动操作将被阻止。
ERROR_INSTALL_OPTIONAL_
PACKAGE_APPLICATIONID_
NOT_UNIQUE
0x80073D15 主应用包或其他可选应用包与此可选包具有相同的应用程序 ID。 更改可选包的应用程序 ID,以避免冲突。
ERROR_PACKAGE_STAGING_
ONHOLD
0x80073D16 此暂存会话已保留,以允许对另一个暂存操作进行优先级排序。
ERROR_INSTALL_INVALID_
RELATED_SET_UPDATE
0x80073D17 无法更新相关集,因为更新集无效。 必须同时更新相关集中的所有包。
ERROR_INSTALL_OPTIONAL_
PACKAGE_REQUIRES_MAIN_
PACKAGE_FULLTRUST_CAPABILITY
0x80073D18 具有 FullTrust 入口点的可选包要求主包具有 runFullTrust 功能。
ERROR_DEPLOYMENT_BLOCKED_
BY_USER_LOG_OFF
0x80073D19 由于用户已注销,因此发生错误。
ERROR_PROVISION_OPTIONAL_
PACKAGE_REQUIRES_MAIN_
PACKAGE_PROVISIONED
0x80073D1A 可选包预配要求同时提供依赖项主包。
ERROR_PACKAGES_REPUTATION_
CHECK_FAILED
0x80073D1B 包未通过 SmartScreen 信誉检查
ERROR_PACKAGES_REPUTATION_
CHECK_TIMEDOUT
0x80073D1C SmartScreen 信誉检查操作超时。
ERROR_DEPLOYMENT_OPTION_
NOT_SUPPORTED
0x80073D1D 不支持当前部署选项。
ERROR_APPINSTALLER_
ACTIVATION_BLOCKED
0x80073D1E 由于此应用的 .appinstaller 更新设置,激活被阻止。
ERROR_REGISTRATION_FROM_
REMOTE_DRIVE_NOT_SUPPORTED
0x80073D1F 不支持远程驱动器。 使用 \server\share 注册远程包。
ERROR_APPX_RAW_
DATA_WRITE_FAILED
0x80073D20 无法处理下载的包数据并将其写入磁盘。
ERROR_DEPLOYMENT_BLOCKED_
BY_VOLUME_POLICY_PACKAGE
0x80073D21 由于限制在非系统卷上部署的每个包系列策略,部署操作被阻止。 根据策略,此应用必须安装到系统驱动器,但未设置为默认值。 在“存储设置”中,将系统驱动器设为保存新内容的默认位置,然后重试安装。
ERROR_DEPLOYMENT_BLOCKED_
BY_VOLUME_POLICY_MACHINE
0x80073D22 由于计算机范围的策略限制在非系统卷上进行部署,部署操作被阻止。 根据策略,此应用必须安装到系统驱动器,但未设置为默认值。 在“存储设置”中,将系统驱动器设为保存新内容的默认位置,然后重试安装。
ERROR_DEPLOYMENT_BLOCKED_
BY_PROFILE_POLICY
0x80073D23 部署操作被阻止,因为不允许特殊配置文件部署(特殊配置文件是用户配置文件,其中的更改在用户退出后被丢弃)。 请尝试登录非特殊配置文件的帐户。 可以尝试注销并重新登录到当前帐户,或尝试登录到其他帐户。
ERROR_DEPLOYMENT_FAILED_
CONFLICTING_MUTABLE_PACKAGE_
DIRECTORY
0x80073D24 由于包的可变包目录冲突,部署操作失败。 若要安装此包,请删除具有冲突的可变包目录的现有包。
ERROR_SINGLETON_RESOURCE_
INSTALLED_IN_ACTIVE_USER
0x80073D25 包安装失败,因为指定了单一实例资源,并且已登录另一个安装了该包的用户。 请确保所有已安装包的活动用户都已注销,然后重试安装。
ERROR_DIFFERENT_VERSION_
OF_PACKAGED_SERVICE_INSTALLED
0x80073D26 由于安装了不同版本的服务,包安装失败。 尝试安装较新版本的包。
ERROR_SERVICE_EXISTS_
AS_NON_PACKAGED_SERVICE
0x80073D27 包安装失败,因为服务的某个版本存在于 .msix/.appx 包之外。 请与软件供应商联系。
ERROR_PACKAGED_SERVICE_
REQUIRES_ADMIN_PRIVILEGES
0x80073D28 包安装失败,因为需要管理员权限。 请与管理员联系以安装此包。
ERROR_REDIRECTION_TO_
DEFAULT_ACCOUNT_NOT_ALLOWED
0x80073D29 包部署失败,因为当调用方表示不重定向到默认帐户时,操作却重定向到该帐户。
ERROR_PACKAGE_LACKS_
CAPABILITY_TO_DEPLOY_ON_HOST
0x80073D2A 包部署失败,因为包需要以本机为目标的功能。
ERROR_UNSIGNED_PACKAGE_
INVALID_CONTENT
0x80073D2B 包部署失败,因为其内容对于未签名的包无效。
ERROR_UNSIGNED_PACKAGE_
INVALID_PUBLISHER_NAMESPACE
0x80073D2C 包部署失败,因为其发布者不在未签名的命名空间中。
ERROR_SIGNED_PACKAGE_
INVALID_PUBLISHER_NAMESPACE
0x80073D2D 包部署失败,因为其发布者不在已签名的命名空间中。
ERROR_PACKAGE_EXTERNAL_
LOCATION_NOT_ALLOWED
0x80073D2E 包部署失败,因为其发布者不在已签名的命名空间中。
ERROR_INSTALL_FULLTRUST_
HOSTRUNTIME_REQUIRES_MAIN_
PACKAGE_FULLTRUST_CAPABILITY
0x80073D2F 解析到具有完全信任内容的包的主机运行时依赖项要求主包具有 runFullTrust 功能。
APPX_E_PACKAGING_INTERNAL 0x80080200 打包 API 遇到内部错误。
APPX_E_INTERLEAVING_
NOT_ALLOWED
0x80080201 包无效,因为其内容交错排列。
APPX_E_RELATIONSHIPS_
NOT_ALLOWED
0x80080202 包无效,因为它包含 OPC 关系。
APPX_E_MISSING_
REQUIRED_FILE
0x80080203 包无效,因为它缺少清单或块映射,或者存在代码完整性文件但缺少签名文件。
确保包未缺失以下一个或多个必需文件:
  • \AppxManifest.xml
  • \AppxBlockMap.xml
如果包包含 \AppxMetadata\CodeIntegrity.cat,则还必须包含 \AppxSignature.p7x。
APPX_E_INVALID_MANIFEST 0x80080204 包的 AppxManifest.xml 文件无效。
APPX_E_INVALID_BLOCKMAP 0x80080205 包的 AppxBlockMap.xml 文件无效。
APPX_E_CORRUPT_CONTENT 0x80080206 无法读取包内容,因为它已损坏。
APPX_E_BLOCK_
HASH_INVALID
0x80080207 块的计算哈希值与块映射中存储的哈希值不匹配。
APPX_E_REQUESTED_
RANGE_TOO_LARGE
0x80080208 当转换为块的字节范围时,请求的字节范围超过 4 GB。
TRUST_E_NOSIGNATURE 0x800B0100 主题中没有签名。
如果包未签名或签名无效,则可能会出现此错误。 必须对包进行签名才能部署。
“CERT_E_UNTRUSTEDROOT” 0x800B0109 已处理证书链,但是在不受信任提供程序信任的根证书中终止。
请参阅对包进行签名
CERT_E_CHAINING 0x800B010A 无法将证书链建立到受信任的根证书颁发机构。
请参阅对包进行签名
APPX_E_INVALID_
SIP_CLIENT_DATA
0x80080209 用于对包进行签名的 SIP_SUBJECTINFO 结构不包含所需的数据
APPX_E_INVALID_
KEY_INFO
0x8008020A 用于加密或解密包的 APPX_KEY_INFO 结构包含无效数据。
APPX_E_INVALID_
CONTENTGROUPMAP
0x8008020B .msix/.appx 包的内容组映射无效。
APPX_E_INVALID_
APPINSTALLER
0x8008020C 包的 .appinstaller 文件无效。
APPX_E_DELTA_BASELINE_
VERSION_MISMATCH
0x8008020D 增量包中的基线包版本与要更新的基线包中的版本不匹配。
APPX_E_DELTA_PACKAGE_
MISSING_FILE
0x8008020E 增量包缺少更新包中的一个文件。
APPX_E_INVALID_
DELTA_PACKAGE
0x8008020F 增量包无效。
APPX_E_DELTA_APPENDED_
PACKAGE_NOT_ALLOWED
0x80080210 当前操作不允许使用增量附加包。
APPX_E_INVALID_
PACKAGING_LAYOUT
0x80080211 打包布局文件无效。
APPX_E_INVALID_
PACKAGESIGNCONFIG
0x80080212 packageSignConfig 文件无效。
APPX_E_RESOURCESPRI_
NOT_ALLOWED
0x80080213 当包清单中没有资源元素时,不允许使用 resources.pri 文件。
APPX_E_FILE_
COMPRESSION_MISMATCH
0x80080214 基线和更新包中文件的压缩状态不匹配。
APPX_E_INVALID_
PAYLOAD_PACKAGE_EXTENSION
0x80080215 针对较旧平台的有效负载包不允许使用非 .appx 扩展。
APPX_E_INVALID_
ENCRYPTION_EXCLUSION_FILE_LIST
0x80080216 encryptionExclusionFileList 文件无效。

应用程序未启动,其名称灰显

在运行 Windows 10 或更高版本的计算机上,无法启动某些应用程序,并且应用程序名称显示为灰色。

Some application names appear dimmed in the Start menu

尝试通过选择灰色名称打开应用程序时,可能会收到以下错误消息之一:

<应用程序名称>有问题。 请与系统管理员联系以修复或重新安装
错误:此应用无法打开

此外,以下事件条目记录在 Applications and Services\Microsoft\Windows\Apps 下的"Microsoft-Windows-TWinUI/Operational"日志中:

日志名称:Microsoft-Windows-TWinUI/Operational
来源:Microsoft-Windows-Immersive-Shell
日期:<date>
事件 ID: 5960
任务类别:(5960)
级别:错误
关键字:
说明:
为 Windows 激活 Microsoft.BingNews_8wekyb3d8bbwe!AppexNews。 启动协定被阻止,并出现错误 0x80073CFC,因为其包处于状态:已修改。

原因

出现此问题是因为应用程序相应包的状态值的注册表项已被修改。

解决方法

警告

如果使用注册表编辑器或使用其他方法错误地修改了注册表,则可能会发生严重问题。 这些问题可能需要重新安装操作系统才能解决。 Microsoft 不能保证能够解决这些问题。 您应自行承担修改注册表的风险。

若要解决此问题,请执行以下操作:

  1. 启动注册表编辑器,然后找到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModel\StateChange\PackageList 子项。
  2. 若要备份子项数据,请右键单击 PackageList,选择导出,然后将数据保存为注册表文件。
  3. 对于事件 ID 5960 日志条目中列出的每个应用程序,请执行以下步骤:
    1. 找到 PackageStatus 条目。
    2. PackageStatus 的值设置为零 (0)。

    注意

    如果 PackageList 下没有应用程序条目,则问题有其他原因。 在本文中的示例事件中,完整的子项是 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModel\StateChange\PackageList\Microsoft.BingNews_8wekyb3d8bbwe!AppexNews\PackageStatus

  4. 重新启动计算机。

获取额外帮助

如果作为开发人员在打包、部署或查询 Windows 应用程序包 (.msix/.appx) 时遇到的问题需要进一步的帮助,请参考这些额外的开发人员支持资源。