启用许可证测试
本文介绍如何将开发版本设置为可许可,以便测试与许可相关的方案。
相关方案和 API
以下 API 需要此页中所述的设置才能正确测试:
API | 用法 |
---|---|
XStoreQueryGameLicenseAsync | 查询试用版的特征或游戏是否已通过光盘授权 |
XStoreQueryLicenseTokenAsync | 为基于服务的验证生成有效的许可证令牌,请参阅 使用许可证令牌 |
XStoreQueryAddOnLicensesAsync | 返回附加到数字游戏许可证的附加许可证(即不带程序包的耐用品) |
XStoreRegisterGameLicenseChanged | 注册以检测许可证更改(例如试用版到完整许可证) |
上下文
在零售场景中,游戏必须具有要玩的许可证。 这是通过许可证请求完成的,该请求由光盘或成功的许可证请求Microsoft 服务来满足。 如果帐户有权通过直接或满足购买(例如从订阅或捆绑包购买)产品,则会授予许可证。 还可以在共享方案中授予许可证,可以在游戏的产品共享模型中找到详细信息。
默认情况下,开发方案不遵循此行为:
- 松散生成(Visual Studio F5 部署、xbapp/wdapp register/deploy)
- 本地包生成(makepkg、xbapp/wdapp 安装)
这些生成将在没有任何许可检查或相关配置的情况下启动。
大多数 XStore
API 仍可工作,但与许可相关的任何内容除外。
若要将生成行为配置为可许可,必须将正确的标识值应用于 MicrosoftGameConfig(如“启用 XStore 开发和测试”中所述)。
然后,必须执行以下步骤:
然后,对于运行生成的每个帐户,必须通过从平台的相应 Microsoft Store 购买产品来获取权利。
获取 ContentID
显示详细信息后,可以在"包"页中找到此信息:
注意
沙盒和零售之间的内容 ID 可能不同,如果已安装零售版游戏而你希望在沙盒中运行时请注意这点。 如果涉及区域包,则内容 ID 也会有所不同。
主机
还可在从 Microsoft Store 安装、在游戏命令提示符中运行 xbapp list /d
(或适用于 DLC 的 xbapp listdlc /d
)的包中找到此信息。
Registered Applications by Package Full Name:
41336MicrosoftATG.InGameStoreXS_2020.7.27.0_neutral__dspnxghe87tn0
Install
Drive: Development
Size: 0.28 GB.
ContentId: {2797FA46-A93B-494C-AD80-B67C9FCA939F}
ProductId: {4C544E39-5130-3044-C057-5A3446536A00}
EKBID: {37E80840-6BE0-46F8-8EDB-92F877056087}
DisplayName: ATG In-Game Store Sample
41336MicrosoftATG.InGameStoreXS_dspnxghe87tn0!Game
电脑
从 Xbox 应用或 Microsoft Store 安装包后,会在注册表位置中找到此项:Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Store\ContentId
应用内容 ID 以生成
对于松散生成,请在 MicrosoftGameConfig 中添加以下部分:
<DevelopmentOnly>
<ContentIdOverride>2797FA46-A93B-494C-AD80-B67C9FCA939F</ContentIdOverride>
<EKBIDOverride>00000000-0000-0000-0000-000000000001</EKBIDOverride>
</DevelopmentOnly>
对于包生成,请将内容 ID 传入 , makepkg
例如:
makepkg pack /v /f chunks.xml /d Gaming.Xbox.XboxOne.x64\Layout\Image\Loose /pd ./output /contentid 2797FA46-A93B-494C-AD80-B67C9FCA939F
从本地源安装时,在没有 /contentid 的情况下生成的包将应用 MicrosoftGameConfig 中的任何可用 ContentIdOverride
内容。
从应用商店(沙盒或零售)安装的内部版本将始终应用正确的内容 ID(如合作伙伴中心中所示)。
将 EKBID 应用于生成(仅适用于控制台)
只需为控制台设置 EKBID(托管密钥 Blob ID)即可使生成可许可。 对于大多数方案,只需从所有零的默认测试值或 33EC8436-5A0E-4F0D-B1CE-3F29C3955039 重写它。
这是通过运行以下命令完成的。
xbapp setekbid <package full name> {<GUID that is not all zeroes or 33EC8436-5A0E-4F0D-B1CE-3F29C3955039>}
比如,
xbapp setekbid 41336MicrosoftATG.InGameStoreXS_2020.7.27.0_neutral__dspnxghe87tn0 {00000000-0000-0000-0000-000000000001}
这与电脑(即否 wdapp setekbid
)无关。
试用版和 EKBID
对于试用版,必须应用实际的 EKBID。
可以从上面所示的 xbapp list /d
输出中查看从 Microsoft Store 安装的生成。
有关详细信息,请参阅“为游戏实施试用版”。
确保测试帐户有权使用沙盒中的游戏
执行此操作的最简单方法是直接通过协议激活转到游戏的应用商店页面,因为仅发布到沙盒的产品可能无法搜索。 必须将开发主机或电脑设置为发布游戏的沙盒。 有关更多详细信息,请参阅 Xbox 服务沙盒概述和正确切换沙盒以进行存储操作,后者尤其适合电脑。
正确登录后,请使用 Microsoft Store 协议链接访问 Microsoft Store 页面:
在主机上:
使用游戏命令提示符:
xbapp launch ms-windows-store://pdp/?productid=<storeID>
在电脑上:
在“运行”框 (⊞Win +R) 或 Web 浏览器中
msxbox://game/?productId=<storeID>
(用于在 Xbox 应用中显示游戏)
或
ms-windows-store://pdp/?productid=<storeID>
(在 Microsoft Store 中显示游戏)
在应用商店页面上,选择" 购买 "或 "获取 "以获取 测试帐户的游戏许可证。 这应该会启动包下载和安装,但如果只是对使用本地内部版本进行迭代感兴趣,则可以取消。
重要提示:必须为每个运行生成并期望许可证相关 XStore API 正常工作的帐户执行此操作。
DLC
为了使本地 DLC 可许可,必须将内容 ID 应用到 makepkg
并 xbapp setekbid
设置为默认值以外的内容。
只需将 DLC 配置为授权,而不是基本游戏。
这与以下 API 相关:
- XStoreAcquireLicenseForDurablesAsync
- XStoreAcquireLicenseForPackageAsync
- XStoreCanAcquireLicenseForPackageAsync
- XStoreCanAcquireLicenseForStoreIdAsync
- XStoreRegisterPackageLicenseLost
可在此处找到更多详细信息: