Is this a crazy idea? (multiple TA.DATs)

I am due to release a new version of my software soon, which will be a paid upgrade. I want existing users to be able to trial the new version and install/run alongside the current one.

I have been wondering how to achieve this, and the easiest way I could think of was to just create a new product in LimeLM, with new (verified) trials etc. I also treat the new version of my product as a different app, so it can be installed without removing the old one.

I have since been messing around with explicitly loading the old (v1) TA.DAT in order to grab the license key to use as a referrer when purchasing upgrades, which works fine (I will also update a field in the old license to show that it has been used for an upgrade).

I then had what might be a crazy idea - could I just use the new product in Lime for trials, and revert to the old product for licensing itself? This would potentially solve a few problems for me, e.g. I wouldn't have to worry about removing old v1 licenses after a user upgrades, which might be problematic, and users could keep and switch between both versions of my app as required, using the same license.

So in a nutshell the idea is:

When no license is active, or an existing v1 license is active with no "v2" feature set, then use trial functionality from the v2 product. If the trial has expired, revert to the v1 license and refuse to start if the v2 feature has not been set. V1 functions as normal.

Any thoughts?

Honestly, a better solution is just to create a separate product *version* in LimeLM. Product keys and verified trial in separate product versions in LimeLM are not transferable to other product versions. And if you offer some sort of discount for users upgrading from old versions of your app you could ask them to enter their product key, verify it, and then store the product key in a custom license field for the new product key (thus "linking" the 2 product keys so you have more data at your disposal).

Does that make sense?

It does make sense Wyatt, and that is how I have configured things at the moment. Is there actually any difference between a different version and a different product within LimeLM?The current plan is just to have a completely new set of product keys, and provide a new one on upgrade when the user supplies a v1 key. I added support for grabbing the v1 key in v2 of the app by explicitly loading the old .DAT file, which worked well (this is so the link to the purchase page can be populated with the v1 key and populate the required field on the purchase page). The v1 license would then be upgraded with a new "feature" that links the v2 key and means that the v1 license cannot be used to buy another reduced price upgrade.

No real problems with this approach, but the advantages I can see for actually just updating the v1 license, and using the v2 licensing just to drive a new trial period:

1/ I have quite a few licenses that have been sold to retailers. It would be easier just to upgrade their unsold licenses with a new feature than supply new (OK - it probably wouldn't be much easier, but maybe a little).2/ I'm probably over thinking this, but it would be nice to prevent users from giving away (or selling) their old v1 licenses. I could, I suppose, just deactivate the v1 license after an upgrade but I want to let users switch between versions for a while, as there are a lot of differences. Nicer perhaps to have a single license covering it.

Any reasons why this plan wouldn't work? You say that product keys are not transferable between versions, which I understand. However in this model, the v2 is *only* used for a new verified trial for existing users who would almost certainly used up their v1 trial. Essentially what I want is for v1 users to be able to download and test v2 on a trial, and this seems like a reasonable way of doing it..

so:

1. On startup, check the v1 license exists, is activated and has the v2 feature.2. If yes, go ahead and run the app.3. If not, run a use trial using v2 license information. If within the trial, run in trial mode. If not, put up the usual end of trial window.