Making Your Product Production-Ready

You now know how to integrate RLM into your product. This chapter describes considerations for a good RLM implementation.

If you are evaluating RLM, you can skip this chapter for now. You will want to return to it later for guidance on how to make your product ready to ship.

Productizing your licensing implementation

In order to make your license management production-ready, there are 4 main steps:

  1. Decide on your Licensing Strategy

  2. Configure your RLM libraries with your permanent options

  3. Package your software for shipment

  4. Prepare to create licenses for your customers

Step 1: Decide on your Licensing Strategy

RLM allows you to request and release licenses for products. The license for a product has certain attributes, which are described in the license grant itself (which is contained in the license file). The most basic license attributes are:

  • ISV name (you pick this when you purchase RLM)

  • Product name

  • Highest Version supported

  • Node-locked or floating (if node-locked, the node identification)

  • Expiration date

Before you integrate RLM into your application, you must decide which products you wish to license and select the product names for the licenses. It is generally recommended that you choose names that correspond very closely to the name which your customer purchases - it makes license administration much more straightforward for your customers if the name of the product in the license is the same as what they purchased. Note that the product name must be less than 40 characters.

In addition, each license request will specify a version. The two main strategies for selecting versions are either (a) make the version number match the major version of your software, in which case a new license would be required by your customers for each major release of your product or (b) only change the version in the license request occasionally, when you want to force your customers to purchase a new license.

So, before you start to integrate the code into your application, you should decide:

  • Where do you want to request and release licenses,

  • What is the name of the license(s),

  • What license version to request.

Note

There is more information about these issues in the chapter on Creating Licenses.

Generally, the first two decisions will stay the same over the life of the software product, while you will update the license checkout version from time to time.

Step 2: Configure RLM libraries with permanent options

There are 4 configuration items you must complete before you build your RLM kit:

  • Install your permanent RLM license into license_to_run.h

  • Create your public/private key pair, which is done one time only. (See note in the last chapter.)

  • Configure your RLM parameters in the file rlm_isv_config.c

  • Modify the makefile to change the ISV name “demo” to your permanent ISV name.

To install your RLM license, edit the file src/license_to_run.h, using the parameters you received in the email from Reprise Software.

Note

RLM kits are pre-built with demo license keys which expire in approximately 2 months from the date of kit release, so you may be able to skip this step if you are evaluating RLM.

Your applications and your ISV license server are built from components supplied by Reprise Software. You need to provide 2 custom inputs for the build:

  • Your Public Key, for license key verification - rlm_pubkey.c - (This was done in step #2, above.)

  • A file of RLM customizations called rlm_isv_config.c (this file is contained in the src directory on the kit)

rlm_pubkey.c is created by the rlmgenkeys utility. You should run this only once to create your public/private key pair. Once you create these files, save them - if you lose one of these files, you will no longer be able to generate license keys compatible with older versions of your software.

rlm_isv_config.c contains calls to:

  • Setup your ISV name

  • Install your RLM license (do not change this call)

  • Allow or disallow your server to run on virtual machines

  • An option to create a FLEXlm-compatible lock file

  • Register ISV-defined hostids, and

  • Include or exclude code for optional hostids (e.g., dongles, etc)

Edit this file before compiling your ISV server or applications.

Once you have created these two files you create your ISV server by typing “make” in the kit directory, and you are ready to link your applications with the RLM libraries.

Step 3: Package your software for shipment

With RLM, you specify nearly all licensing options in the actual license that you ship to your customers. However, there are a few issues that you need to consider before you ship your application:

  • Review the RLM API calls you make in your application to be sure that you use product names that are suitable (we strongly recommend using the name of the product that is in general use), and that the version numbers are correct. If you intend for your customers to be able to use old licenses from your product, be sure that the version number in the rlm_checkout() call is appropriate.

  • If we have provided you with special debug libraries, make sure you use the non-debug libraries from the standard kit for your release.

  • Review the options you used to Build Your License Server.

  • Ensure that you have included The RLM Server, your ISV Server, and the RLM License Administration Tools in your distribution kit.

  • Review the Best Practices for RLM Integration section and ensure that your product and installation are well-behaved.

Reserved Product Names

In general, your product names need only be unique to your company. However, any product name beginning with the 4 characters “rlm_” is reserved.

Step 4: Prepare to create licenses for your customers

You will want a system in place to fulfill licenses for your customers before you ship your product. Review the Creating Licenses section to choose the way you will do your license fulfillment.


Using RLM with the Visual Studio GUI

If you use the Visual Studio GUI interface on Windows, the procedure to configure the RLM libraries is as follows:

In a command window, build the RLM SDK. You need do this only once per release of RLM. Then go into your project settings / properties in Visual Studio:

  • Under C/C++, add <RLM SDK path>src to the Additional Include Directories (where <RLM SDK Path> is the path to the installed RLM SDK)

  • Under the Link/Input/Additional Dependencies or Additional Library Path, add <RLM SDK path><platform>rlmclient.lib (where <platform> is x86_w3, x86_w4, x64_w3, or x64_w4)

  • Under the Link Command Line or Project Options section, make sure the following libraries are included:

    • ws2_32.lib

    • Advapi32.lib

    • Gdi32.lib

    • User32.lib

    • winhttp.lib

    • netapi32.lib

    • kernel32.lib

    • oldnames.lib

    • shell32.lib

    • wbemuuid.lib

    • commsupp.lib

    • ole32.lib

    • oleaut32.lib

    • libcmt.lib

    In addition, include these libraries if you’re using VC++ 2015 or later:

    • libvcruntime.lib

    • libucrt.lib

Then you will be able to use RLM in your project without leaving the GUI.


For instructions on using RLM with .NET or Java, see the Reference Manual.