Troubleshooting XStore development
Callback assigned in XPackageRegisterPackageInstalled
is not hit when DLC package is installed
If DLC installation was not obvious, first check xbapp listdlc
or wdapp listdlc
to check that the expected DLC is listed.
Then check that the AllowedProduct
in DLC microsoftgame.config matches that of the base game's StoreId
node in its microsoftgame.config
If this is a Smart Delivery product and the Xbox Series X/S base game is using an ERA DLC package, and the AllowedProduct
in the ERA DLC's appxmanifest is not the same as the product ID assigned to the Xbox Series X/S base game (xbapp list /d
), then you may need to override the product ID.
This is only possible for a packaged build:
makepkg pack /d <dir> /pd <dir> /contentid <contentid> /productid <product ID of ERA product> /productidoverride
This situation can arise with a Xbox One base game that was migrated from XDP.
XStoreShowPurchaseUIAsync
on PC shows purchase dialog briefly then returns E_ABORT
This can occur when UAC (User Access Control) is set to not display the confirmation prompt to the interactive user's desktop. This is governed by these registry values:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\PromptOnSecureDesktop
EnableLUA should be 1, and in some instances toggling PromptOnSecureDesktop to 0 may also be effective.
This page has more information on this and other related controls.
This can also occur if this API is being called from an elevated (Administrator) process. This can happen if debugging in Visual Studio launched as Administrator, or any process that was made to Run as Administrator. The solution is to not call while running as Administrator.
Additional XStore related error codes
Hex Value | Error | Description |
---|---|---|
0x803F6300 | XSTORE_E_NULL_LICENSE_SERVICE_CONTEXT |
The license service context is unavailable. |
0x803F6301 | XSTORE_E_NULL_STORE_CONTEXT |
The store context object is not null or not initialized. |
0x803F6302 | XSTORE_E_INVALID_ID |
An ID was passed that is invalid or unknown. |
0x803F6303 | XSTORE_E_INVALID_REQUEST |
The request has invalid parameters or format. |
0x803F6304 | XSTORE_E_INVALID_RESPONSE |
Response from the store service was not expected or invalid. |
0x803F6305 | XSTORE_E_ZERO_RESULTS |
Zero results were returned when non-zero results were expected. |
0x803F6306 | XSTORE_E_NULL_INPUT_PARAMETER |
Required parameter provided was null. |
0x803F6307 | XSTORE_E_INVALID_INPUT_PARAMETER |
Provided input parameter is invalid. |
0x803F6308 | XSTORE_E_INVALID_VERSION |
Client making the request does not meet the minimum version required. |
0x803F6309 | XSTORE_E_BAD_CONVERSION |
Unable to properly convert required parameter or response. |