创建、检查和测试内容更新

概述

本文档介绍了内容更新的交付方式、用于生成和度量更新的工具,以及有关如何测试关键更新方案以确保预期和最佳行为的详细信息。

内容更新的工作原理

当你向游戏包提供更新时,游戏服务将始终尽量减少需要传输的字节数,包括游戏设备上的客户,以及上传程序包时从开发人员处传输的字节数。 这种差异 (“delta”) 是使用算法计算的,这些算法在较高级别上尝试将两个包之间的 4KiB 段匹配最大化。

此增量编码为 .xsp (更新流式处理计划的一部分,) 系统用来确切知道需要从网络下载哪些字节以及如何将它们应用于任何可能的现有包版本。

因此,为了在开发中模拟和测试准确的增量更新行为,必须使用适当的 makepkg 选项来创建包,并且必须使用适当的命令来安装和更新包。

基于以前的包版本创建更新

makepkg pack 用于创建包。 若要创建使用上一个包的包,请使用 /priorpackage 参数:

makepkg pack /f chunks_layout.xml /d [build directory] /pd .\output /priorpackage [previous version].xvc

上一个包必须与要创建的包共享相同的包标识,如 microsoftgame.config 中定义。

此命令的结果是名为 [new package name]_update-[old version number].[guid].xsp的 .xsp 文件,例如 41336MicrosoftATG.ATGGameHubRequiredGame_200.0.0.0_neutral__dspnxghe87tn0_xs_update-100.0.0.0.5890f4a0-b449-4c5d-80ff-b78b19ed3439.xsp

这是 流式处理计划 ,用于编码从旧包更新到新包时需要更改的内容。 下面有关 测试更新的部分将演示如何使用此功能。

检查更新大小

运行上述命令时,会使用相同的文件名生成其他一些文件:.html 文件和.json文件。

两者都包含以下内容:

  1. 将作为更新的一部分下载的字节的摘要
  2. 一个表,汇总了给定特定标记、语言或设备类型时将安装的数据量
  3. 一个可排序的文件表,其中显示了将更新的字节量以及表示的总文件大小的百分比
  4. 对于未 100% 更新的每个文件,这会链接到各个表,这些表显示每个已更新的文件中的数据范围。

利用此信息,可以确定哪些文件在更新中更改最多,并查看单个文件,以查看更改的比例和位置是否符合预期。 如果看到的文件似乎导致比平常更大的更新,请查看 高效创作更新要求授权 部分中的准则。

packageutil compare 两个 .xvc 文件也会生成相同的文件,并提供包差异的摘要输出;此命令还将生成 .xsp 文件。

增量上传

上传到合作伙伴中心将自动利用增量计算算法。 上一次上传的包 (该分支) 与上传包之间的增量在开始时计算,以便仅将已更改的数据从上传计算机传输到引入服务。

测试更新

若要验证系统 UI 中显示的更新大小,请执行以下步骤:

  1. xbapp install [旧版本.xvc]
  2. xbapp update [new version.xvc] (/plan=[.xsp file])

更新时,请转到系统 UI 中的“队列”,查看正在更新的友好字节数。

如果 .xsp 以前由其他命令生成,并且与 .xvc 文件位于同一位置,则 /plan 参数是可选的。

在电脑上, wdapp 改用 命令,包文件具有 .msixvc 文件扩展名,安装和更新进度可以在 Xbox 应用和 Microsoft 应用商店应用的下载队列部分中查看。 wdapp update 不支持 /plan 参数,它将使用为目标版本生成的 .xsp 文件(如果已创建)。

广告更新

广告更新略有不同,你正在向游戏 提供 更新,这会导致特定的系统行为。

若要播发可用更新,请 /m 应用 或 /a 标志进行 xbapp/wdapp 更新。 这将导致在游戏启动之前不应用更新。 发生这种情况时:

  • 控制台:将显示一个系统对话框,指出需要更新
  • 电脑:对于开发版本,不会显示任何系统提示,并且可以自由启动生成,除非使用 /bootstrapper 安装 wdapp install 生成。 在这种情况下,启动游戏将调用电脑引导程序,它将查找并提示更新。

播发更新还会导致某些 XStore API 做出响应,从而允许游戏检测可用更新;这与 DLC 包最相关。 有关更多详细信息 ,请参阅检查更新

应用商店包更新

上述示例涉及使用本地包安装和更新。 可能需要测试已上传到 Parter Center 并从应用商店 CDN 下载的包的更新。 这验证了两件事:从应用商店更新时的性能,以及利用作为引入过程的一部分生成的流式处理计划。

遗憾的是,由于签名差异,无法从本地包更新到应用商店包。 在没有其他帮助的情况下,可以将一个版本 (上传到合作伙伴中心) ,将此版本从应用商店应用安装到一个或多个开发工具包。 在安装了较旧版本的开发工具包上上传新版本,然后在发布后,验证是否已检测到较新版本,并且可以使用预期的增量大小进行更新。

为了能够重复此测试,在更新之前,请将旧版本安装复制到外部驱动器,以便以后可以复制回任何新版本。 如果未保存,则可以请求可从中获取旧版本的 xbapp/wdapp installCDN URL。 请联系Microsoft代表寻求帮助。 安装旧版本后,可以重复更新测试。

混合光盘+CDN 更新

汇报也与光盘安装相关。 光盘安装时,将从光盘安装相对于最新可用数字包未更改的任何光盘内容;其余部分从应用商店 CDN 并发安装。 这会自动发生。

若要对此进行模拟,请使用以下命令:

xbapp update http://server/[latest version].xvc /p:[disc package].xvc`

通过 HTTP 服务器提供更新包是一种解决方法,因为安装只能有一个来自开发电脑的本地存储的源。

如果已使用光盘 .xvc 包刻录了测试光盘,光盘包可以指向光盘路径。

另请参阅

内容更新最佳做法要求授权

检查更新