Documentation · SoftActivate Licensing

Deactivate and move

"How do I move my license to my new computer?" is the most common support question in licensing. The answer is one call plus one habit.

The move

  1. On the old machine: deactivate, then delete the local license file.
client->deactivate_license();
std::remove("license.dat");
await client.DeactivateLicenseAsync();
File.Delete("license.dat");
Await client.DeactivateLicenseAsync()
File.Delete("license.dat")
  1. On the new machine: activate normally. The seat frees instantly.

The client needs its vendor id and license key configured; the device identifies itself the same way it did at activation (hardware identification), so deactivation works even if the local license file is already gone.

Deactivation is safe to repeat

Deactivating a machine that holds no seat, because it was already released or never activated, returns a "not found" response. In any flow whose goal is to make sure the device is released, treat that response as success. This makes deactivation safe to call repeatedly, including from uninstallers and support tooling.

When the old machine is dead

A dead disk or a stolen laptop makes deactivation impossible. The seat stays held until you, the vendor, release it: revoke and reissue, or free the seat from the license's page in the console (console guide). Plan your support flow for this case; it comes up regularly once you have any meaningful number of customers.

Recovering from BAD_CONTEXT

BAD_CONTEXT means the stored license belongs to a different device: a copied license.dat file, or hardware that changed beyond what the hardware fingerprint tolerates. The recovery is always the same: deactivate, which releases whatever seat this key held for the old device, delete the local file, and re-activate. If every seat is already held by other machines, the customer sees a seats-in-use response, and support frees one.

Surface it in your product

Put a "Deactivate this computer" action somewhere findable: an About box, a license dialog, the uninstaller. Floating licenses make deactivate-on-exit routine; for standard licenses, it is the difference between a self-service machine move and a support ticket.