I had promised a potential customer that I would blog about Infralution Licensing System, a few days ago. Well, here it is.
I want to first talk about what is out there, and why I decided on Infralution. I had a 4 item list for my criteria:
- The system/framework must work with my .NET tools and not get in my way. This also means that it needs to be designed specifically designed for .NET applications.
- As a bootstrapper, I needed something inexpensive, at least in the current phase of my business. The system/framework must be $200 or less.
- The system/framework must be designed with small companies in mind. This means that I want it to work with the least amount of hassle possible.
- The system/framework must be easy to integrate with ecommerce/payment systems.
Here's a list of the frameworks that I looked at:
Your needs will most likely be different than mine, so you still need to make an evaluation of these systems yourself. I'm only giving my opinion, within my own circumstances. I'm also sure that I missed several systems that I've never heard of.
The two finalist were .NET Reactor and Infralution. Reactor is actually more than just a licensing system, it also does obfuscation, anti-debugging, assembly merging, and other sleight of hand. The reasons I ended up with Infralution were:
- The company encourages you to copy their code into your application.
- It's easy to create custom generators for your licensing needs.
- It comes with a full blown licensing management application.
- It doesn't use the annoying activation scheme that most major vendors use now-a-days. I didn't want to subject my customers to activation either.
The framework was $90 with source. I opted for also buying the source of the licensing application. That set me back another $90, for a total of $180. To me that's well worth it, since I have no desire to roll my own system, and I rather let somebody else create improvements to this area that is not my core competency.
The licensing application runs on .NET and uses MS Access to store data. Fortunately, you can hook it up with SQL Server. I just downloaded version 3.7.1, and it looks like it the included starter database work with only SQL Server 2005. No problem, I just attached it to one of my SQL Server 2005 Express instances.
I posted a inquiry about why it wasn't attaching to SQL Server 2000 on their support forums. I was surprised that I got an answer in a couple hours. I actually posted around 1:30 AM. I didn't stick around to see the response, but I was happy to find that there was a reply when I went over there to their forums.
Here's what the initial screen for the License Tracker looks like:

The first thing that you need to do is setup a product.

Products need to be associated with a distributor, so that's the next step.

Next, I associated SystemWidgets with the product I created earlier, and here is the result:

Once you have these setup, you can then start with your putting licensing in your application. The gist of it is that you copy a couple of their classes into your solution. The framework has a bunch of samples, that even I can follow. Their forums have information readily available, and the company is involved heavily in them.
I've never done licensing before, even though I've been developing for around nine years. It took me about 3 hours of tinkering with their code to start feeling comfortable with how it integrates with my code. I've actually wanted to wait more than 30 days after I installed this, so that I can study several expired trial scenarios.
Doing licensing for MMC snapIns has been challenging. I think I'm the only ISV that has a snapIn as their main product. Diskeeper sells a snapIn, but it is part of their whole product hard drive defrag suite.
I have several things that I need to do to get PainlessSVN out the door. The first is to create a custom generator that incorporates all of the client and sale information into the registration keys. The second thing I need to do is to create a custom assembly that will run as a step in the sales funnel in the purchasing DotNetNuke module that I bought.
Fortunately for me, this module handles all of the purchasing integration with my DotNetNuke portal, so I don't have to mess with PayPal response codes. I'm adding automatic emailing of the registration keys as part of this custom assembly. The last step is to push back the new purchased keys and sale information into the Infralution License Tracker. This should be fairly easy, since databases are my bread and butter.
Feel free to contact me through comments to this post, or through private messages. You will need to create an account in this site to use private messages though.