Licences and protected downloads
A protected release swaps its download button for Protected download and issues a per-device licence through the store API instead of serving a file directly.
Open Appsinity StudioWhat the player sees
The buy panel's Protection row reads License protected - 2 devices - 72h offline with the listing's own values if it sets them. Those defaults — maxDevices: 2 and offlineGraceHours: 72 — are what a protected release gets unless configured otherwise.
Clicking Protected download requires a signed-in player. The panel status runs Checking Appsinity license... to License verified. or Protected download approved.; a stale session produces Sign in again before downloading this protected release.
The request chain
Because the ticket is the authorisation, the file URL is not the secret. A direct link to the stored object bypasses the check entirely — which is why protected releases must not have their object URL advertised anywhere.
- Issue. The page POSTs to
/api/licenses/issue-downloadwith a client-supplieddeviceIdandplatform. - Ticket. The API checks the licence, attaches a device within the limit, and returns a short-lived download ticket.
- Fetch. The browser retrieves the file through
GET /api/licenses/download/<ticket>. - Store. The licence, its devices and the ticket are recorded server-side.
deviceId comes from the browser. Clearing site data mints a new one and consumes another seat. Players will run out of devices, and the only remedy today is a support request.Device limits and offline
Two seats is deliberately tight. Set expectations in the listing text rather than discovering it through a failed download.
| Control | Default | Practical effect |
|---|---|---|
maxDevices | 2 | A desktop plus a laptop; a phone browser then fails |
offlineGraceHours | 72 | How long a cached entitlement is trusted without re-checking |
| Device identity | Browser-generated | Reinstall, incognito or a cleared profile costs a seat |
| Seat release | Not self-service | Support action only |
What DRM does and does not do
- It gates the download. It cannot gate launch: nothing here talks to your executable.
- It does not encrypt or watermark the file.
- Once the file is on disk it is an ordinary copy, and re-running the game does not phone home.
- There is no licence check inside the desktop client's library.
- There is no refund, transfer or expiry mechanism attached to a licence.
Should you turn it on?
The honest answer for most titles on a free store is no. Protection adds a sign-in requirement, a seat limit and a support burden, and stops exactly zero determined copiers.
It is worth it when a release is expensive to produce, when you have a commercial agreement that expects it, or when you want the download to be attributable to an account so you can see who actually pulled the build.
Frequently asked questions
Can a player see which devices are licensed?
Not on Appsinity today. The records exist server-side; there is no interface for them.
Does turning protection off later break anything?
No. Unprotected downloads simply resolve the file directly; existing licence rows stop being consulted.
Is DRM configurable per build?
It is a property of the listing's download path, so it applies to the release the listing currently resolves to.
Developer publishing support: [email protected]
General support: [email protected]
Partnerships: [email protected]
APPSINITY