View previous topic :: View next topic |
Author |
Message |
manlyboy
Joined: 24 Apr 2012 Posts: 30
|
Posted: Sun Jul 27, 2014 11:11 pm Post subject: Restricting end user to specific version of licenced assembl |
|
|
Hi,
I would like to implement a method that will restrict an end user to installing only a version of my product released during a 12 month period that is already defined within an Infralution licence. Something like:
If licence.valid = true and licence.dateofpurchase between <dop> and <dop>.Add12months and version number < <versionNumber> type stuff.
The method should be able to be called prior to running my actual installer so it would need to 'phone home' and check the licence validity and end users ability/permission to install the new version. It would also do it again during installation.
Sounds pretty simple until you want the end user to be able to download and install an older version that they are/were entitled to.
Complicate it a little more with allowing the end user to install a version that has had bugs fixed but was released after their valid licence period expired. Like they were entitled to v12.1, you have released v13, v14 etc and I fix a bug in v12.1 and release v12.2 .
Would it be easier to change to an end user buying a Version licence and then releasing a new Version every 12 months. Embed the version check code in the licence itself. That would then create a new complication in that some people would end up upset if a new version is released within a short time from original purchase.
It would be great if someone has already done this and says you can download the code from here but I would also appreciate and recommendations/comments in regards to end user reactions etc. |
|
Back to top |
|
|
Infralution
Joined: 28 Feb 2005 Posts: 5027
|
Posted: Sun Jul 27, 2014 11:46 pm Post subject: |
|
|
Depending on the installer you are using you should be able to create a Custom Action that does the necessary license check. If you want to prevent the user even downloading the update then you would need to implement some logic in the code that provides access to the downloads and have the user enter their license key.
I would include both the date of purchase and the version number purchased in the AuthenticationData. Your custom action can allow the user to install the license (if not installed) and check that the current release date and the version number are supported by the license.
It is certainly easier to just release a new version periodically which requires a paid upgrade. You can then just offer a free upgrade to customers that purchased within a set period of an upgrade eg a month. _________________ Infralution Support |
|
Back to top |
|
|
manlyboy
Joined: 24 Apr 2012 Posts: 30
|
Posted: Mon Jul 28, 2014 10:56 pm Post subject: |
|
|
Thanks for your comments.
I'll probably make the changes you suggest. |
|
Back to top |
|
|
CADbloke
Joined: 07 Jan 2016 Posts: 25 Location: Sydney
|
Posted: Thu Oct 05, 2017 10:09 am Post subject: |
|
|
Assumption: the user's license lets them perpetually use the latest version of my software they were entitled to when their support subscription expired, if they don't renew their support.
You can probably stop the user auto-updating if their support is expired but it can't really stop them downloading a newer version if the app doesn't check what version is actually running in comparison to what they were entitled to when their support expired. There's really no way to stop a user downloading a newer version by another means, perhaps even getting an update with a licensed version and applying it to expired versions.
You could manually set a "max version allowed" but that seems like an unmanageable and ultra-boring administrative overhead. Well, with a bit of luck some day it would be.
You could check the assembly build or release date as per http://www.infralution.com/phpBB2/viewtopic.php?t=2869&highlight=updates+expired
I searched for topics on this forum and the general Internets and came up with this idea ...
Using the "Automatic Versions" Visual Studio extension at https://marketplace.visualstudio.com/items?itemName=PrecisionInfinity.AutomaticVersions#overview
- automatically timestamp the AssemblyFileVersion number with the "Date" (yyddd) option. eg: "1.0.25.17278" - "25" is a build number, "17278" is the year "17" & day of the year "278". Related: October already?!?!!?
- check the license's support subscription expiry date field, converted to yyddd format against the AssemblyFileVersion field (see https://stackoverflow.com/q/909555/492) and you will know if the version they are running is outside their support agreement.
For really good info on the different version number fields see https://stackoverflow.com/a/65062/492 - it explains why I chose "AssemblyFileVersion"
What do you think? Seems legit? |
|
Back to top |
|
|
Infralution
Joined: 28 Feb 2005 Posts: 5027
|
Posted: Thu Oct 05, 2017 10:32 pm Post subject: |
|
|
Thanks - some good information there _________________ Infralution Support |
|
Back to top |
|
|
|