Allows users to configure licensing entirely through environment variables, without touching the License.ini file. Useful for CI/CD pipelines, containers, and multi-user machines where writing to a shared INI is undesirable.


New Environment Variables

____________________________________________________________________________________________


VariablePurpose
UNDERSTAND_LICENSE_CODEOverrides the license code from the INI
UNDERSTAND_LICENSE_SERVEROverrides the license server from the INI
STI_LICENSE_SERVERFallback server override (existing, now fully dynamic)


Works across all apps: und, understand, uperl, upython, userver, C API.

Case sensitivity: Case-insensitive on Windows; must be uppercase on Linux/macOS.


Behavior

____________________________________________________________________________________________


Full override — both env vars set

set UNDERSTAND_LICENSE_CODE=XXXX set UNDERSTAND_LICENSE_SERVER=licensing.scitools.com

INI is ignored entirely.


Mixed mode — one env var set, the other falls back to INI

set UNDERSTAND_LICENSE_CODE=XXXX   ← from env var                                    ← server from INI

No env vars

Original INI behavior, unchanged.


Transparency

____________________________________________________________________________________________


und license


When env vars are active, und license notes the source:

Note: License code is from UNDERSTAND_LICENSE_CODE environment variable. 
Note: License server is from UNDERSTAND_LICENSE_SERVER environment variable.

-setlicensecode / -setlicenseserver


If you save to the INI while an env var is active, you are warned it will be overridden:

Warning: UNDERSTAND_LICENSE_CODE environment variable is set to "OLD_CODE" and will override the license code you just saved until the environment variable is unset.

-deregisterlicensecode


Clarifies which code is being deregistered:

Note: Deregistering license code from UNDERSTAND_LICENSE_CODE environment variable ("XXXX"), not the INI.


Key Technical Detail — Install Key Isolation

____________________________________________________________________________________________


Each env var code gets its own install key slot in the INI (license/installKeyFor_<code>), completely separate from the INI code's slot (license/installKey). This prevents error 103 when switching between codes or using a different env var code than what was previously registered.

⚠️ Error 103 previously occurred when the env var code sent the install key belonging to a different code in the INI. The per-code slot ensures each code's registration is fully independent.