Designing the Licensing Scheme

Software components like forms, ActiveX designers, and ActiveX controls use licenses to protect against unauthorized use. On the one hand, you need to ensure that your customers can build, package, and redistribute applications that use these components. On the other, however, you may wish to prohibit people who purchase the resulting applications from reusing your ActiveX designer in other applications without licensing that capability from you.

At run time, three licensing options are possible:

In some cases, the distinction between designing and running an application is not clear. For example, consider a spreadsheet application with an embedded licensed control (for example, a workbook). In a sense, the workbook can be thought of as an application for distribution. But anyone with that workbook can modify it to the point where it becomes a very different application. Unless the original license key is automatically discarded, the second user has, in effect, obtained unauthorized application design rights by virtue of the original application license key. Yet many workbook changes — data entry, for example — should not necessarily invalidate the original application license.

You should carefully consider what differentiates design-time activity from run-time activity in your ActiveX designer, especially in situations where the design-time and run-time objects are the same. Failure to do so erodes the meaning of enforceable application licensing that is critical to many third-party licensing and distribution models, which in turn may hamper the market for third-party components.

Your ActiveX designer can register separate design-time and run-time license keys. Separate licensing allows users to distribute applications built with the designer, while prohibiting them from distributing the designer itself. Users with a run-time license can't write new applications based on the ActiveX designer without first licensing the visual designer from you.

If you want to allow your ActiveX designer to be used with applications that are not licensing-aware, you should design your license enforcement scheme with this in mind. The simplest approach would be to require users of those applications to buy a design-time (machine or user) license for the component. Alternatively, you might sell a different license for end users.