I have Windows desktop software that requires the installation of a small binary license file (1KB) that controls access to DLLs that are installed with the software package. The GUI part of the package has a separate 25 digit license key that controls the features that are available through the GUI.

I don't have any flexibility with respect to what goes in the 1KB file or what it's used for. That isn't my scope so I have to live with it.

What I'm wondering is, what is the best process from a UX perspective for delivering the license file (1KB), the license key (25 digits) and having them installed by the user?

The awful process I have now involves emailing the file and key to the user and having the user install them by copying the 1KB file (manually) into the software installation folder and entering the 25 digits into a dialog box in the Windows desktop software GUI. I know this is awful but it was done in a rush due to external constraints. Now that we have more time, we'd like to build something that is kinder to the user.

Some of the possible tricks that we have up our sleeves include:

  • Establishing a licensing web service
  • Sending text (encoded or otherwise) and/or attachments by email
  • Including trial key stuff in the installer and sending paid user bits after the fact

One other piece of context: the software is a business application that is used by a few analysts in larger organizations. The solution isn't targeted at consumers doesn't need to be flashy, just not awful and inconvenient.


In response to comments on the original question:

Here's a bit more around my technical constraints: I have control over the software installation process and the Windows desktop software. I also have control over the license maintenance process, which runs as part of an administrative website.

What I can't change: The license comes in two parts (25 digit key and 1KB file). Also, there isn't a rock-solid 1:1 relationship between the 25 digit key and the 1KB file, so it might not always work that the user could cut and paste the 25 digits and then the desktop software (or installer) would download the 1KB file.

I'm less concerned about automating the license sending process than the license installing process. It's OK if the administrator has to pull the two pieces together somehow, what's really important to me is optimizing the end-user's experience of applying that information so that they get to the part where their software just works. The idea of somehow combining everything into one action at the user's end is very good though. I'm going to really mull that over.

I agree that licensing is anti-UX by its very nature. I'm looking for a solution that minimizes the pain, more so than maximizes the joy.

  • Is the license entry something you could do via software? I'm unaware of the technical constraints here, but it seems like copying the file + the dialog could be integrated into a single app with a single action (key entry)
    – Zelda
    Commented Aug 21, 2012 at 20:17
  • Could an installer grab the license file once the key was entered? Commented Aug 21, 2012 at 20:28
  • Software licensing/registration is anti-UX in general. It annoys more than anything. I think the best option is to ensure serial numbers are easily cut-and-pasteable.
    – DA01
    Commented Aug 21, 2012 at 23:07
  • Does the process have to be a file? Seems like that would be the most un-friendly way to install a software licence.
    – JeffH
    Commented Aug 22, 2012 at 11:48
  • @JeffH - Unforunately, one of the things I can't control is that at the end of the day there needs to be a 1KB file stored in the program files folder. This file is required by a DLL that my software uses. I have no control over what the DLL does or what it needs. Having said that, I would be able to create this file on the fly or download it using a web service based on some other piece of information. The 25 character key wouldn't do it, but maybe a third thing could be used to get both the 25 characters and the 1KB file.
    – Joel Brown
    Commented Aug 22, 2012 at 11:55

1 Answer 1


Here's what we are doing, modified for your scenario:

Put the key into a text file, zip the DLL with the text file, rename the .zip to an extension of your choosing, and register the extension for your application.

When ypur applicaiton detects it is run with a file of that extension, verify the contents of the .zip, indicate the user

You are about to install the following licence for Joel Browns Magic Software:
Valid until May 2020
Reticulating splines unlocked
Splining Reticulas unlocked

This allows to distribute the licence by email as attachment, or as download, and makes installation "two click".

Make sure to validate the contents of the package - especially don't make this a feature that allows to copy arbitrary files to arbitrary locations.

You may need to rename or even encrypt the DLL to thwart agressive firewalls / antivrus software.

Storing this DLL in the program folder is problematic, as this requires elevation. You may need to use a separate tool for the installation that indicates the need for administrative rights through its manifest. I would run this tool after you told the user what will happen.

We chose zip since a typical delivery may contain a dozen of files, it's very easy for support guys to check and modify the contents without me providing additional software, and there are libraries for most languages for creating an extracting zips.

(edit) Standard disclaimer about inventing file extensions out of thin air applies.

  • Thanks Peter. This is an intriguing answer (+1). Since I only have one file and one string to deploy I think I would use my own packing/encoding rather than ZIP just to make sure that I don't run afoul of overzealous firewalls. I've been thinking about having my MSI package lay some ground work for me by granting unelevated write status to the 1KB file under Program Files, assuming I can get away with that. Otherwise it's time for requestedExecutionLevel level="requireAdministrator" in the manifest.
    – Joel Brown
    Commented Aug 22, 2012 at 23:50
  • Yeah, as said, we use .zip only since we install multiple files (and ended up for using it for other files, too). The concept has worked smoothly for years, without any problems getting files "through" (so that I'm now busy fighting back the requests to make that a general installer for everything.) However, some security software might scan unknown files for the occurence of a PE header somewhere within the file, so I'd play it safe and encrypt (or at least XOR CONST) the DLL file.
    – peterchen
    Commented Aug 23, 2012 at 7:55
  • Reticulating splines? Sims player detected. Commented Aug 23, 2012 at 13:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.