File Table
The File Table contains a complete list of source files with their various attributes, ordered by a unique, non-localized, identifier. Files can be stored on the source media as individual files or compressed within a cabinet file. For more information, see Using Cabinets and Compressed Sources.
The File Table has the following columns.
Column | Type | Key | Nullable |
---|---|---|---|
File | Identifier | Y | N |
Component_ | Identifier | N | N |
FileName | Filename | N | N |
FileSize | DoubleInteger | N | N |
Version | Version | N | Y |
Language | Language | N | Y |
Attributes | Integer | N | Y |
Sequence | Integer | N | N |
Columns
-
File
-
A non-localized token that uniquely identifies the file. This field is insensitive to case. Do not assign identifiers to different files that differ only by their case.
-
Component_
-
The external key into the first column of the Component Table. This field identifies the Component that controls the file.
-
FileName
-
The file name used for installation. The name may be localized.
Because some web servers can be case sensitive, FileName should match the case of the source files exactly to ensure support of Internet downloads.
-
FileSize
-
The size of the file in bytes. This must be a non-negative number.
-
Version
-
This field is the version string for a versioned file. This field is blank for non-versioned files. The file version entered into this field must be identical to the version of the file included with the installation package.
The Version field can also be set to contain the primary key of another record in the File table. The referenced file then determines the versioning logic for this file. For more information, see Companion Files. Note that if this file is the key path for its component, it must not be specified as a companion file.
-
Language
-
A list of decimal language IDs separated by commas.
Font files should not be authored with a language ID, as fonts do not have an embedded language ID resource. Thus this column should be left null for font files.
-
Attributes
-
The integer that contains bit flags that represent file attributes.
The following table shows the definition of the bit field.
Constant Hexadecimal Decimal Description msidbFileAttributesReadOnly 0x000001 1 Read-Only msidbFileAttributesHidden 0x000002 2 Hidden msidbFileAttributesSystem 0x000004 4 System msidbFileAttributesVital 0x000200 512 The file is vital for the accurate operation of the component to which it belongs. If the installation of a file with the msidbFileAttributesVital attribute fails, the installation stops and is rolled back. In this case, the Installer displays a dialog box without an Ignore button. If this attribute is not set, and the installation of the file fails, the Installer displays a dialog box with an Ignore button. In this case, the user can choose to ignore the failure to install the file and continue. msidbFileAttributesChecksum 0x000400 1024 The file contains a valid checksum. A checksum is required to repair a file that has become corrupted. msidbFileAttributesPatchAdded 0x001000 4096 This bit must only be added by a patch and if the file is being added by the patch. msidbFileAttributesNoncompressed 0x002000 8192 The file's source type is uncompressed. If set, ignore the Word Count Summary Property. If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression state of the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed and msidbFileAttributesCompressed. msidbFileAttributesCompressed 0x004000 16384 The file's source type is compressed. If set, ignore the Word Count Summary Property. If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression state of the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed and msidbFileAttributesCompressed. If the msidbFileAttributesVital bit within the Attributes column is set, and if the component to which the file belongs is selected for installation, then the installer must be able to install this file for the installation to be completed successfully. If the installer is unable to install the file for some reason (for example, if the source file cannot be located within the source image), then an error dialog box will appear with the options "Retry" or "Cancel". For a file that does not have msidbFileAttributesVital set, the options in case of an install error will be "Abort", "Retry", and "Ignore" (that is, the user will have the option to complete the install successfully without installing that file).
The msidbFileAttributesChecksum bit within the Attributes column should be set for every executable file in the installation that has a valid checksum stored in the Portable Executable (PE) file header. Only those files that have this bit set will ever be verified for valid checksum during a reinstall. For more information, see the REINSTALLMODE.
-
Sequence
-
Sequence position of this file on the media images. This order must correspond to the order of the files in the cabinet if the files are compressed. The integers in this field must be equal or greater than 1.
The sequence numbers in the Sequence column are used to specify both the order of installation for files and the source media upon which the file is located (in conjunction with the Media Table). For example, suppose a file has a sequence number of 92. To determine the source disk this file resides on, look in the Media table for the entry with the smallest Last Sequence value that is larger than 92.
Although compressed files are assigned internal sequence numbers within cabinets, those absolute numbers do not need to match the sequence numbers within the File table. It is, however, important that the sequence of files in the File table be identical to the sequence of the files within the cabinets.
For files that are not compressed, the sequence numbers need not be unique. For instance, if all your files are uncompressed, and all reside on one disk, you could give all the files the same sequence number.
The maximum limit is 32767 files. To create a Windows Installer package with more files, see Authoring a Large Package.
Remarks
The InstallFiles and RemoveFiles actions in the sequence tables process the information in this table. For information about using sequence tables, see Using a Sequence Table.
The table is initially generated from the file list, but if cabinet compression is used, the table is regenerated from the output of the compression engine. For more information, see Cabinet Files.
To move an existing file on the user's computer during the installation use the MoveFiles Action and MoveFile Table. To install a file to multiple locations use the DuplicateFiles Action and the DuplicateFile Table.
The following table summarizes the possible combinations of values in the Version column and the Language column. For more information, see File Versioning Rules.
Version | Language | Description |
---|---|---|
1.2.3.4 | 1033 | The version and language. |
1.2.3.4 | (Null) | The version but no language. |
1.2.3.4 | 0 | The version and language are neutral. |
Testdb | (Null) | The companion file with no language associated with it. |
Testdb | 1033 | The companion file and language. |
(Null) | 1033 | No version, but has a language associated with it (that is, typelib, helpfile). |
For more information, see the MsiLockPermissionsEx Table and LockPermissions Table.
Validation
ICE02
ICE03
ICE04
ICE06
ICE18
ICE30
ICE32
ICE35
ICE39
ICE42
ICE45
ICE50
ICE51
ICE54
ICE55
ICE57
ICE59
ICE60
ICE67
ICE69
ICE76
ICE91