平面捆绑应用包

重要

如果你打算将应用提交到 Microsoft Store,你需要联系 Windows 开发人员支持并获得批准才能使用平面捆绑包。

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

平面捆绑包示意图

平面捆绑包的另一个好处是减少了包的数量。 由于仅引用应用包文件,因此,如果包未在两个版本之间更改,则两个版本的应用可以引用同一包文件。 这样,在为应用的下一个版本构建包时,你只需要创建发生了更改的应用包。 默认情况下,平面捆绑将引用与自身位于同一文件夹中的应用包文件。 但是,该引用可以更改为其他路径(相对路径、网络共享和 http 位置)。 要执行该操作,你必须在创建平面捆绑包期间直接提供 BundleManifest

如何创建平面捆绑包

可以使用 MakeAppx.exe 工具或使用包布局定义捆绑包结构来创建平面捆绑包。

使用 MakeAppx.exe

若要使用 MakeAppx.exe 创建平面捆绑,请像往常一样使用"MakeAppx.exe bundle"命令,但使用 /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 包不需要具有相同的版本号。