> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XPackageInstallChunksAsync

> XPackageInstallChunksAsync

# XPackageInstallChunksAsync

Inicia la instalación de fragmentos.

## Sintaxis

```cpp theme={null}
HRESULT XPackageInstallChunksAsync(  
         const char* packageIdentifier,  
         uint32_t selectorCount,  
         XPackageChunkSelector* selectors,  
         uint32_t minimumUpdateIntervalMs,  
         bool suppressUserConfirmation,  
         XAsyncBlock* asyncBlock  
)  
```

### Parámetros

*packageIdentifier*   \_In\_z\_\
Tipo: char\*

Una cadena que identifica de forma única el paquete instalado en el disco. Para obtener más información sobre los identificadores de paquete, consulte [Administración y concesión de licencias de contenido descargable (DLC)](/publishing/xstore-commerce/xstore-dlc).

*selectorCount*   \_In\_\
Tipo: uint32\_t

El número de selectores del parámetro *selectors*.

*selectors*   \_In\_reads\_(selectorCount)\
Tipo: [XPackageChunkSelector\*](/reference/system/xpackage/structs/xpackagechunkselector)

Una matriz de selectores que especifican los fragmentos que se van a instalar.

*minimumUpdateIntervalMs*   \_In\_\
Tipo: uint32\_t

El intervalo entre actualizaciones, en milisegundos.

*suppressUserConfirmation*   \_In\_\
Tipo: bool

Si los fragmentos que se van a instalar superan un tamaño preestablecido, se mostrará un mensaje de confirmación. Si *suppressUserConfirmation* es true, no se mostrará ningún mensaje y la instalación progresará como si el usuario hubiera aceptado. Esto permite que el juego presente su propia interfaz de usuario. Si el juego usa esta opción, también debe llamar a [XPackageEstimateDownloadSize](/reference/system/xpackage/functions/xpackageestimatedownloadsize) para obtener el tamaño que se presentará al usuario. [XPackageEstimateDownloadSize](/reference/system/xpackage/functions/xpackageestimatedownloadsize) también devuelve un valor booleano, para indicar si el tamaño es lo suficientemente grande como para que se deba mostrar un mensaje. Si se necesita una confirmación de descarga, el juego debe mostrarla mediante su propia interfaz de usuario o dejar que **XPackageInstallChunks** la muestre.

*asyncBlock*   \_Inout\_\
Tipo: [XAsyncBlock\*](/reference/system/xasync/structs/xasyncblock)

Un **XAsyncBlock** para supervisar el estado de la llamada asincrónica.

### Valor devuelto

Tipo: HRESULT

HRESULT de éxito o código de error.

## Comentarios

[XPackageInstallChunks](/reference/system/xpackage/functions/xpackageinstallchunks) tiene una variante asincrónica. La instalación de fragmentos podría implicar pedir al usuario que acepte el tamaño de la descarga.

En este ejemplo se muestra cómo se instalan los BigMaps mediante las API asincrónicas:

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

void CALLBACK BigMapsAsyncInstallComplete(XAsyncBlock* asyncBlock)
{
    XPackageInstallationMonitorHandle monitor;
    HRESULT hr = XPackageInstallChunksResult(asyncBlock, &monitor);
    delete asyncBlock;

    if (SUCCEEDED(hr))
    {
        XTaskQueueRegistrationToken token;
        if (FAILED(XPackageRegisterInstallationProgressChanged(
            monitor,
            nullptr,
            BigMapsInstallProgress, &token)))
        {
            XPackageCloseInstallationMonitorHandle(monitor);
        }
    }
}

HRESULT InstallBigMapsAsync(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";

    XAsyncBlock* asyncBlock = new (std::nothrow) XAsyncBlock{};
    asyncBlock->callback = BigMapsAsyncInstallComplete;
    asyncBlock->queue = queue;

    hr = XPackageInstallChunksAsync(
        id, 1, &selector, 1000,
        false, asyncBlock);

    if (FAILED(hr))
    {
        delete asyncBlock;
    }

    return hr;
}
```

## Requisitos

**Encabezado:** XPackage.h

**Biblioteca:** xgameruntime.lib

**Plataformas compatibles:** Windows, consolas de la familia XBOX One y consolas XBOX Series

## Documentación conceptual

* [Objetivos de diseño y mejoras de la programación asincrónica](/build/core-features/common/async/async-whitepaper)

## Consulte también

[XPackage](/reference/system/xpackage/xpackage_members)\
[Instalación por streaming y entrega inteligente](/build/core-features/common/packaging/overviews/streaming_install-intelligent_delivery)\
[XPackageInstallChunks](/reference/system/xpackage/functions/xpackageinstallchunks)


## Related topics

- [XPackageInstallChunksResult](/es/reference/system/xpackage/functions/xpackageinstallchunksresult.md)
- [XPackage](/es/reference/system/xpackage/xpackage_members.md)
- [Contenedores de API de C# de Unity para el GDK](/es/build/gdk-and-engines/unity/unity-api-wrappers.md)
- [XPackageInstallChunks](/es/reference/system/xpackage/functions/xpackageinstallchunks.md)
- [XPackageChangeChunkInstallOrder](/es/reference/system/xpackage/functions/xpackagechangechunkinstallorder.md)
