平面捆绑应用包

重要

如果打算将应用提交到 Store,则需要联系 Windows 开发人员支持部门,以获得使用单一捆绑包的批准。

扁平化捆绑包是捆绑应用包文件的改良方法。 典型的 Windows 应用捆绑文件使用多层打包结构,其中的应用包文件需要包含在捆绑包中,扁平化捆绑包只需引用应用包文件即可消除此需求,从而允许它们位于应用包之外。 由于应用包文件不再包含在捆绑包中,可以并行处理,从而缩短上传时间、加快发布速度(因为每个应用包文件可以同时处理),并最终加快开发迭代。

Flat Bundle Diagram

扁平化捆绑包的另一个优势是需要创建的包更少。 由于仅引用应用包文件,因此如果包未跨两个版本进行更改,则应用的两个版本可以引用相同的包文件。 由此在为下一版应用生成包时,你只需创建已更改的应用包。 默认情况下,扁平化捆绑包将引用与自身位于同一文件夹中的应用包文件。 但是,该引用可以更改为其他路径(相对路径、网络共享和 http 位置)。 为此,必须在创建扁平化捆绑包期间,直接提供 BundleManifest

如何创建一个扁平化捆绑包

既可使用 MakeAppx.exe 工具创建扁平化捆绑包,也可使用打包布局来定义捆绑包的结构。

使用 MakeAppx.exe

要使用 MakeAppx.exe 创建扁平化捆绑包,请像往常一样使用“MakeAppx.exe 捆绑包”命令,但使用 /fb 开关生成平面应用捆绑文件(由于文件仅引用应用包文件且不包含任何实际有效负载,因此会非常小)。

以下是命令语法示例:

MakeAppx bundle [options] /d <content directory> /fb /p <output flat bundle name>

有关使用 MakeAppx.exe 的更多信息,请参阅使用 MakeAppx.exe 工具创建应用包。

使用打包布局

或者,还可使用打包布局创建扁平化捆绑包。 为此,请在应用程序包清单的 PackageFamily 元素中将 FlatBundle 属性设为 true。 要了解有关打包布局的详细信息,请参阅打包布局的包创建

如何部署一个扁平化捆绑包

在部署扁平化捆绑包之前,每个应用包(除应用包外)都必须使用相同的证书进行签名。 这是因为所有应用包文件 (.appx/.msix) 现在都是独立文件,并且不再包含在应用包 (.appxbundle/.msixbundle) 文件中。

在包经过签名后,可以通过以下选项之一安装应用:

  • 双击应用捆绑文件,以使用应用安装程序进行安装。
  • 在 PowerShell 中使用 Add-AppxPackage cmdlet 并指向应用捆绑文件(假设应用包位于应用包期望它们所在的位置)。

你无法单独部署扁平化捆绑包的各个 .appx/.msix 包。 必须通过 .appxbundle/.msixbundle 进行部署。 但是,可以在初始安装后,更新扁平化捆绑包的单个 .appx/.msix 包。 如果确实更新单个 .appx/.msix 包,还需要更新扁平化捆绑包的清单。

例如,如果 v1 扁平化捆绑包由 .msixbundle、x86 .msix、x64 .msix 和资产 .msix 组成,并且你知道 v2 捆绑包仅对资产包进行了更改,则只需生成 .msixbundle 和资产 .msix,以便能够安装更新。 你必须为 v2 生成 .msixbundle,因为捆绑包会跟踪其 .msix 包的所有版本。 通过将资产 .msix 的版本升级到 v2,你需要具有此新引用的新 .msixbundle。 v2 .msixbundle 可以包含对 v1 x86 .msix 和 x64 .msix 的引用;扁平化捆绑包的 .msix 包不需要具有相同的版本号。