Changes Coming to Serial Key Maker

February 11, 2009

After taking a break from working on the Serial Key Maker code over the holidays, I am now ready to move ahead with some changes that I have been mulling over.  I have had a number of very useful feature requests, and I’d like to implement them.  (Keep the the requests coming!)

Website Changes

First, I am working on re-designing the website.  I have decided to change to and ASP.Net provider.  I’d like to have a more dynamic web site, and server, for the changes I am planning for the future of Serial Key Maker.  I have outsourced the design and implementation of the web site; work has already started on the new version.

Down the road, I intend to make a web service available to manage License Key generation. Users have been asking for a subscription model to Serial Key Maker where they can effortlessly add logic to their applications to call home and validate license keys.  This opens up tons of  possibilities for the future of the software – like being able to disable keys on the fly and having more flexible terms with the validity of keys.

So, the new server, and ASP.Net hosting is the first step in that direction.  I will post more information on the new look of the web site in the coming weeks.

While that is going on, I am working on extending the API. 

Machine Key Changes

I am going to extend how machine keys are used to limit licenses.  I will allow the user to select how the machine code is generated – which hardware to use as a component of the signature.  Right now, the Serial Key Maker API makes the choice, and it is static.  Some users have requested the ability to decide which hardware components get selected.  I will make that choice available via an overloaded method call in the API.

 Valid Dates

The way demo dates are created and used is as follows:  A generated license key is valid from the day it is created until a preset number of days have passed.  I am going to allow the developer to specify which date the license key uses as the start date (in other words, not be restricted to the date that it was created).  This will provide the flexibility to extend the range of dates used for demo license keys

 Longer Term Plans

I am mulling over these plans for Serial Key Maker:

Extract Key Generation Logic

I would like to provide an API interface for creating license keys. Tthat is, extract the logic of generating keys from the UI and make it available via a new API.  This will provide the benefit of programatically automating the generation of license keys.  So, a typical usage would be to create a web service you host on your server, and have your application call home to get it’s license key, or to validate that it is good.  This will allow developers the ability to dynamically disable license keys…or perhaps even extend their validity.

Hosted Web Service

As mentioned, I am comtemplating a similar service offering myself.  That way you would not have to deal with the issue – Serial Key Maker would take care of it for you.

Compact Framework API

Finally, I intend to port the API to the compact framework.  I’d like to make Serial Key Maker available to .Net applications created for handheld devices.


Valentine’s Day 20% Promotion!

February 7, 2009

We are happy to announce a special Valentine’s Day discount to any new purchases of Serial Key Maker.  Starting Monday 9th February 2009, you can use a coupon code to get a 20% dicount on any of the 3 flavors of Serial Key Maker.

The promotional code is:  FEB_VAL_2009

When making a purchase, there is a “Coupon Code” text box to enter the code before finalizing the sale – on the page after you enter your address/CC information.

FEB_VAL_2009

Add coupon code: FEB_VAL_2009

Notes:  

  1. The promotion runs from 2/9/2009 to 2/28/2009
  2. It is valid only on new sales.  Sales made before or after the above dates do not qualify.
  3. The coupon code has to be used in conjunction with the purchase.  Unfortunately, I cannot apply the discount (or refund the discounted money) after the sale is finalized.
  4. The discount only applies to the purchase price of Serial Key Maker PRO, Standard and Lite.  It does not apply to the purchase of extended support.

If you have any questions, please do not hesitate to ask.


Good Software and Service!

November 27, 2008

I pride myself in creating good software and providing great service.  So when I am the recipient of good software, and great service, I am especially happy!

I am currently on a short trip to South Africa to visit my family.  On a whim, I decided to check how my web pages are loading from here.  Clicking through my site, I eventually landed on my product payment page, which is hosted and managed by FastSpring

I was thrilled to discover that they are mapping the IP address to country, and displaying the appropriate currency unit, and conversion.

FastSpring converts for location

FastSpring converts for location

 

I know this is not rocket science.  It is, however, a nice touch given that more than half my sales to date are from outside of the US.  It is comforting to know that my non-US customers do not have to calculate what my US-centric price means to them. 

I had not considered this aspect to my sales presentation before, and am now wondering how that is.  My pricing model and considerations have been very US-thinking.  Should I adjust prices for other currencies? Does it matter?

Just another example of why I am a FastSpring fan.  I am being provided with good value, and made to re-think what I am doing…


December 2008 Coupon

November 24, 2008

 

Use the coupon code below to get the PRO version of Serial Key Maker for $149.  Coupon expires 1/1/2009.

PRO_DEC_2008


Assembly Inspector – why you should get it!

November 24, 2008
 

The previous release of Serial Key Maker had a minor bug in it; minor – depending on your point of view, that is

For some unknown reason, I was referencing the Windows.Forms dll in my API. So when a user added the Serial Key Maker API reference to his project, Visual Studio pulled in the Windows.Forms dll too, when it wasn’t already referenced. I didn’t notice this because much of my testing involved a Windows Forms application.

However, if you are using the Serial Key Maker API from a console application, or in another DLL, you would not need the Windows.Forms reference, but Serial Key Maker would cause you to need it.

Lesson learned: Make a unit test for a scenario that does not involve windows forms.

This lead me to consider what other objects I had carelessly tied to my application. It turns out a colleague of mine has an application well suited to this problem. I had not used it before and my new problem seemed like an opportunity to take a good look at it. I got a copy of Assembly Inspector and put it to work on Serial Key Maker.

What follows is my review of Assembly Inspector.

Serial Key Maker and Assembly Inspector

Serial Key Maker and Assembly Inspector

Although I know and respect the author of Assembly Inspector, I have done my best to keep this review as unbiased as possible – focusing squarely on the value of the software he wrote. In fact, he didn’t use Serial Key Maker for his licensing solution (Serial Key Maker was not ready when he implemented his licensing solution), so I have no hidden agenda here.

I prize simple, intuitive software that just…works. Assembly Inspector is a huge winner in that category. From installation, to loading my first assembly, to evaluating the output generated, Assembly Inspector is beautiful in its simplicity.

It supports drag-n-drop and provides multiple views of the dependency tree. You can quickly switch from tree view to list view. You can filter out common Microsoft dependencies.

At a glance you can see all the DLL’s that your object is dependent on. The information supplied is everything you need to know about the objects referenced: name, version, location and whether it is signed or not.

At first, I performed a basic test of the Assembly Inspector functionality. A vanilla, “how does it work out of the box” test.

I dropped the Serial Key Maker API dll onto Assembly Inspector. I then dropped my user interface executable onto Assembly Inspector. In both cases, I quickly got a report of all the assemblies tied to my application, and felt confident that Assembly Inspector was correctly reporting how Serial Key Maker was put together. (If only I had looked at this tool before I released my previous version!)

assemblyinspector_listview_options

After the vanilla test, I tried to break Assembly Inspector.

I created 4 test DLL’s. DLL1 through DLL4. I made each DLL dependent on the other. I put DLL 2 and DLL4 in the GAC, and left DLL 1 and DLL3 out of the GAC. DLL4 referenced Serial Key Maker. I then referenced DLL1 from Test.Exe

When everything was set up correctly, I tested it with Assembly Inspector, and it reported everything correctly. I then tried the following to break AI

I removed DLL 2 and DLL 4 from the GAC independently
I renamed all 4 DLL’s independently
I recompiled DLL3, breaking binary compatibility
I changed DLL to be strongly named.

In all cases, Assembly Inspector correctly reported when one of the dependencies was missing, or un-reachable. No matter how I tried to fake out Assembly Inspector, it was able to correctly report what was broken, and where it was broken.

After the session, I was left with a high confidence that if Assembly Inspector did not report any dependency issues, then there were none.

The feature that allows you to filter out Microsoft assemblies is an excellent touch!

Often you will want to see and fix that which you have control of. You can usually safely assume the Microsoft dependencies are valid (if they are not, you have other issues, unrelated to the development of your product.). The feature, however, is not complete. I would like to have the ability to filter out libraries by name (including the use of wildcards, and perhaps regular expressions).

The “Hide” feature for Microsoft and System libraries did not exclude “mscorlib” and “Accessibillity”. I could have done that with a freeform text filter.

A practical application of this software for me would be to use it in my unit tests. I would like to be able to call it from my unit test harness, and have it run through its paces and report when I have something missing. Thus, a command line interface would fully complete what I would need out of this application.

Another nifty feature of the reporting, is that Assembly Inspector efficiently removes all duplicate references from view. If two objects reference the same dependency, it is not repeated. This was done, I assume, to streamline the display, and make the dependency list more readable. I would, however, like to be able to toggle this feature, so I can optionally see where each dependency is repeated and used.

In all, I was very impressed with the presentation and function of Assembly Inspector. It accurately told me the state of my application’s dependencies, and provided full comfort that my software was as I thought it was…which is what you want and expect from such a tool.

Summary

Version Evaluated: 2008.10.5.9

Pros: Very clean, simple interface; does exactly what it says it does; accurate and reliable results.

Like to See: Free text filter; ability to toggle seeing repeated dependencies; a command line interface to be able to include Assembly Inspector validation into my unit tests.

Verdict: If you work with and deploy .Net assemblies, Get It!

assemblyinspector_about


Version 3.0.1.2 – DEMO keys from the API!

November 20, 2008

 

I have released a new version of Serial Key Maker (3.0.1.2) that now allows you to create demo keys by making a call to the API.

All you need to do is call the “MakeDemoKey” method on the API, passing in your private key and the number of days you want the key to be valid for.

objLicenseObject.MakeDemoKey(“MyPrivateKey”,30)

 

 

This feature will allow you to create a demo key for your user when your application installs.  That way, your user does not have to contact you before using your product.

Serial Key Maker actually uses this feature! 

As mentioned before, Serial Key Maker uses the API for its own licensing validating.  When you install it for the first time, it operates in DEMO mode.  The demo key is now generated from the “MakeDemoKey” method on the API object.


Version History

November 18, 2008

Early on I kept a running file on the changes I had made to Serial Key Maker, but I never published it. 

I have since been convinced that this information is important for various reasons:

  • it lets users know that the product is actively being worked on
  • it shows users the evolution of the product
  • it might help identify re-implemented bugs that I thought were fixed

I therefore think the effort of keeping a detailed log of changes is well worth it, and will do a much better job at keeping it up to date in the future. 

I had to go through my change log and piece together some changes and map them to general dates.  I also eliminated some of the internal detail that is not really relevant to a change log.  I shall post this on the Serial Key Maker site as well, and keep it updated there.

You can see the update history [here].


Version 3.0.1.1 Released!

September 30, 2008

 

Version 3.0.1.1 of Serial Key Maker introduces the ability to wrap documents and applications with licensing logic.  It provides non-developers (and developers who do not wish to change thier code) the ability to take advantage of Serial Key Maker’s licensing logic.

Basically, the user drags the file they want to wrap on to the Serial Key Maker interface, selects some options, and then clicks “Wrap”.  Serial Key Maker, takes the document or application and wraps licensing logic around it.  When a user tries to access the document or application, they are presented with a prompt to enter a valid license key.  If they enter a valid key, they are able to open the document or run the program.  Any document that can be opened by Windows , or any application that can be run by Windows (no matter what language it was written in) can be wrapped by Serial Key Maker. 

It is important to know how this wrapper functionality is implemented before deciding if it is appropriate for your business model.

When Serial Key Maker wraps the document or application, it takes that document or file and *encrypts* it into a new file called “configsettings.skm”.  This file is unable to be read or executed until a valid license key is entered. 

When a valid license key is supplied, the original document or file is decrypted and written to disk.  The user can then open the document or start the application.

This wrapper functionality provides a *once off* licensing solution, so it is not appropriate for demo versions, or for all users. 

The reason it is a once off is because of the nature of the documents it will be wrapping. If you have a database application or an excel spreadsheet you want to protect, the user is typically going to need to save changes to that document.  For this reason, Serial Key Maker does not tamper with the file after it has been unlocked.  Once unlocked, the file is written to disk, and the user then has full control of that document.

What the Wrapper functionality is appropriate for:
Once off protection for any kind of Windows document or Application
No need to change code in existing applications
Works with any Windows application regardless of the language it was written in
Perfect for locking Word, Excel, Access, PowerPoint and PDF documents

Not Appropriate for:
Documents or applications that need to run in demo mode
Documents or applications that need to be license-validated every time before they start

Also in this release:

  1. Redesigned website, that include a forum section
  2. Enchanced Error handling and messaging

We trust that you find this enhancement useful!


Testing software with different versions of IE and Windows

September 18, 2008

This post is not about profoundly new information, but it is so extremely valuable that I can’t image anyone not taking advantage of it.  And, its free!

Microsoft makes testing your software on various editions of Windows, and with various versions of IE so much easier by their continued support for making time-limited versions of their OS and other applications available for free.  They do this via their Virtual PC platform. 

At any time I have tried, I just go to their Virtual PC downloads section, and get a virtual hard disk copy of one of the available versions of the OS, download it, and within about 30 minutes, I am running my software on a completely clean installation of windows, and whatever browser I am targetting.

You first need a copy of the Virtual PC software, which MS has made available for free (!).

Get it at:

http://www.microsoft.com/windows/products/winfamily/virtualpc/default.mspx

Then you need to download an image of the OS.  At the time of this writing, there are 4 Operating System images available on the following page: http://www.microsoft.com/downloads/details.aspx?FamilyId=21EABB90-958F-4B64-B5F1-73D0A413C8EF&displaylang=en

The exact ones available changes, so just seach for “VPC Image”, and you’ll find a few.  I found TFC and SQL server images, which could also be useful for testing.

This has made testing Serial Key Maker a much more certain process.  I can install on clean systems, and muddy the water as much as I like and see how my installation process goes, and how my program runs.

For example, I develop on a beefy Vista machine.  However, I have just about all the security settings turned way down, and run as an administrator.  I forget all the things I have turned off to be able to develop efficiently.  So, to get a good sense of how my applications will run on a vanilla (a.k.a locked down) Vista install, I just fire up the VPC and run my new version.

I have found and fixed tons of unobvious but annoying bugs this way.  I’d honestly pay for the ability to do what Microsoft is (currently) giving out for free.


Show and Tell

September 10, 2008

I originally planned to have version 3.0.0.1 available by the end of August, and I have been reluctant to post about it in favor of getting it done.  (Also, it forces me to admit that I am late!)

Unfortunately I am still not done.  I underestimated the number of problems I would run in to, and how long it would take to fix them.  I will post about some of the issues I found and how I solved them in a later post.  This post is to provide some information on where I am, and what you can expect in the new version. 

I have finished the coding of the application and have fixed all known outstanding bugs.  I am now wrapping the application into a setup package which is proving to be a little more complicated that the previous versions.  This edition has some additional files that need to be deployed as part of my wrapper technology.

To recap, this version supports the ability to simply drag your file (any windows file – PDF, Word, Excel, EXE) onto my app, select a few customizations, and the app will generate a wrapper around your file.  My wrapper will handle the license key validation, so you need write no code!

Here it is in action:

4 steps to license key wrapping

4 steps to license key wrapping

Customizing the wrapper

Customizing the wrapper

The sample above takes a PDF document, wraps it with Serial Key Maker logic, and then produces an executeable (”How to Win at Amazon.exe”).  You then distribute this executeable to your paying customers, and provide them with a license key.  You do not need to write any code!

When they launch your application, the wrapper checks that they have a valid license, and if they do, opens the document.

User is presented with a screen to enter license key

User is presented with a screen to enter license key

 

I am very excited about this new feature.  I have had a lot of requests from people to implement this functionality, and I can’t wait to get it out there.

In addition to this change, I am revamping the Serial Key Maker web site.  It has a new look and I am going to add a message board so I can share answers with all users, and get more feedback on how to improve the product.

Here is a screenshot of what the front page will look like:

Click to see full

Click to see full

I am working furiously to get all this done…I’ll get it out as soon as I can, but I won’t release until I am confident it is good, so I don’t want to promise any more dates.

I’ll post here as soon as the new version is available.