Details
-
User Story
-
Resolution: Unresolved
-
P1: Critical
-
None
-
License server development 38
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.