First Looks

Manage Software Licensing

First look at Desaware's Licensing System.

Managing software licenses correctly for your applications can be difficult. Desaware's Licensing System provides a well-designed infrastructure for a solid system that handles many licensing scenarios successfully.

Licensing System uses strong 128-bit cryptography to generate server-based keys that build on .NET's strongly named assemblies. This approach's main benefit is that you don't need to install any kind of secret data on the user's machine, such as a hidden file, or data in the Registry—a requirement that makes other protection systems relatively easy to break, because the software is no longer protected if the secret is discovered.

Desaware's tool enables a variety of licensing scenarios, ranging from rigorous security in which a user must have an Internet connection to use your software, to less-secure, more-flexible arrangements. You can create a demonstration license that expires after a certain number of days, allow the creation of a temporary key until an Internet connection is present, or even implement fairly strong security without requiring an Internet connection. These options let you balance convenience with security, and it's difficult to imagine a scenario for .NET applications the Licensing System can't work for.

The system's server is an ASP.NET Web service you can install on any Internet Information Services server. The Web service exposes two services: Management and Activator. Management provides a set of methods for managing the server; for example, you can add entries for new applications you'll activate, create a resource file for activating licensing in an application, and generate installation codes. The License Manager tool provides a simple interface to these management Web methods (see Figure 1).

The Activator service exposes only one method—Activate—which implements public access to the licensing server your application contacts to activate a license key. It takes an application name, data stream, and binary key as parameters and returns a result code, such as Success, DemoExpired, or InvalidCode. This simple, clean interface, kept separate from management functions, helps keep your license system as secure as possible.

Licensing System uses a system-identification algorithm—based on a hash of the computer name, system disk volume ID, and addresses of any Internet adapters—to prevent a code's use on multiple systems. This prevents your app from needing to pass information that might invade a user's privacy to your server. However, you can write code to modify how the ID is generated, making it looser or more exacting.

Licensing System provides a fine balance of usability, security, and flexibility for .NET applications. A limited-functionality trial version is available for download.

Desaware Licensing System
Desaware

Web: www.desaware.com
Phone: 408-377-4770
Price: $1,495 for one server and one client license
Quick Facts: Complete system for server-based licensing management.
Pros: Flexible options; code access to features; strong encryption.
Cons: Available only for .NET applications.

About the Author
Don Kiely is a senior technology consultant. When he isn't writing software, he's writing about it, speaking about it at conferences, and training developers in it. Reach him at [email protected].




Build Installation Routines
by Ken Cox

Posted December 8, 2003

InstallShield DevStudio 9 is a high-end tool for developing sophisticated setup routines for Windows-based software. InstallShield has embraced basic Microsoft Installer (MSI) functionality, extended it, and made it easier to use. The product also supports InstallShield's own highly capable engine, which uses InstallScript.

An installer must check the user's machine for requisite hardware, provide missing components, hold the user's hand, create menu entries, and cope with OS variations, Registry settings, and unknown service packs. DevStudio is a complete solution that includes wizards galore. They range from VB6 installations and patches through Web and Windows Mobile setups.

The well-designed Project Assistant interface walks you through a basic setup package (see Figure 1). The tasks include checking the installation requirements, creating the dialog boxes that "interview" the end user about optional features, and building multiple distribution formats. For example, when you indicate that your application requires Internet Explorer (IE) 6.0 on the target machine, Project Assistant prompts you for the message to display if IE6 isn't found.

Project Assistant is a tool for novices and experts alike. Well-placed links to additional help topics appear at key decision points, such as whether you need a custom requirements module. Project Assistant lets nonlinear thinkers jump among tasks without losing data. The assistant runs fine inside the VS.NET IDE, but the excessive scrolling can be annoying in the cramped environment.

Specialists who write and debug complex scripts will appreciate the dozens of predefined functions, designer previews, and reminders. For example, DevStudio prefills customer-support information that appears eventually in the Add/Remove Programs entry.

The Web Project wizard performs a Web setup on Internet Information Services (IIS) for ASP.NET applications. The wizard knows about the IIS root folder and grays out inappropriate options, such as adding desktop shortcuts to executables. However, the default file location (the Program Files directory) is questionable for Web files. Also, the wizard doesn't offer to configure the Web as an application-a common cause of ASP.NET problems.

The software's CD version includes a helpful poster that outlines the installation process for a basic MSI structure and an InstallScript setup. The documentation is complete, professional, and integrated. DevStudio checks the InstallShield site for updates and patches on startup. The IDE includes a link to community pages for peer-to-peer and official support.

Setup kits are a crucial element of software development and a major contributor to an end user's out-of-the-box satisfaction. DevStudio 9 is a polished tool that can give you a head start at making a good first impression.

DevStudio 9
InstallShield

Web: www.installshield.com
Phone: 800-374-4353; 847-466-4000
Price: $1,199
Quick Facts: Advanced tool for creating installation packages for Windows-based software.
Pros: Excellent UI acts as a resource, teaching tool, and wizard; handles a wide range of installation types; has dozens of predefined functions; supports Microsoft Installer and InstallScript.
Cons: Interface is cramped inside the VS.NET IDE; Web install could use more features.

About the Author
Ken Cox is a VB.NET developer in Toronto building e-commerce Web applications and XML Web services. Ken is a former broadcast journalist and a Microsoft MVP for ASP.NET. Reach him at [email protected].

About the Author

Don Kiely is a senior technology consultant in Fairbanks, Alaska. When he isn't writing software, he's writing about it, speaking about it at conferences, and training developers in it. Reach him at [email protected].

comments powered by Disqus

Featured

  • Compare New GitHub Copilot Free Plan for Visual Studio/VS Code to Paid Plans

    The free plan restricts the number of completions, chat requests and access to AI models, being suitable for occasional users and small projects.

  • Diving Deep into .NET MAUI

    Ever since someone figured out that fiddling bits results in source code, developers have sought one codebase for all types of apps on all platforms, with Microsoft's latest attempt to further that effort being .NET MAUI.

  • Copilot AI Boosts Abound in New VS Code v1.96

    Microsoft improved on its new "Copilot Edit" functionality in the latest release of Visual Studio Code, v1.96, its open-source based code editor that has become the most popular in the world according to many surveys.

  • AdaBoost Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the AdaBoost.R2 algorithm for regression problems (where the goal is to predict a single numeric value). The implementation follows the original source research paper closely, so you can use it as a guide for customization for specific scenarios.

  • Versioning and Documenting ASP.NET Core Services

    Building an API with ASP.NET Core is only half the job. If your API is going to live more than one release cycle, you're going to need to version it. If you have other people building clients for it, you're going to need to document it.

Subscribe on YouTube