Our product consistes of a suite of a lot of plugins; currently there are 50+ of them, and this number will definitely grow in the future. All plugins need to be able to be active at the same time. Right now I am using a single product.dat for all these plugins. Users are able to buy a license for one or multiple of these plugins as they see fit; we track the allowed plugins per license in the metadata keys. So when a license is entered, the installed plugins themselves check with the metadata if they should be unlocked, or run in demo mode instead.
A problem I foresee is when a user later decides to buy additional plugins. We sell licenses per user, so we use the activation count for that. If the user places a new order by specifying the same e-mail address as used before, our web shop can intercept this nicely and ask if he wants to expand his current license instead. And if the user just orders a new license under a new email address, we can determine in-app whether the user is already running an existing license, and ask to merge the newly bought license from there (updating one of them and revoking/deleting the other).
When merging licenses, we want them to be registered on the same e-mail address and have the same user (activation) count. We can handle that nicely via a user portal, requiring them to first update one of the license’s email addresses and/or buying extra activations for one of the licenses to make the activation count match. But what if the user doesn’t want to match the activation count? Say he once bought a license for plugins #5 to #10 for 100 users, and now decides that he also wants to license plugin #30, but for 2 users only and not any more (certainly not all 100 existing users). Problem is though that these 2 users would still need to be able to work with activated versions of the plugins #5 to 10, even at the same time as they’re using the newly licensed plugin #30.
Ideally we would like him to still have the same license key for everything, but then the user/activation counts won’t work. We could also make each plugin use it’s own product.dat so they each have their own license + activation count, but then we’d need to distribute 50+ license keys whenever someone decides to buy the whole suite - also far from ideal.
I think there’s just no nice solution to this problem? The only solution would be to allow for more than 1 license to be active simultaneously per product.dat, but I think that is not possible with Cryptlex? Or is there some out-of-the-box way to handle this?