4 reasons to allow software deactivation - and how it works
Sooner or later, your customers will need to move your software licenses to a different computer, or you may run into a customer who does not pay an invoice or asks for a refund. Situations like these are why many publishers choose to support license deactivation. This article explains the main reasons to allow deactivation and how deactivation actually works in a licensing system.
When you may need to deactivate a license
There are four common reasons you may need or want to deactivate a software license on a customer's computer:
- The customer claims to have a dead computer and asks to activate the license on a new computer.
- The customer has not paid for your software, or has otherwise broken the terms of your purchase agreement, and you want to terminate use of your software on their computer(s).
- The customer wants to legitimately transfer the license between two working computers.
- The customer has asked for a refund during the warranty period, and you want to make sure they actually stop using the software.
Deactivation via license transfer
It is inevitable that your customers will need to transfer their licenses at some point during the lifetime of the license. When a customer changes computers, the best way to transfer the license is for them to first deactivate it on the current device and then activate it on the new device.
However, a clean transfer is not always possible, because:
- The customer may have forgotten to deactivate the license on the old computer before formatting the hard drive or giving the computer away.
- The old computer may have had a hardware failure and is now unbootable.
In these cases you need a way to release or revoke the old activation so the customer can activate elsewhere, even though the original computer is no longer available to deactivate normally.
Can I remotely disable or deactivate the software?
It is not possible to send a remote message (sometimes called a "push" message) directly to the software application to deactivate it instantly. For one thing, it is unlikely that the computer running your software is directly connected to the publicly accessible internet. There are usually layers of routers and firewalls blocking inbound traffic to the computer.
Because of this, reliable deactivation does not depend on reaching the customer's machine directly. It depends on where the license status is stored.
Store license status on a central server
If you cannot send a push message to the software, how can you deactivate it?
No matter why you want to support license revocation or deactivation, it is most easily implemented using a central licensing server. A database on that server can store the overall status of each license, as well as the status of every activated copy of every license.
When a customer wants to initiate a license transfer, or when you want to revoke a license, you (or the customer) send a message to the central licensing server, which changes the stored license status. The software then periodically communicates with the central licensing server to request, or "pull/poll," the computer's license status to see whether it has changed.
In practice this means deactivation is enforced the next time the software checks in with the server, rather than by reaching out to the computer on demand. This approach works even for remote deactivations and for computers behind firewalls.
Does the SoftwareKey System allow remote license deactivation?
Yes. The SoftwareKey System lets you implement license deactivation and other Electronic License Management features using the combination of Protection PLUS 5 SDK and SOLO Server. These two components communicate with each other throughout the lifetime of the license, so the client software can detect a status change and deactivate accordingly.
Summary
Allowing license deactivation benefits both you and your customers. It supports legitimate license transfers between computers, and it gives you a way to enforce your terms when a license is unpaid, refunded, or otherwise revoked. Using a central licensing server is what makes this possible, because it lets you change a license's status and have that change enforced the next time the software checks in, including for remote deactivations.