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

# How to use a durable without a package

> Use a durable without a package (DWOB) in your title — licensing setup, entitlement checks, and how DWOBs differ from packaged downloadable content products.

Durables can be configured with or without a package that is downloaded to the client. A durable without a package is easier to configure and use. These durable types are typically used to gate access to content that is already part of the base game. Many games opt to include the content for add-ons in the base game package because they use the assets for multiplayer or preview purposes even when unlicensed.

<Note>
  A Durable without a package isn't supported on discs.
</Note>

Even without a downloadable package, the product type still provides a license according to the [Product sharing model for games](/publishing/xstore-commerce/xstore-product-sharing).

It isn't enough to check for ownership using [XStoreQueryEntitledProductsAsync](/reference/system/xstore/xstore_members). Instead, properly check for access to a durable using [XStoreAcquireLicenseForDurablesAsync](/reference/system/xstore/xstore_members):

```cpp theme={null}
void AcquireLicenseForDurable(const char* storeId)
{
    auto async = new XAsyncBlock{};
    async->queue = m_asyncQueue;
    async->callback = [](XAsyncBlock* async)
    {
        XStoreLicenseHandle result = {};

        HRESULT hr = XStoreAcquireLicenseForDurablesResult(
            async,
            &result);

        if (SUCCEEDED(hr))
        {
            bool isValid = XStoreIsLicenseValid(result);
            printf("Is valid license: %s\n", isValid? "yes" : "no");
        }
        else
        {
            printf("Error calling XStoreAcquireLicenseForDurablesResult: 0x%x\n", hr);
        }

        delete async;
    };

    HRESULT hr = XStoreAcquireLicenseForDurablesAsync(
        m_xStoreContext,
        storeId,
        async);

    if (FAILED(hr))
    {
        delete async;
        return;
    }
}
```

## Reference API documentation

* [XStore (API contents)](/reference/system/xstore/xstore_members)
  * Functions
    * [XStoreQueryEntitledProductsAsync](/reference/system/xstore/xstore_members)
    * [XStoreAcquireLicenseForDurablesAsync](/reference/system/xstore/xstore_members)

## See also

[Commerce Overview](/publishing/xstore-commerce/xstore-commerce-overview)

[Manage and license downloadable content (DLC)](/publishing/xstore-commerce/xstore-dlc)

[XStore API reference](/reference/system/xstore/xstore_members)


## Related topics

- [Durable add-ons](/publishing/game-publishing/concepts/add-ons/durable-add-ons.md)
- [Basic store operations](/publishing/xstore-commerce/xstore-basic-operations.md)
- [XStoreAcquireLicenseForDurablesAsync](/reference/system/xstore/functions/xstoreacquirelicensefordurablesasync.md)
- [XStoreAcquireLicenseForDurablesResult](/reference/system/xstore/functions/xstoreacquirelicensefordurablesresult.md)
- [Manage and license downloadable content (DLC)](/publishing/xstore-commerce/xstore-dlc.md)
