Deployment policy
At Hackolade, we want to let customers benefit from newly developed features as soon as they are developed and tested. As we say: "Application code is only happy when deployed in production..." or "what's the use of developing something if it is to leave it in a drawer?" ;-) This is why we release a new version of the application every single week of the year.
But some large customers don't want users to be able to upgrade, and prefer to deploy our desktop app with a specific configuration whereby they turn off the checks for application and plugin updates. The main drawback is that users are not aware of the availability of newly developed enhancements, resulting in customers not taking advantage of the heavy investments that Hackolade makes in continuously enhancing the application.
Deployment policy file
A deployment policy file allows configuration by the customer.
The policy allows to selectively turn off the checks for application and plugin updates. As a result, users would not get prompted to update the application and/or the plugins at startup.
The deployment policy file name is
hackolade-deployment-policy.toml
Policy file format
The application looks for the presence and content the deployment policy file every time the application starts, we apply the configuration, and adjust the application behavior accordingly.
We have chosen TOML for the format of our policy file.
- it has a formal open source specification;
- it allows comments (contrary to JSON for example);
- it supports data types;
- it can be parsed using smol-toml, a small dependency-free library that is fully compliant with the latest version of the TOML specification.
Check whether application updates are disallowed
- By default, the check for application updates on startup is enabled.
Update checks are disabled if the deployment policy file contains the line:
canCheckForApplicationUpdates = false
The default application behavior is altered so that:
- the check for application updates on startup becomes disabled.
- the related configuration parameter becomes hidden in Tools > Options > General.
- the related entry becomes hidden in the Help menu.
Check whether plugin updates are disallowed
- By default, the check for plugin updates on startup is enabled.
Update checks are disabled if the deployment policy file contains the line:
canCheckForPluginUpdates = false
The default application behavior is altered so that:
- the check for application updates on startup becomes disabled.
- the related configuration parameter becomes hidden in Tools > Options > General.
- the related entry becomes hidden in the Help menu
- users don't get prompted to install plugins (e.g. when opening a model for a target for which the plugin is not installed).
Check whether plugin installation is disallowed
- By default, users are allowed to install plugins, provided that they have access to https://hackolade.com and https://github.com/hackolade.
Plugin installation are disabled if the deployment policy file contains the line:
canInstallPlugin
The default application behavior is altered so that:
- the plugin manager is hidden
- users don't get prompted to install plugins (e.g. when opening a model for a target for which the plugin is not installed).
Policy file location
The file location is different depending on the Operating System:
Windows
The deployment policy file is located in the application folder, next to the executable file.
By default the installer places places the application in:
C:\Program Files\Hackolade
Although this location may be different if the user changes it during installation, or if the IT image is configured to locate it elsewhere.
Linux
The deployment policy file is located in the application folder where it was unzipped, next to the executable file.
MacOS
On MacOS, the application is installed as one single .app bundle whose content must comply with a predefined structure. Every file in that package also has a signature (in Contents / _CodeSignature / CodeResources). The MacOS Gatekeeper ensures that the files still match their original signature before starting the app. As a result alteration of any file in the package would lead to Gatekeeper refusing to start the application.
The deployment policy file is therefore located in
Hackolade.app/Contents/Plug-Ins
Logging and error handling
In the application log file Hackolade.log, that can be found in Help > AccessApplication Logs, we keep track of the policy
If the policy file is empty (aka by default), the log contains this entry:
Policy: {}
If a custom policy has been defined, the policy is documented, for example:
Policy: {
"canCheckForApplicationUpdates": false,
"canCheckForPluginUpdates": false
}
If there is an error (e.g. a parsing error), the entry may contain:
Policy: failed (see below)
Error while parsing the deployment policy: /Users/%username%/.hackolade/hackolade-deployment-policy.toml
[cause]: Invalid TOML document: invalid value
11: # Whether or not the installation of plugins is allowed
12: canInstallPlugin = false;
^
If the policy file could not be found, the entry may contain:
Policy: null