如何随 AppB 安装另一款 Microsoft Store 应用?
结论
<PackageDependency> 不能要求 Microsoft Store 在安装 AppB 时自动安装另一款独立发布的主应用 AppA。它用于声明 MSIX 包运行所需的 framework package 依赖。即使 AppA 已在 Store 发布,也不能因此将它作为 AppB 的包依赖安装。
所以,错误提示“依赖包不存在”不一定是因为 AppA 没有发布。要看 AppA 是否属于可作为包依赖的 framework package,以及提交中是否提供了 Store 能验证的依赖包。Microsoft 文档将这类静态包依赖称为 framework package 依赖,并将 framework package 与 Main package 区分开来。Framework packages overview MSIX package types
为什么当前声明没有达到预期
问题中的声明是:
<Dependencies>
<PackageDependency
Name="****appAPackageName****"
MinVersion="2.0.0.0"
Publisher="CN=***myPublisherId***" />
</Dependencies>
PackageDependency 声明的是包级依赖,不负责关联 Microsoft Store 商品的安装流程。即使 Name、Publisher 和 MinVersion 都正确,如果 AppA 是普通的独立主应用,而不是可作为依赖的 framework package,这段清单也无法让 Store 同时安装 AppA。
可行的处理方式
- 如果 AppA 和 AppB 是两款独立应用:分别发布和安装这两款 Store 应用。AppB 可以提供 AppA 的 Store 页面入口,引导用户安装。是否能自动打开或安装,取决于 Store 和系统支持的流程,
PackageDependency无法保证静默安装。 - 如果 AppA 提供的是供 AppB 复用的共享组件:可以评估是否将共享组件封装为 MSIX framework package,再让 AppB 依赖该框架包。framework package 必须符合相应的包类型和分发要求,不能只把普通应用的包名填进
PackageDependency。Microsoft 的 framework package 文档介绍了这类依赖的用途。 - 如果安装由组织或自有部署程序管理:可以在部署流程中分别安装 AppA 和 AppB,并处理依赖与版本。这属于部署方案,不代表 Store 会自动联动安装两款独立商品。Windows 的包部署命令支持在安装包时指定依赖包路径,但部署端必须实际提供对应的包文件。Add-AppxPackage
排查建议
先确认 AppA 的包类型。如果它是普通的可启动应用,就应从 AppB 清单中移除把它当作 PackageDependency 的声明,再选择分别安装或调整应用架构。如果 AppA 是 framework package,则检查依赖包的 Name、Publisher 和最低版本,并确认 Store 提交包是否包含该依赖或能否解析它。错误信息还建议使用 Visual Studio 生成的 .msixupload 或 .appxupload 文件。
仅凭题目中的信息,无法确定 AppA 的包类型,也无法判断提交包是否符合 Store 的具体校验条件。但如果 AppA 是独立主应用,单纯修改 PackageDependency 无法实现“安装 AppB 时同时安装 AppA”。
备注:内容仅供参考。
