> ## 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.

# Instalación por streaming: estado

> Instalación por streaming: estado

Mientras una instalación está en curso y un usuario está jugando, el título debe hacer un seguimiento del contenido necesario para admitir el juego y comprobar si el contenido requerido se ha instalado. Un título puede usar las API del sistema para consultar el estado de los fragmentos (chunks) en el disco duro y el progreso del contenido que se está descargando.

Si el usuario intenta entrar en una parte del juego que requiere contenido aún no instalado, el título debe informarle mostrando un cuadro de diálogo o una barra de progreso, y debe comunicar el progreso de la instalación. Además, el título siempre debe ofrecer al usuario la opción de salir de la pantalla de progreso; idealmente, para permitirle disfrutar de contenido mientras se instala. A continuación se muestra un ejemplo.

Mientras juega la campaña para un jugador de un título de disparos, el usuario llega al punto en el que el contenido para la siguiente área de la campaña aún no está instalado. Una buena experiencia de usuario sería mostrar una barra de progreso con el estado de la adquisición de contenido junto con la opción de unirse a una partida multijugador. Esta opción se habilitaría incluyendo un subconjunto del contenido multijugador como parte de los datos necesarios para iniciar el título.

Un título puede supervisar y verificar la instalación, y puede recibir una alerta cuando finalice una instalación. Puedes supervisar la instalación de un paquete completo o de un subconjunto de fragmentos del paquete. Para crear un monitor de instalación, usa [XPackageCreateInstallationMonitor](/reference/system/xpackage/functions/xpackagecreateinstallationmonitor). Especifica que el monitor es para una de las siguientes opciones:

* Un conjunto determinado de fragmentos, especificando selectores como parámetros
* El paquete completo, especificando cero selectores

Después de crear el monitor de instalación, registra un controlador para uno de los siguientes eventos:

* El evento de *cambio de progreso de la instalación*, mediante [XPackageRegisterInstallationProgressChanged](/reference/system/xpackage/functions/xpackageregisterinstallationprogresschanged)
* El evento de *paquete instalado*, mediante [XPackageRegisterPackageInstalled](/reference/system/xpackage/functions/xpackageregisterpackageinstalled)

El evento de *paquete instalado* indica cuándo ha terminado de instalarse el paquete completo. El evento de *cambio de progreso* te permite supervisar el progreso de la instalación. Ten en cuenta que el evento de *cambio de progreso* también indica cuándo se ha completado la instalación, por lo que no es necesario registrar un controlador de *paquete instalado* si ya has registrado un controlador de *cambio de progreso*. A continuación se muestra un ejemplo.

Un juego ha implementado un marcador de inicio, por lo que puede ejecutarse antes de estar completamente instalado. El juego necesitará saber qué partes están instaladas y cuáles no. Para presentar al usuario los circuitos disponibles, el juego necesita saber cuándo están instalados los fragmentos asociados a un circuito de carreras con un nombre de circuito concreto.

```cpp theme={null}
class GameTrackMonitor 
{ 
public: 
 
    HRESULT StartMonitoring(XTaskQueueHandle queue, const char* trackName) 
    { 
        char id[PACKAGE_IDENTIFIER_MAX_LENGTH]; 
 
        XPackageChunkSelector selector; 
        selector.type = XPackageChunkSelectorType::Tag; 
        selector.tag = trackName; 
 
        RETURN_IF_FAILED(XPackageGetCurrentProcessPackageIdentifier(_countof(id), id)); 
 
        XPackageInstallationMonitorHandle monitor; 
 
        RETURN_IF_FAILED(XPackageCreateInstallationMonitor( 
            id,         // Identity to monitor. 
            1,          // Number of selectors. 
            &selector,  // Selectors. 
            1000,       // Resolution of monitor in ms. 
            queue,      // Queue where updates are performed. 
            &monitor)); 
 
        XTaskQueueRegistrationToken token; 
 
        HRESULT hr = XPackageRegisterInstallationProgressChanged( 
            monitor, 
            this, 
            [](void *context, XPackageInstallationMonitorHandle monitor) 
        { 
            GameTrackMonitor* pthis = static_cast<GameTrackMonitor*>(context); 
            XPackageInstallationProgress progress; 
 
            XPackageGetInstallationProgress(monitor, &progress); 
            pthis->DrawProgress(progress); 
            if (progress.completed) 
            { 
                pthis->TrackReady(); 
                XPackageCloseInstallationMonitorHandle(monitor); 
            } 
        }, &token); 
 
        if (FAILED(hr)) 
        { 
            XPackageCloseInstallationMonitorHandle(monitor); 
        } 
 
        return hr; 
    } 
 
private: 
 
    void DrawProgress(const XPackageInstallationProgress& progress) 
    { 
        // ... 
    } 
 
    void TrackReady() 
    { 
        // ... 
    } 
};
```

## Documentación de referencia de la API

* [XPackage (contenido de la API)](/reference/system/xpackage/xpackage_members)
  * Funciones
    * [XPackageCreateInstallationMonitor](/reference/system/xpackage/functions/xpackagecreateinstallationmonitor)
    * [XPackageRegisterInstallationProgressChanged](/reference/system/xpackage/functions/xpackageregisterinstallationprogresschanged)
    * [XPackageRegisterPackageInstalled](/reference/system/xpackage/functions/xpackageregisterpackageinstalled)


## Related topics

- [Empaquetado de títulos, actualizaciones y pruebas de instalación por streaming](/es/build/core-features/common/packaging/title-packaging-streaming-install-testing.md)
- [Instalación por streaming e Intelligent Delivery: información general](/es/build/core-features/common/packaging/overviews/streaming_install-intelligent_delivery.md)
- [XPackageRegisterPackageInstalled](/es/reference/system/xpackage/functions/xpackageregisterpackageinstalled.md)
- [XPackageRegisterInstallationProgressChanged](/es/reference/system/xpackage/functions/xpackageregisterinstallationprogresschanged.md)
- [Reordenación dinámica de fragmentos](/es/build/core-features/common/packaging/packaging-chunkreordering.md)
