对 Windows 应用的打包、部署和查询进行故障排除
使用这些建议可以解决你作为开发人员打包、部署或查询 Windows 应用包 (.msix/.appx) 时遇到的问题。
注意
本文适用于开发人员。 如果你不是开发人员,并且正在寻找有关 Windows 应用安装错误的帮助,请参阅 Windows 支持。
获取诊断信息
API 失败时,会返回描述问题的错误代码。 如果错误代码未提供足够的信息,则可以在详细的事件日志中找到更多诊断信息。
若要使用事件查看器访问打包和部署事件日志,请执行以下步骤:
执行以下步骤之一:
- 单击 Windows 菜单上的开始,键入事件查看器,然后按 Enter。
- 运行 eventvwr.msc。
在左侧页面中,展开事件查看器(本地)>应用程序和服务日志>Microsoft>Windows。
检查以下类别下的可用日志:
- AppxPackagingOM>Microsoft-Windows-AppxPackaging/Operational
- AppXDeployment-Server>Microsoft-Windows-AppXDeploymentServer/Operational
首先查看 AppXDeployment-Server 下的日志。 如果错误是由 0x80073CF0 或ERROR_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 | 无法打开包。 可能的原因:
|
ERROR_INSTALL_PACKAGE_ NOT_FOUND |
0x80073CF1 | 无法找到包。 删除未为当前用户安装的包时,可能会出现此错误。 |
ERROR_INSTALL_INVALID_ PACKAGE |
0x80073CF2 | 包数据无效。 |
ERROR_INSTALL_RESOLVE_ DEPENDENCY_FAILED |
0x80073CF3 | 包未通过更新、依赖项或冲突验证。 可能的原因:
|
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 | 若要安装此应用,需要开发人员许可证或支持旁加载的系统。 如果包不满足以下要求之一,则可能会出现此错误:
|
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 | 包无效,因为它缺少清单或块映射,或者存在代码完整性文件但缺少签名文件。 确保包未缺失以下一个或多个必需文件:
|
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 或更高版本的计算机上,无法启动某些应用程序,并且应用程序名称显示为灰色。
尝试通过选择灰色名称打开应用程序时,可能会收到以下错误消息之一:
<应用程序名称>有问题。 请与系统管理员联系以修复或重新安装
错误:此应用无法打开
此外,以下事件条目记录在 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 不能保证能够解决这些问题。 您应自行承担修改注册表的风险。
若要解决此问题,请执行以下操作:
- 启动注册表编辑器,然后找到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModel\StateChange\PackageList 子项。
- 若要备份子项数据,请右键单击 PackageList,选择导出,然后将数据保存为注册表文件。
- 对于事件 ID 5960 日志条目中列出的每个应用程序,请执行以下步骤:
- 找到 PackageStatus 条目。
- 将 PackageStatus 的值设置为零 (0)。
注意
如果 PackageList 下没有应用程序条目,则问题有其他原因。 在本文中的示例事件中,完整的子项是 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModel\StateChange\PackageList\Microsoft.BingNews_8wekyb3d8bbwe!AppexNews\PackageStatus
- 重新启动计算机。
获取额外帮助
如果作为开发人员在打包、部署或查询 Windows 应用程序包 (.msix/.appx) 时遇到的问题需要进一步的帮助,请参考这些额外的开发人员支持资源。
- Microsoft Q&A 由专家和 Microsoft 工程师组成的社区为你遇到的技术问题提供相关而及时的解答。
- 对于开发问题的社区帮助,我们提供了论坛和 StackOverflow。
- Windows 开发人员支持网站介绍了其他支持选项。