应用打包

在 Windows 8.1 中,新的应用捆绑包大大简化了应用的提交过程。通过使用资源包,你可以为用户提供他们所需的额外内容(例如本地化内容,或者用于高分辨率显示器的资产),这不会影响磁盘空间、带宽或他们不需要的应用购买体验。

有关如何将应用捆绑包用于智能应用部署的特定示例,请查阅将你的 Windows 应用商店 DirectX 游戏打包主题和包含资源包示例的游戏

Windows 8.1 中的新功能或更新功能

应用资源

Windows 8.1 为应用模型引入了一种新型的程序包。资源包允许你将核心应用包从其他资源(例如,字符串或图像等法语特定资产)中分开,并在它们自己的程序包中包含那些资源。这样的资源包可用于量身定制应用的整体体验,无需下载并将所有资源包安装到电脑。

此资源包是可选的,无法作为应用包的依赖包。这意味着应用包必须至少包含一组默认资源,在电脑中未安装任何资源包的情况下始终可以使用这组资源。此举可帮助保持部分关键承诺:

  • 无需资源包即可在任何电脑上正确安装和启动该应用包。

  • 如果已安装的资源包不完整,那么应用包能够为其提供帮助资源。

资源包在应用模型中有两种作用:

  • 提供资源管理系统在应用定制其体验的运行过程中能够使用的候选资源。

  • 提供允许资源包确定特定资源限定符(如用户规模、系统规模和 Microsoft DirectX 功能)的元数据。

资源包对于每个包只能针对一个资源限定符。但你的应用可以有多个资源包。

应用捆绑包

除资源包之外,Windows 8.1 还引入了应用捆绑包(或 .appxbundle 包),帮助优化向全世界用户打包和分发 Windows 应用商店应用和资源包的整个过程。

你可以为你的应用创建应用捆绑包负载文件。 Visual Studio 将创建和添加捆绑包清单文件。当 Microsoft Visual Studio Express 2013 for Windows 捆绑你的应用时,它会自动将资源拆分为单独的程序包并向捆绑包添加应用块映射和签名文件。以下项目构成一个完全自包含格式的 Windows 应用商店应用,该应用可以部署到 Windows 8.1 和更高版本的系统中。

应用包 (.appx)

只有在每个应用包对应不同的特定体系结构时,应用捆绑包才能包含多个应用包。例如,它可包含 X86.appx 和 amd64.appx 包,但不能包含两个 amd64.appx 包。

资源包 (.appx)

应用捆绑包包含用于语言、规模和 DirectX 功能水平的资源包(.appx 文件)。每个应用捆绑包都包含不同的资源包,以便支持不同的设备配置。当直接引用你的 Windows 应用商店应用中的资源包时,你应该充分利用资源管理系统。

注意  资源包中不能包含任何代码。

应用捆绑包清单 (AppxBundleManifest.xml)

应用捆绑包清单 (.appxbundlemanifest file) 包含与其中的程序包相关的所有适用性信息。对于任何特定包,它指定包的类型("应用程序"或"资源")以及版本和资源定位信息。特别是应用包,应用捆绑包清单包括体系结构的相关信息。

通常情况下,应用捆绑包清单允许 Windows 8.1 应用模型了解该应用捆绑包的内容,并确定安装期间应该在用户设备上安装哪些应用包和资源包。

这里是应用捆绑包清单文件的一个示例。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Bundle xmlns="http://schemas.microsoft.com/appx/2013/bundle" SchemaVersion="1.0">
  <Identity Name="Example" Publisher="CN=ExamplePublisher" Version="2013.101.312.1053"/>
  <Packages>
    <Package Type="application" Version="1.0.0.5" Architecture="x86" FileName="AppPackage_X86.appx" Offset="49" Size="3207">
      <Resources>
        <Resource Language="en-us"/>
        <Resource Scale="100" />
      </Resources>
    </Package>
    <Package Type="application" Version="1.0.0.4" Architecture="x64" FileName="AppPackage_X64.appx" Offset="3329" Size="3204">
      <Resources>
        <Resource Language="en-us"/>
        <Resource Scale="100" />
      </Resources>
    </Package>
    <Package Type="resource" Version="1.0.0.0" ResourceId="French" FileName="ResourcePackage_French.appx" Offset="6606" Size="1423">
      <Resources>
        <Resource Language="fr"/>
        <Resource Language="fr-fr"/>
        <Resource Language="fr-ca"/>
      </Resources>
    </Package>
    <Package Type="resource" Version="1.0.0.3" ResourceId="HiRes" FileName="ResourcePackage_HiRes.appx" Offset="8111" Size="1584">
      <Resources>
        <Resource Scale="140"/>
      </Resources>
    </Package>
  </Packages>
</Bundle>

应用块映射 (AppxBlockMap.xml)

块映射文件列出捆绑包(应用和资源包除外)中包含的所有应用文件,以及操作系统用来验证文件完整性和优化应用更新的相关加密哈希值。有关块映射文件的详细信息,请参阅应用包块映射

应用签名 (AppxSignature.p7x)

应用捆绑包签名可确保程序包及其内容在签名之后未进行过更改。如果签名证书验证为可信根证书颁发机构的证书,则该签名还标识包的签名者。包的签名者通常是应用的发布者或作者。

注意  如希望手动捆绑应用,可使用独立 MakeAppxSignTool 实用程序。若要了解如何捆绑和部署 Windows 应用商店应用,请参阅 Windows 应用商店应用的打包、部署和查询

程序包标识

与 Windows 8 应用包相同的是,应用捆绑包的一个最基本元素就是用来标识该捆绑包的五部分元组。这称为包标识,它由以下数据组成:

属性说明
名称

一个用于应用包的通用名称。例如,myCompany.mySuite.myApp。

注意  此名称不必是显示在应用磁贴上的名称。
发布者

Windows 应用商店应用的发布者。在大多数情况下,发布者与用来注册 Windows 8 开发人员帐户的帐户相同。

版本

用于为将来的应用版本提供服务的四部分版本描述符(主要版本.次要版本.内部版本.修订版本),例如 1.0.0.0。

ProcessorArchitecture

默认设置为“中性”。

ResourceID

默认设置为“~”。

 

应用捆绑包部署

通过 Windows Store 的应用捆绑包的部署遵循此工作流。

应用打包流

Windows 应用商店应用部署过程发生在多个阶段。首先,Windows 8.1 获取和验证应用捆绑包清单、捆绑包块映射和捆绑包签名。然后,Windows 8.1 检查捆绑包清单,确保有应用能够在当前体系结构上进行部署。找到合适的应用包之后,Windows 8.1 将检查该应用包的部署条件以确保应用成功部署。

接着,Windows 8.1 确定适用于部署的资源包的子集,并将这些资源包二进制文件暂存到 \WindowsApps\ 目录。最后,Windows 8.1 将应用包和资源包注册至用户帐户。

验证

在用户开始安装 Windows 应用商店应用时,Windows 8.1 必须完成这些检查才能开始部署。

测试条件

体系结构支持

捆绑包最多可包含三个体系结构特定的应用包,全部在应用捆绑包清单中指定。

最低操作系统版本

你可以在应用包清单中指定应用先决条件。它们表示特定最低操作系统版本的要求。例如对于 Windows 8.1,恰当的版本号是 6.3。 有关应用先决条件的详细信息,请参阅应用打包先决条件

应用依存关系

Windows 应用商店应用可以表示为获得应用所需的附加功能而对其他组件包的依存关系。有关应用依存关系的详细信息,请参阅应用打包依存关系

磁盘空间

每个 Windows 应用商店应用都需要特定的磁盘空间量才能部署。如果磁盘空间不足以部署应用包,则部署将失败。

签名检查

必须根据已经验证的 BlockMap,对应用包中的每个文件进行完整性检查。

 

程序包适用性

一旦 Windows 8.1 验证应用捆绑包能够在系统上进行部署,就会立即确定应当和应用包一同部署的资源包,以便增强用户的体验。根据以下三个特定资源限定符来检查适用性。

限定符说明

用户语言

用户已添加到首选语言列表中的所有语言都将计入要部署的最终适用语言资源包组中。Windows 8.1 支持资源包的多种区域设置和语言

系统规模

所有监视器的规模值都将用于确定要部署的最终适用规模资源包组。Windows 8.1 支持三种资源包比例系数:scale-100scale-140scale-180

DirectX 功能级别

系统上所有可用的 DirectX 功能级别都将用于确定要部署的最终适用 DirectX 资源包组。Windows 8.1 支持三个资源包 DirectX 功能级别:DXFL-DX9DXFL-DX10DXFL-DX11

 

包暂存

在 Windows 8.1 确定可在系统上部署的应用捆绑包以及要部署的程序包后,包内容下载到 \WindowsApps\ 目录。为下载的每个包创建一个新目录并使用包身份名称值命名,如下所示。

<Package Name>_<Version>_<Architecture>_<ResourceID>_<Publisher Hash>

暂存过程是通过部署引擎向包的位置来源发出的一组请求进行的。随后位置来源满足这些请求,并返回到它们所解压缩到的部署引擎,依据 BlockMap 进行验证,然后复制到相应的文件中。

包注册

包注册是部署过程中的最后一个阶段。在这个阶段中,需要执行两项关键操作:

  • 应用包清单中声明的扩展会向操作系统注册。这使应用能够与操作系统紧密集成。例如,如果你希望你的应用能够打开文本 (.txt) 文件,则在应用包清单中将 FileTypeAssociation 扩展声明为 XML,然后将 ".txt" 指定为文件类型。

    在部署期间,此 XML 会转换为一组系统更改,这些更改是正确注册应用以处理 .txt 文件所必需的。应用模型随后代表应用执行这些更改。应用模型支持多种不同扩展。有关这些扩展的详细信息,请参阅应用合约和扩展

  • 所有资源包都在资源管理系统中进行注册。然后可使用它们在应用运行时优化用户的体验。

 

 

显示: