New Help Videos Posted

September 24, 2009

I have posted some new videos on my website, and on You-Tube.

They are all available for download from here: http://www.serialkeymaker.com/CreatingKeys.aspx

or, from ScreenCast (better quality than You-Tube):

Installing Serial Key Maker

Introducing the Serial Key Maker Interface

Overview of the Versions

Programatically Creating License Keys

Using the License Wrapper Utility

Using the Code Helper Utility
 

or, from You-Tube

Introduction to the Serial Key Maker interface

 

Installing Serial Key Maker

 

Overview of the Versions

 

Programatically Generating License Keys

 

Using the License Wrapper Utility

 

Using the Code Helper Utility


Serial Key Maker 4.0.0.1 Released

August 23, 2009

Serial Key Maker 4.0.0.1 is now available for general release! 

This is a major update and is available for free to everyone who has an active service contract.

The single biggest new feature is the ability to programatically generate license keys (This is only available in the PRO version of Serial Key Maker).  This long awaited feature allows you to create a web sevice, or other networked application, that can automatically generate licenses keys without your manual intervention.  I’ll discuss in more detail below.

Other features and bug fixes of this release include:

  • revision of the wrapper functionality, making it more intuitive.
  • ability to optionally always delete unwrapped file after use.
  • addition of “Show Me The Code” – an embedded utility to generate working code using your private key that shows the use of encryption and how to implement Serial Key Maker.
  • enhanced code samples to demonstrate the use of Serial Key Maker (including a web service demo).

Programatically Generating License Keys

I created an extension to the Serial Key Maker API that allows you to programatically generate license keys.  This allows users to create and maintain say a web service that serves up license keys.   You effectively specify the license key properties (type, duration valid, features unlocked, number of keys to generate etc), pass that to the Extension API and call the generate method, you are passed back an array list of license keys.

Programatically Generating License Keys

Programatically Generating License Keys

 

Setting up the key properties

Setting up the key properties

 

Included in the samples (available here) is a demonstration web service that shows how to implement the new extension object.

The Serial Key Maker user interface now includes a code generator that will take your private key, encrypt it for you, and create working code with actual license keys generated from your private key.  All you need to do is copy and paste the code into your project and tweak it.

Show Me The Code

Show Me The Code

 

Generated Code - ready to use!

Generated Code - ready to use!

 

I have enhanced the wrapper functionality – you can now specify that you want to always delete the unwrapped file after the user has finished.  Before, it only deleted EXE files after use.  Now you can specify any file that will get deleted.  This is useful for people that want to protect a wider range of files that do not get modified – like PDF’s,WMV’s etc.

Wrapper Enhancement - always delete

Wrapper Enhancement - always delete

 

If you have not yet tried Serial Key Maker – now is a great time to try – click here to download the latest.


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.

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!