Hi Willie,
Well, the way you would implement the actual limitations in your plug-in is entirely up to you. Here are a few schemes I’ve encountered so far, in various combinations:
- A ‘nagscreen’ popping up when loading the plug-in – or every few minutes or so - telling you it’s a demo. You can click this screen away.
- Not being able to save your settings.
- Adding a beep, some noise or silence every minute or so. This is extremely annoying, and I wouldn’t recommend it if you want your users to like you
- Additionally, you could also implement a trial period, and have the plug-in show a permanent nagscreen when it expires (or a blurred version). Don’t forget you can disable the GUI in most hosts, so you might want the plug-in to let through the audio unaffected as well when the trial ends.
In any case, it’s up to you to set it up from scratch. This can be a challenge sometimes, especially when you want to do a trial period, and come up with an intuitive solution for the user to enter his license code, or place his license file. But to generalize the process, if you just check in your plug-in constructor if a valid license is present, you can from there set some flags that enable the limitations you have setup – like letting the audio through unaffected in the process function - or setup some kind of ‘nagscreen’ GUI object.
Take some time to think it through, and approach it step-by-step, testing all parts one-by-one. If you want to make it easy for yourself and the user though, you could also skip the license check altogether, and just make two versions of your plug-in: one demo version, and one full version. The licenses can be shared anyway with regular ‘licensing’, so just having two versions would sort of have the same outcome, without having to setup the whole license generation and check. When I started to figure out the best way to do this kind of stuff, I kept thinking in circles for a while, until I realized that no elegant solution to regular ‘licensing’ really exists, and no simple solution to ‘true copy protection’ neither.
As the whole software protection thing can be a sensitive subject, and can seriously affect your image as a vendor, I would indeed try to make the whole activation experience as painless and intuitive as possible for the user. As a programmer, I don't like this stuff in my code haha, but I understand the need for a simple incentive. So in my opinion, only one action should be required by the user, which is filling in an activation code, using an open file dialog to load your license, placing a license file in a dedicated folder somewhere or running a second installer.
Regards, JD