XPackageInstallChunks

开始区块的安装。

语法

HRESULT XPackageInstallChunks(  
         const char* packageIdentifier,  
         uint32_t selectorCount,  
         XPackageChunkSelector* selectors,  
         uint32_t minimumUpdateIntervalMs,  
         bool suppressUserConfirmation,  
         XTaskQueueHandle queue,  
         XPackageInstallationMonitorHandle* installationMonitor  
)  

参数

packageIdentifier _In_z_
类型:char*

唯一标识磁盘上安装的包的字符串。 有关包标识符的详细信息,请参阅管理和许可可下载内容 (DLC)

selectorCount _In_
类型:uint32_t

selectors 参数中的选择器数。

selectors _In_reads_(selectorCount)
类型:XPackageChunkSelector*

指定要安装的区块的选择器数组。

minimumUpdateIntervalMs _In_
类型:uint32_t

更新之间的时间间隔(以毫秒为单位)。

suppressUserConfirmation _In_
类型:bool

如果要安装的区块超过预设大小,将显示确认提示。 如果 suppressUserConfirmation 为 true,则不会显示提示,并且安装就像用户已接受那样进行。 这让游戏可以提供自己的 UI。 如果游戏使用它,则它应还调用 XPackageEstimateDownloadSize 以便获取将提供给用户的大小。 XPackageEstimateDownloadSize 还会返回一个布尔值,以指示该大小是否足够大,以致要显示提示。 如果需要下载确认,游戏必须使用其自己的 UI 显示它,或者让 XPackageInstallChunks 显示它。

queue _In_opt_
类型:XTaskQueueHandle

将对其执行工作的异步队列。

installationMonitor _Out_
类型:XPackageInstallationMonitorHandle*

在返回时,包含一个句柄,该句柄指向一个将监视与选择器匹配的区块安装的安装监视器。

返回值

类型:HRESULT

HRESULT 成功或错误代码。
如果安装被拒绝,将返回一个取消错误。

备注

注意

在时间敏感线程上调用此函数是不安全的。 有关详细信息,请参阅时间敏感线程

安装区块可能涉及提示用户接受下载大小。

  • 如果您使用此 API 的同步版本,它将阻止,直到用户接受或拒绝下载。 如果用户拒绝,则调用将失败,并显示取消错误 E_ABORT。 这将返回您可用于监视安装状态的安装监视器。 监视器最终必须通过调用 XPackageCloseInstallationMonitorHandle 来关闭。
  • 将 suppressUserConfirmation 设置为 true 可让您提供将提示用户进行下载的自定义 UI。

此示例将安装与“BigMaps”标记对应的区块:

void CALLBACK BigMapsInstallProgress(
    void* /* context */,
    XPackageInstallationMonitorHandle monitor)
{
    XPackageInstallationProgress progress;
    XPackageGetInstallationProgress(monitor, &progress);
    if (progress.completed)
    {
        printf("BigMaps Installed\n");
        XPackageCloseInstallationMonitorHandle(monitor);
    }
}

HRESULT InstallBigMaps(XTaskQueueHandle queue)
{
    char id[XPACKAGE_IDENTIFIER_MAX_LENGTH];
    HRESULT hr = XPackageGetCurrentProcessPackageIdentifier(_countof(id), id);
    if (FAILED(hr)) return hr;

    XPackageChunkSelector selector;
    selector.type = XPackageChunkSelectorType::Tag;
    selector.tag = "BigMaps";

    XPackageInstallationMonitorHandle monitor;
    hr = XPackageInstallChunks(id, 1, &selector, 1000, false, queue, &monitor);

    if (SUCCEEDED(hr))
    {
        XTaskQueueRegistrationToken token;
        hr = XPackageRegisterInstallationProgressChanged(
            monitor,
            nullptr,
            BigMapsInstallProgress,
            &token);

        if (FAILED(hr))
        {
            XPackageCloseInstallationMonitorHandle(monitor);
        }
    }

    return hr;
}

要求

头文件:XPackage.h

库:xgameruntime.lib

支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机

另请参阅

XPackage