Questions about GENUINE_OPTIONS

Hi. I'm using limelm & TurboActivate to license our product. Not all of our customers have constant internet. So, I can't check license all the time that they runs the application. Can you explain how GENUINE_OPTIONS works?

1- What is nDaysBetweenChecks ?2- What is nGraceDaysOnInetErr ?3- What happens when I set GENUINE_OPTIONS when they don't have internet connection?4- What happens when I check IsGenuine() when GENUINE_OPTIONS is set and they don't have internet connection?

If you're using C/C++ then this is all in TurboActivate.h. It tells you all about these various conditions right in the header file. Is that what you're using?

/* Flags for the TA_IsGeninueEx() function. */


/* If the user activated using offline activation   (TA_ActivateRequestToFile(), TA_ActivateFromFile() ), then with this   flag TA_IsGenuineEx() will still try to validate with the LimeLM   servers, however instead of returning TA_E_INET (when within the   grace period) or TA_FAIL (when past the grace period) it will   instead only return TA_OK (if machine has a valid activation).


   If you still want to get the TA_E_INET error code, without   deactivating after the grace period has expired, then use   this flag in tandem with TA_OFFLINE_SHOW_INET_ERR.


   If the user activated using online activation then this flag   is ignored.*/#define TA_SKIP_OFFLINE ((uint32_t)1)


/* If the user activated using offline activation, and you're   using this flag in tandem with TA_SKIP_OFFLINE, then TA_IsGenuineEx()   will return TA_E_INET on internet failure instead of TA_OK.


   If the user activated using online activation then this flag   is ignored.*/#define TA_OFFLINE_SHOW_INET_ERR ((uint32_t)2)


typedef struct _GENUINE_OPTIONS {    /* The size, in bytes, of this structure. Set this value to    the size of the GENUINE_OPTIONS structure. */    uint32_t nLength;


    /* Flags to pass to TA_IsGenuineEx() to control its behavior. */    uint32_t flags;


    /* How often to contact the LimeLM servers for validation. 90 days recommended. */    uint32_t nDaysBetweenChecks;


    /* If the call fails because of an internet error,    how long, in days, should the grace period last (before    returning deactivating and returning TA_FAIL).


    14 days is recommended. */    uint32_t nGraceDaysOnInetErr;} GENUINE_OPTIONS, *PGENUINE_OPTIONS;

Hi, thank you for answer. I use C#.Let's say, user don't have internet conenction and I set nDeysBetweenChecks = 15 and nGraceDaysOnInetErr = 7.

1- License will be deactivated 7 days later. Am I right?2- But in this grace days period, I get no error because the user is in the grace period.3- In this 7 days grace period, lets say third day, user has an internet connection and user is able to check IsGenuine() online. What happens then? Grace period resets?

No, the intellisense comments for the functions tell you exactly what the functions do and how the parameters affect the behavior of the function.

Just use our example app, and use the defaults that are used in the example app. They are configured for cases to allow online and offline activation and to not reverify with the servers in the case of offline activations.

But really, look at the documentation for every parameter. Visual Studio will tell you exactly what every parameter means. And don't modify TurboActivate.cs. Just use it as written.

Here's what the parameters means (again, this will be visible and a very clear way when using IntelliSense):

        /// <summary>Checks whether the computer is activated, and every "daysBetweenChecks" days it check if the customer is genuinely activated by verifying with the LimeLM servers.</summary>        /// <param name="daysBetweenChecks">How often to contact the LimeLM servers for validation. 90 days recommended.</param>        /// <param name="graceDaysOnInetErr">If the call fails because of an internet error, how long, in days, should the grace period last (before returning deactivating and returning TA_FAIL).        ///         /// 14 days is recommended.</param>        /// <param name="skipOffline">If the user activated using offline activation         /// (ActivateRequestToFile(), ActivateFromFile() ), then with this        /// option IsGenuineEx() will still try to validate with the LimeLM        /// servers, however instead of returning <see cref="IsGenuineResult.InternetError"/> (when within the        /// grace period) or <see cref="IsGenuineResult.NotGenuine"/> (when past the grace period) it will        /// instead only return <see cref="IsGenuineResult.Genuine"/> (if IsActivated()).        ///         /// If the user activated using online activation then this option        /// is ignored.</param>        /// <param name="offlineShowInetErr">If the user activated using offline activation, and you're        /// using this option in tandem with skipOffline, then IsGenuineEx()        /// will return <see cref="IsGenuineResult.InternetError"/> on internet failure instead of <see cref="IsGenuineResult.Genuine"/>.        ///        /// If the user activated using online activation then this flag        /// is ignored.</param>        /// <returns>IsGenuineResult</returns>

Does that make sense?

3- In this 7 days grace period, lets say third day, user has an internet connection and user is able to check IsGenuine() online. What happens then? Grace period resets?

Yes, because the point of the functions is to check every "daysBetweenChecks" with a "graceDaysOnInetErr" grace period.