[This is preliminary documentation and subject to change.]
The Feature table defines the logical tree structure of features.
The Feature table has the following columns.
Column | Type | Key | Nullable |
---|---|---|---|
Feature | Identifier | Y | N |
Feature_Parent | Identifier | Y | |
Title | Text | Y | |
Description | Text | Y | |
Display | Integer | Y | |
Level | Integer | N | |
Directory_ | Identifier | Y | |
Attributes | Integer | N |
Primary table key.
Key pointing to the Feature column of this table. Null indicates that this feature has no parent (root item). The Feature_Parent column must not equal the Feature column of the same record (that is, an item cannot be its own parent).
If the value is Null or zero, the record is not displayed. If the value is odd, the feature node is expanded initially. If the value is even, the feature node is collapsed initially.
An install level of zero disables the item and prevents it from being displayed.
The lowest two bits indicate the favored state of the feature. The following table lists valid values for these two bits.
This value | Means this feature will be installed |
---|---|
0 (ifrsFavorLocal) | Locally, if possible. |
1 (ifrsFavorSource) | To run from the source, if possible. |
2 (ifrsFavorParent) | Using the remote execution option of the parent feature. This is not allowed for parent features. |
The rest of the significant bits are bit flags.
These bits work together in the following manner.
If this column is left blank, the value defaults to zero (ifrsFavorLocal). For more information about Attributes options, see Attributes Column in the Remarks section that follows. For more information on how features are selected for installation, see FeatureRequestState property.
Several additional temporary columns are added to this table when it is loaded into memory for computations used by costing and user interface selection.
Features and Components
A feature is a distinct subset of a product consisting of one or more components. Each component is defined in the Component table, and the link between a feature and its components is defined in the FeatureComponents table.
Any component can be shared between two or more features. If two or more features refer to the same component, that component is selected for installation if any of the associated features are selected. For more information about shared components, see the Attributes Column that follows.
Install Level
For any installation, there is a defined Install Level, which is an integral value from 1 to 32,767. The initial value is determined by the InstallLevel property, which is set in the Property table.
A feature is installed only if the feature Level value is less than or equal to the current Install Level. Once the installation is initialized, the installer user interface could be authored to give the user the opportunity to modify the Install Level of any feature in the Feature table. For example, the author could define Install Level values that represent specific installation options, such as Complete, Typical, or Minimum, and then create a dialog that allows the user to select one of these states. Depending on the state the user selects, the dialog would set the InstallLevel property to the corresponding value. If the author assigns Typical a level of 100 and the user selects Typical, only those features with a Level of 100 or less are installed. In addition, the Custom option could lead to another dialog containing a Selection Tree control. The Selection Tree would then allow the user to individually change whether each feature is installed.
Attributes Column
If a feature is marked as ifrsFavorLocal and this feature is to be installed, all components that are related to this feature (and are not marked for source install) are installed locally. Those components marked as irsSourceOnly in the Component table are still installed to run from the source CD/server. Similarly, the components of features marked ifrsFavorSource are installed to run from the source CD/server (unless marked to be installed locally). A component (not marked irsSourceOnly) that is shared among two or more features is installed locally if at least one of those features is marked ifrsFavorLocal, even if the other features are marked ifrsFavorSource.