Skip to main content
The title can check for and apply updates if it’s critical for the game to be up to date. This condition is often important when the game involves multiplayer features where it’s crucial for all players running the game to have the same functionality. The title can check for updates by using XStoreQueryGameAndDlcPackageUpdatesAsync, as shown in the following example code:
If a title includes many DLC items that don’t require update checks—for example, empty DLC packages used only for licensing—the preceding code can introduce unnecessary overhead by checking each one. Instead, use XStoreQueryPackageUpdatesAsync, filtering on the current game’s package ID obtained by using XPackageGetCurrentProcessPackageIdentifier or filtering the package IDs returned from XPackageEnumeratePackages:

Download and install updates

After you identify the set of updates, use XStoreDownloadAndInstallPackageUpdatesAsync to queue and download all the updates.
At this point, the game terminates to apply the update. This process occurs without warning, so provide ample user notice or confirmation before calling this function.

Monitoring download progress

When a download is in progress, use XPackageCreateInstallationMonitor to monitor the progress of the download:

Testing updates

During development, you can test availability updates only by using local packages.
  1. Create V1 package with the update check and download code.
  2. Create V2 package with the same identity but incremented version number.
  3. Run xbapp/wdapp install V1.
  4. Run xbapp/wdapp update V2 /a.
  5. Launch V1.
Make sure the content ID matches between packages. The result of this process is that V1’s XStoreQueryGameAndDlcPackageUpdatesAsync or XStoreQueryPackageUpdatesAsync call finds any available updates, and XStoreDownloadAndInstallPackageUpdatesAsync updates V1 by using the advertised V2 package. When the “download” of V2 is in progress, this status shows in the XBOX download queue, XBOX app, or Microsoft Store app as an item in the queue. When the installation finishes, V2 is installed. You can verify the installation by using xbapp/wdapp list[dlc]. Using /m instead of /a makes the update “mandatory”, which simply affects the XStorePackageUpdate.isMandatory field. You can’t update from a development build to the package that downloads from the Store due to signing differences. For more information about how to create efficient updates and different ways to test, see the content update pages referenced in the following section.

Reference API documentation

See also

Commerce Overview Enabling XStore development and testing Content update best practices Creating, examining, and testing content updates XStore API reference
Last modified on August 20, 2026