In a previous article, I discussed the Windows Phone Store and the Windows 8 Store, and the easy distribution method that it offers for developers. However, Windows 8 is still coming, and I need a way to distribute my current e-learning authoring software.

The goal was to have the product directly downloadable as a trial version, allow the use of virtually all of its functions, capture a real email address, have automatic online activation, and finally let the user purchase the software directly from the trial version.

First, I evaluated commercial systems. There are a number of service suppliers who will encrypt your software, add a number of tries or number of days for the trial version to be active, and provide online activation servers. There are also a number of software vendors that provide much the same solution in controls and libraries.

After this period of evaluation, and the realisation that we would have to compromise or pay too much, we decided to move ahead with our own solution.

The first challenge was a trial version. Usually, trial versions are limited by a number of tries or days, and often their functionality is reduced. We wanted to offer a fully functioning version that could be evaluated as long as the user likes, but would not produce content for distribution. The problem with this need is that the output is produced as standard HTML and JavaScript, which is easily copied and distributed. We solved this problem by using an integrated web server that we customised to only run encrypted content. We then removed the publishing function from the trial version. Now, users could develop and run the e-learning content, but only within the product. It might still be possible to gather a few people around the single trial licensed PC or use it serially, but our EULA will make that practice illegal for the trial version.

Next, we dealt with the licensing, and went with the tried-and-true method of generating a unique serial number for the PC using such data as the CPU ID, hard-disk number, and network card MAC address. This unique serial number would be used to generate a licence on an online server, both for the trial and full versions. We then needed to build an online server, so after looking at both PHP and ASP.Net, we went with ASP.Net as our main programming environment is Visual Studio.

The user would download the product and start it. They would then be required to activate it by filling out an email address and some personal info. The product would then send this data and the serial number to the licence server, which would generate a licence key from the generated PC serial number, and send back an email with an activation link. Once the user clicks on the link in the email, the software would function as a trial version. This would give us a real email address (although it might only be temporary, but that's another story) to be able to follow up any downloads.

The next step was purchase. Once the product is activated in trial mode, it would have a visible purchase button. This button would open a web page that also contained a PayPal "Buy Now" button. The user could use a PayPal account or credit card to purchase the software. Once again, the licence server would be used to receive the information from PayPal and upgrade the user to a full version.

We allowed for multiple licences on a single email address, and this also meant that we could cover the transfer of licences to new computers. When a user tries to purchase a full version on an existing email address, they would be given details of the existing licences, and asked whether they wished to transfer an existing licence to a new computer.

As part of the process of distribution, we had to look at our pricing, and we made the decision to move to an annual subscription. I'm aware that Microsoft will be offering subscriptions to Office, and I've also had a subscription to World of Warcraft for over six years. There are obvious benefits for potential users. The software entry price is much lower, and you receive all updates and new versions for free. For the vendor, it gives a less volatile income stream.

So now our software will always check the online server when it starts. It will validate the licence and check for any new updates. If the licence period has expired, it will revert to trial mode, so the user can still continue to work on their e-learning modules, but will not be able to publish them until they renew the subscription. If it can't get to the server, it will rely on a local licence certificate on the PC.

It's taken around three weeks of development and testing, and we now have a solution that meets all of our original goals.

I'm now wondering what Microsoft's position will be on subscription products in their Windows Store, as I could theoretically make the download free.