Feature Table

[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

Columns

Feature
Primary key used to identify a particular feature record.

Primary table key.

Feature_Parent
Optional key of a parent record in the same table. If the parent feature is not selected, this feature is not installed.

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).

Title
Short text identifying a visible feature item.
Description
Longer descriptive text describing a visible feature item.
Display
Numeric sort order, used to specify the order in which the feature is to be displayed in the user interface. The value also determines if the feature is initially displayed expanded or collapsed.

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.

Level
The install level at which the entry is initially selected. Processing the Condition table can modify the Level value. For more details, see Install Level in the Remarks section that follows.

An install level of zero disables the item and prevents it from being displayed.

Directory_
The Directory column contains the name of a directory that can be configured by a Selection Dialog. The Browse button becomes when the column is non-null, and when the particular feature is selected in the user interface. The properties used in this column must be public and have an identifier consisting entirely of uppercase letters. This column is a key into the Directory table and any of the directories indicated to be configurable here will also belong to that table.
Attributes
Remote execution option.

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.

  1. If the application has not already been installed by the installer and if no feature state request has been made via any of the following properties: ADDLOCAL, ADDSOURCE, ADDDEFAULT, COMPADDLOCAL, COMPADDSOURCE, FILEADDLOCAL, FILEADDSOURCE, REMOVE, REINSTALL, or ADVERTISE, then:
  2. If a feature is to be installed to the authored default (the ADDDEFAULT property has the feature as part of its value list), the ifrsFavorAdvertise bit is always ignored. The state is determined by the lower 2 bits.
  3. If a feature is to be installed to the Advertise state via the ADVERTISE property, and if the ifrsDisallowAdvertise bit is not set, the state is set to Advertise. Otherwise, the state is determined by the lower 2 bits.
  4. If a feature is to be installed to the Advertise state and its parent must be installed, the Advertise state is preferred for the parent unless ifrsDisallowAdvertise bit is set for the parent — in which case the state (of the parent) is determined by the lower 2 bits.
  5. If a feature is to be installed to the Advertise state, the Advertise state for the children is preferred unless ifrsDisallowAdvertise bit is set for the child — in which case the state (of the child) is set to Absent.
  6. The Advertise state is relevant only to features and not to the components of the features. Hence feature state transitions to and from the Advertise state are to be treated as transitions to and from the Absent state for the constituent components.
  7. The user interface does not display the option to change to the Absent or the Advertise state if the corresponding ifrsUIDisallowAbsent bit or ifrsDisallowAdvertise bit is set for that feature.

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.

Remarks

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.