Mmmmh. Not quite.
If you're using the trial behavior of TurboActivate (i.e. using UseTrial, TrialDaysRemaining, ExtendTrial) then detecting whether the customer is in trial mode or not is simply at matter of detecting if they are activated (i.e. calling the IsActivated() function).
In other words, if they're activated it means they have a valid product key (and thus not using your trial any more).
Does this clarify things?
[...] If i will repeat this operation everyday everyday i will have a trial period (EDIT) forever.
That's the problem with unverified trials -- they don't need to be confirmed with a 3rd party and the trial data is eventually stored somewhere on disk.
But you already know that, which brings us to the two possible verified trial options...
Server verified trials, option 1
If i set the trial days to 0 and then use the online extension methods to extend the trial to the desired value is it possible to avoid the described behaviour?
Yes, that's possible. This way the trial key (a.k.a. the trial extension) can be only used a limited number of times. and if they delete the trial data from the computer then their trial is reset to 0.
Server verified trials, option 2
It would be better to have a server side trial like a normal license in fact. Is this possible?
Sure, this is also possible, but it's a bit more complicated -- it's better if you use the other option.
But if you want to go down this route then the first thing you'd have to do is create a license feature like "trial_expires" as a "Date / Time" feature and uncheck the "Required" checkbox.
Then, the difference between a "trial license" and a "regular license" becomes whether the "trial_expires" feature is set or not. For instance, to create a "trial license" then set this "trial_expires" feature with a date in the future (e.g. 2011-12-25). Then when the customer activates the product key the "trial_expires" features is downloaded.
Detecting whether the activation is a "trial" would be simply a matter of calling "GetFeatureValue("trial_expires", ...)". If the feature is present then the customer is in "trial mode" and you simply use the date to decide whether to keep allowing your potential customer to keep using your app or not.
If this potential customer becomes a paying customer then you have 1 of 2 choices.
- You can deactivate their trial license and let them use another product key you send them.
- Or, you can remove the "trial_expires" feature data from their existing product key and your app can call the Activate() function to download the new feature data.
Obviously the "Server verified trials, option 1" is the easier choice.
Does this make sense?