Common behavior
...
The following lifecycle states are possible for a dynamic variable defined in the installer descriptor:.
- unset
If unset, the variable is defined but does not have any active value and is invisible during the installation process.A variable can be defined and unset also if it depends on a condition which at the given time evaluates false, and there is no second definition of the same variable setting it. - set
If set, the variable has an active value, which can be still changed during panel changes depending on changing variable conditions.If a variable is defined more times it gets evaluated in the order of definition, thus, the last definition applying at the given time has precedence. - frozen
During being frozen
If frozen, the variable's value cannot be is not changed during the refresh process on panel changes.
Precedence rules during refreshing
...
A dynamic variable will not be refreshed after it has been assigned a value from a user input field. This creates a dedicate dynamic variable
which behaves differently after the panel on which the user input field appears.
This means as soon as the user presses Next after filling a field which has the same name as a dynamic variable, the dynamic variable get is set to the value entered by the user and enters the frozen
state and remains in that state unless the user presses the Previous button and remains frozen unless the user and moves backward again over the panel containing the input field by pressing the Previous button.
This meansIn consequence, a value entered by the user always has precedence over values that would be generated by dynamic variable refreshing in subsequent panels.
If there is more than one panel that modifies a dedicated one and the same variable, this variable is frozen immediately after the user completes the first panel containing the variable by pressing Next.
In addition, if the user goes back through the panel sequence by pressing Previous, they must reach the first panel containing the variable before it will be unfrozen.
In this way, the variables can be reset to the proper values based on new conditions when the user navigates backward and forward multiple times and inputs new choices.
Global precedence for dynamic variable assignments
...
- User input field (for instance on UserInputPanel, InstallPanel): A valid user input is assigned as a variable value and freezes the variable from further changes during refreshing.
Note: Each panel can access an API for registering variable names it affects or override when being active. Freezing is not just limited to the UserInputPanel. - Refresh: try to get the last valid value in order of the definitions taking the conditions into account
- Refresh: try to find a default value from the
<variables>
section - Refresh: unset if the variable value cannot be assigned due to no variable condition evaluating to
true
totrue
and the unset attribute is not set to false for that certain variable definition.