Infralution Support Forum Index Infralution Support
Support groups for Infralution products
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Licensing non-UI product and trials

 
Post new topic   Reply to topic    Infralution Support Forum Index -> Licensing Support
View previous topic :: View next topic  
Author Message
hounddog



Joined: 21 Nov 2016
Posts: 9

PostPosted: Wed Nov 23, 2016 6:32 am    Post subject: Licensing non-UI product and trials Reply with quote

I am trying to embed the Infralution Licensing into a non-ui product (it's a .net DLL). I have made a lot of progress with this, integrated both the AuthenticatedLicenseProvider and the EncryptedLicenseProvider.

I'd like to do this scenario, this would be the perfect scenario:
1. Have user install and have access to all functionality right from the get go
2. Preferably, no manual activation needed
3. After a time period, say 30 days, the license converts to a "community edition" that allows some functionality.
4. If the user decides to purchase the full edition, they receive an Authenticated License.

So Far:
1. I *believe* I cannot use the EvaluationMonitor/EvaluationDialog because of the nature of my product being a DLL with no UI (no WindowsBase, etc), plus even if it did the entry process is not a windows form app.
2. I have chosen to use Infralution.Licensing.ASP as the licensing provider (again no Windows Forms). This seems like the best choice.

Questions:
1. Can I do the above scenario and what would be the best way?
2. I have looked at the AuthenticatedLicense.FirstAuthenticationDate. I was thinking about using that to help with the "trial" license. If I included that license in the product distribution, would that date be the first auth date for that instance or for any instance. In other words, if two users download the product with that license and activate on different dates, would they both have the same FirstAuthenticationDate. Obviously if so, that would be a failure.


Other thoughts?

Thanks!

Tim
[/u]
Back to top
View user's profile Send private message
Infralution



Joined: 28 Feb 2005
Posts: 4876

PostPosted: Fri Nov 25, 2016 3:21 am    Post subject: Reply with quote

Sorry I missed your post. I think you will be able to achieve your goals - but a little more information will clarify the best approach.

Is your DLL being used from a process which won't have access to the user interface eg a windows service? If that is the case then you won't be able to use the UI forms to show the evaluation status or install the license directly from the DLL. If your DLL is a plug in for a product which does have a UI then you should still be able to use the UI forms

Who are you selling the DLL to - is to end users (eg a plugin for a product) or to application developers who will distribute it with your product? This will affect how you choose to do licensing.
_________________
Infralution Support
Back to top
View user's profile Send private message Visit poster's website
hounddog



Joined: 21 Nov 2016
Posts: 9

PostPosted: Sun Nov 27, 2016 10:16 pm    Post subject: Reply with quote

[quote="Infralution"]Is your DLL being used from a process which won't have access to the user interface eg a windows service?[quote]
Correct.

[quote="Infralution"] Who are you selling the DLL to - is to end users (eg a plugin for a product) or to application developers who will distribute it with your product? This will affect how you choose to do licensing.[quote]

No. It is a DLL to be used from any custom application, either another DLL or another EXE, neither of which would necessarily have any windows components.

Please advise.
Back to top
View user's profile Send private message
Infralution



Joined: 28 Feb 2005
Posts: 4876

PostPosted: Mon Nov 28, 2016 9:31 pm    Post subject: Reply with quote

Since you don't want end users to have to install anything I would probably recommend using simple encrypted license keys which the client application would supply before using the DLL. See the following thread:

http://www.infralution.com/phpBB2/viewtopic.php?t=1842
_________________
Infralution Support
Back to top
View user's profile Send private message Visit poster's website
hounddog



Joined: 21 Nov 2016
Posts: 9

PostPosted: Wed Nov 30, 2016 6:28 am    Post subject: Reply with quote

Thanks.

How do I achieve "After a time period, say 30 days, the license converts to a "community edition" that allows some functionality."?

Thanks
Back to top
View user's profile Send private message
Infralution



Joined: 28 Feb 2005
Posts: 4876

PostPosted: Wed Nov 30, 2016 9:10 am    Post subject: Reply with quote

You can use the RegistryEvaluationMonitor class to do this (without using the EvaluationDialog interface). Creating an instance of this allows you to determine the time since the software was first used. You can then limit your functionality after 30 days. Note that, as with any method that stores data on your computer, the RegistrationEvaluationMonitor can potentially be circumvented by a an astute user by either using registry monitoring tools or by resetting their computer or vm to a restore point prior to the software use. For this reason we normally recommend that you limit your functionality in some other way when running in unlicensed evaluation mode.
_________________
Infralution Support
Back to top
View user's profile Send private message Visit poster's website
hounddog



Joined: 21 Nov 2016
Posts: 9

PostPosted: Wed Nov 30, 2016 5:26 pm    Post subject: Reply with quote

So, if I want to use a more "foolproof" way, I would need to use an AuthenticatedLicense, correct?

And the *only* way to use an AuthenticatedLicense is to issue a key, correct?

So, the user would be requried to enter the key, either by calling a method in the DLL or using a separate GUI based "unlocking" tool.

Are all of those above assumptions correct?

Or, is there some way to issue the AuthenticatedLicense in an automated manner?
Back to top
View user's profile Send private message
Infralution



Joined: 28 Feb 2005
Posts: 4876

PostPosted: Thu Dec 01, 2016 12:35 pm    Post subject: Reply with quote

Issuing free Authentication License Keys does not really get you around the issue. Since it is generally not difficult for customers to create multiple email addresses and so simply obtain a new free key under a different email address that they can then use.
_________________
Infralution Support
Back to top
View user's profile Send private message Visit poster's website
hounddog



Joined: 21 Nov 2016
Posts: 9

PostPosted: Fri Dec 02, 2016 12:34 am    Post subject: Reply with quote

So, here's what I think I'm going to do. Please let me know if I am making any egregious errors. Thanks.

1. In my licensing provider (a subclass of LicenseProvider), I'm going to first look for an AuthenticatedLicense.

2. If the AuthenticatedLicense is not found, then I'll use the RegistryEvaluationMonitor as you suggested. If it is "expired", I'm going to then look for an EncryptedLicense. If it is not expired, all good, everything is licensed.

3. This EncryptedLicense (from above) will be for the "community edition" components. (I have decorated all classes within the library with LicenseProviderAttribute because I have a unit test to check all public non-abstract class for the LicenseProviderAttribute. This way I cannot checkin a new class that I have NOT "addressed" the licensing concerns with it. I could have these "community edition classes" not have any LicenseProviderAttribute, but I feel this is a good fail-safe to not release something that is intended to be for an edition beyond the community.

3. So, out of the above, we have the "best" license, validate the type against it.

Make sense?
Back to top
View user's profile Send private message
Infralution



Joined: 28 Feb 2005
Posts: 4876

PostPosted: Fri Dec 02, 2016 4:57 am    Post subject: Reply with quote

It sounds a little complicated. If you want to use an AuthenticatedLicense the it has to be installed for each computer (because the license is authenticated against a particular computer). You can use a separate program to do this installation - but normally if you are providing a component for client companies to distribute to their users you would not want to force this requirement on to their users.

If your component has different design time capabilities to those used by the end user (as user controls do) then you can use an AuthenticatedLicense for design time use and then generate an encrypted license (from the AuthenticatedLicense.LicenseKey) which can be distributed to end users by calling AuthenticatedLicenseProvider.GetEncryptedLicenseProvider to obtain the EncryptedLicenseProvider object and then call GenerateRuntimeKey on this object. This can also be complicated to setup (except for user controls where the designer does the work for you).
_________________
Infralution Support
Back to top
View user's profile Send private message Visit poster's website
hounddog



Joined: 21 Nov 2016
Posts: 9

PostPosted: Fri Dec 02, 2016 2:57 pm    Post subject: Reply with quote

Infralution wrote:
It sounds a little complicated. If you want to use an AuthenticatedLicense the it has to be installed for each computer (because the license is authenticated against a particular computer). You can use a separate program to do this installation - but normally if you are providing a component for client companies to distribute to their users you would not want to force this requirement on to their users.

If your component has different design time capabilities to those used by the end user (as user controls do) then you can use an AuthenticatedLicense for design time use and then generate an encrypted license (from the AuthenticatedLicense.LicenseKey) which can be distributed to end users by calling AuthenticatedLicenseProvider.GetEncryptedLicenseProvider to obtain the EncryptedLicenseProvider object and then call GenerateRuntimeKey on this object. This can also be complicated to setup (except for user controls where the designer does the work for you).


Yeah, the component is not redistributed. The component is the licensed application, so having to have other users acquire and unlock the component will not be necessary.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Infralution Support Forum Index -> Licensing Support All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group