Uploaded image for project: 'Qt License server'
  1. Qt License server
  2. QLS-1185

Bootstrapping problem with license checks during installation

    XMLWordPrintable

Details

    • User Story
    • Resolution: Unresolved
    • P1: Critical
    • 3.4.0
    • None
    • General

    Description

      During Squish installation the user needs to configure the license information, e.g., by providing a URL to a floating Squish license server. The installer then performs a license check and extracts the licensed Squish editions from the license information. Based on this the installer shows different options to the user, e.g., Squish for Web + Squish for Java allows you to test embedded Java content in web pages and the user needs to configure the Java environment (I provided a simplified example to give a little bit of context).

      Note that Squish uses QtIFW 4.1.1 and any upgrade needs to be carefully evaluated, because we may loose support for installations on older systems.
      Also note that offline installations are a requirement, since we recommend to install Squish in isolated testing environments.

      Problem description

      To perform a license check during installation, we encounter a bootstrapping problem: We would first need to install the license daemon/service, since that is the component responsible for communicating with the unified license server, before actually doing the license check and continuing with the installation. That is not part of QtIFW's design and there's a lot of problems with doing a pre-installation:

      • Installing and running a service before the actual installation may trigger anti-virus software
      • Leaving a clean state: How do we ensure that the component is properly removed if the user cancels the installation?
      • How can the user cancel the pre-installation?
      • How to handle permissions during pre-installation? QtIFW usually handles permissions during regular installation.
      • How to handle errors, in case something (esp. unexpected) goes wrong?

      Possible solutions

      We (Squish developers) discussed several possible approaches.

      Separate API

      There could be a separate API for the license check available that is invoked through the installer, e.g., by performing an HTTP(S) request. The downside with this approach is that this requires re-implementation of large parts of the client library (libcip) for properly validating the license.

      Separate executable

      We have the option to extract an executable from one of the installer components into a temporary directory and run that. This executable should perform all the checks for a given unified license server URL and return the license information (evaluation vs. commercial, Squish edition, etc.) only if the license is valid.

      The requested license will be reserved, see QLS-1113.

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              Unassigned Unassigned
              blochberger.max Maximilian Blochberger
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:

                Gerrit Reviews

                  There are no open Gerrit changes