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

# XPackageUpdateInstallationMonitor

> XPackageUpdateInstallationMonitor

# XPackageUpdateInstallationMonitor

Refreshes the progress returned from [XPackageGetInstallationProgress](/reference/system/xpackage/functions/xpackagegetinstallationprogress).

## Syntax

```cpp theme={null}
bool XPackageUpdateInstallationMonitor(  
         XPackageInstallationMonitorHandle installationMonitor  
)  
```

### Parameters

*installationMonitor*   \_In\_\
Type: XPackageInstallationMonitorHandle

The handle to the installation monitor to be updated.

### Return value

Type: bool

If any aspect of the progress snapshot has changed, returns true. Otherwise, returns false.

## Remarks

<Note>This function isn't safe to call on a time-sensitive thread. For more information, see [Time-sensitive threads](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads).</Note>

**XPackageUpdateInstallationMonitor** can be called to refresh the progress returned from [XPackageGetInstallationProgress](/reference/system/xpackage/functions/xpackagegetinstallationprogress). If the installation monitor's refresh cadence is not zero, this API will be automatically called on the refresh cadence from a timer thread. To control which thread updates the progress, set the cadence to zero and call this yourself. **XPackageUpdateInstallationMonitor** returns true if any aspect of the progress snapshot has changed.

The following is an example of using **XPackageUpdateInstallationMonitor** to manually poll an installation monitor to determine whether installation of a game is completed. After installation is completed, this code closes the monitor handle.

```cpp theme={null}
bool CheckIfInstalled(XPackageInstallationMonitorHandle monitor)
{
    XPackageInstallationProgress progress;
    XPackageGetInstallationProgress(monitor, &progress);

    if (!progress.completed && XPackageUpdateInstallationMonitor(monitor))
    {
        XPackageGetInstallationProgress(monitor, &progress);
    }

    if (progress.completed)
    {
        XPackageCloseInstallationMonitorHandle(monitor);
    }

    return progress.completed;
}
```

## Requirements

**Header:** XPackage.h

**Library:** xgameruntime.lib

**Supported platforms:** Windows, XBOX One family consoles and XBOX Series consoles

## Conceptual documentation

* [Time-sensitive threads](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)

## See also

[XPackage](/reference/system/xpackage/xpackage_members)\
[Streaming Installation and Intelligent Delivery](/build/core-features/common/packaging/overviews/streaming_install-intelligent_delivery)\
[XPackageGetInstallationProgress](/reference/system/xpackage/functions/xpackagegetinstallationprogress)


## Related topics

- [XPackage](/reference/system/xpackage/xpackage_members.md)
- [Unity C# API wrappers for the GDK](/build/gdk-and-engines/unity/unity-api-wrappers.md)
- [XPackageCreateInstallationMonitor](/reference/system/xpackage/functions/xpackagecreateinstallationmonitor.md)
- [XPackageCloseInstallationMonitorHandle](/reference/system/xpackage/functions/xpackagecloseinstallationmonitorhandle.md)
- [XPackageGetInstallationProgress](/reference/system/xpackage/functions/xpackagegetinstallationprogress.md)
