文件表

文件表包含源文件及其各种属性的完整列表,按唯一的非本地化标识符排序。 文件可以作为单独的文件存储在源媒体上,也可以在 cabinet 文件中压缩。 有关详细信息,请参阅 使用 cabinet 和压缩的源

文件表包含以下列。

类型 Nullable
文件 标识符 Y N
组件_ 标识符 N N
FileName Filename N N
FileSize DoubleInteger N N
版本 版本 N Y
语言 语言 N Y
属性 整数 N Y
序列 整数 N N

文件

唯一标识该文件的非本地化标记。 此字段不区分大小写。 不要将标识符分配给不同大小写不同的文件。

组件_

外部键进入 组件表的第一列。 此字段标识控制文件的组件。

名字

用于安装的文件名。 该名称可以是本地化的。

由于某些 web 服务器可能区分大小写,因此 FileName 应完全匹配源文件的大小写,以确保支持 Internet 下载。

FileSize

文件大小(字节)。 此值必须为非负数。

版本

此字段是版本控制文件的版本字符串。 对于非版本化文件,此字段为空白。 在此字段中输入的文件版本必须与安装包附带的文件版本相同。

"版本" 字段还可以设置为包含文件表中其他记录的主键。 然后,引用的文件确定此文件的版本控制逻辑。 有关详细信息,请参阅 辅助文件。 请注意,如果此文件是其组件的密钥路径,则不得将其指定为配套文件。

语言

用逗号分隔的十进制语言 Id 列表。

字体文件不应使用语言 ID 创作,因为字体没有嵌入的语言 ID 资源。 因此,对于字体文件,此列应为空。

属性

一个整数,其中包含表示文件特性的位标志。

下表显示了位域的定义。

常数 十六进制 小数 描述
msidbFileAttributesReadOnly 0x000001 1 只读
msidbFileAttributesHidden 0x000002 2 Hidden
msidbFileAttributesSystem 0x000004 4 系统
msidbFileAttributesVital 0x000200 512 该文件对于其所属组件的准确操作是至关重要的。 如果使用 msidbFileAttributesVital 属性安装文件失败,则安装将停止并回滚。 在这种情况下,安装程序会显示一个没有 "忽略" 按钮的对话框。 如果未设置此属性,并且该文件的安装失败,则安装程序将显示一个包含 "忽略" 按钮的对话框。 在这种情况下,用户可以选择忽略安装文件的失败并继续操作。
msidbFileAttributesChecksum 0x000400 1024 文件包含有效的 校验和。 需要校验和来修复已损坏的文件。
msidbFileAttributesPatchAdded 0x001000 4096 只有当修补程序添加了该文件时,才必须添加此位。
msidbFileAttributesNoncompressed 0x002000 8192 文件的源类型未压缩。 如果设置此属性,则忽略 单词计数摘要 属性。 如果 msidbFileAttributesNoncompressedmsidbFileAttributesCompressed 均未设置,则文件的压缩状态由 " 单词计数摘要 " 属性指定。 请勿同时设置 msidbFileAttributesNoncompressedmsidbFileAttributesCompressed
msidbFileAttributesCompressed 0x004000 16384 文件的源类型是压缩的。 如果设置此属性,则忽略 单词计数摘要 属性。 如果 msidbFileAttributesNoncompressedmsidbFileAttributesCompressed 均未设置,则文件的压缩状态由 " 单词计数摘要 " 属性指定。 请勿同时设置 msidbFileAttributesNoncompressedmsidbFileAttributesCompressed

如果在 "属性" 列中设置了 " msidbFileAttributesVital " 位,并且为安装选择了该文件所属的组件,则安装程序必须能够安装此文件以使安装成功完成。 如果安装程序由于某种原因无法安装该文件 (例如,如果源文件无法在源图像) 中找到,则会出现一个错误对话框,其中包含选项 "重试" 或 "取消"。 对于未设置 msidbFileAttributesVital 的文件,在安装错误的情况下,选项将为 "中止"、"重试" 和 "忽略" (也就是说,用户可以选择在不安装该文件) 的情况下成功完成安装。

对于安装中的每个可执行文件,应为安装中的每个可执行文件设置 msidbFileAttributesChecksum 位,该文件具有可移植可 (执行文件中存储的有效 校验和) 文件头。 在重新安装期间,只会验证具有此位集的那些文件是否有有效的校验和。 有关详细信息,请参阅 REINSTALLMODE

此文件在媒体图像上的序列位置。 如果文件已压缩,则此顺序必须对应于 cabinet 文件的顺序。 此字段中的整数必须等于或大于1。

"序列" 列中的序列号用于指定文件的安装顺序,以及该文件所在的源媒体 (与 Media 表) 一起使用。 例如,假设某个文件的序列号为92。 若要确定此文件所在的源磁盘,请在 Media 表中查找最小上一个序列值大于92的条目。

尽管压缩文件被分配到 cabinet 内的内部序列号,但这些绝对值不需要与文件表中的序列号匹配。 不过,文件表中的文件序列与文件柜内文件的序列相同,这一点很重要。

对于未压缩的文件,序列号不需要是唯一的。 例如,如果所有文件都未压缩,且全部位于一个磁盘上,则可以为所有文件指定相同的序列号。

最大限制为32767个文件。 若要创建包含更多文件的 Windows Installer 包,请参阅 创作大包

备注

序列表中的 InstallFilesRemoveFiles操作处理此表中的信息。 有关使用 序列表 的信息,请参阅 使用序列表

该表最初是从文件列表生成的,但是如果使用 cabinet 压缩,则将从压缩引擎的输出中重新生成该表。 有关详细信息,请参阅 Cabinet 文件

若要在安装过程中移动用户计算机上的现有文件,请使用 MoveFiles 操作MoveFile 表。 若要将文件安装到多个位置,请使用 DuplicateFiles 操作DuplicateFile 表

下表汇总了 "版本" 列和 "语言" 列中的值的可能组合。 有关详细信息,请参阅 文件版本控制规则

版本 语言 说明
1.2.3.4 2052 版本和语言。
1.2.3.4 (Null) 版本,但不是语言。
1.2.3.4 0 版本和语言是不特定的。
Testdb (Null) 没有与其相关联的语言的伴随文件。
Testdb 2052 辅助文件和语言。
(Null) 2052 无版本,但具有与之关联的语言 (即,typelib、帮助) 。

有关详细信息,请参阅 MsiLockPermissionsEx 表LockPermissions 表

验证

ICE02
ICE03
ICE04
ICE06
ICE18
ICE30
ICE32
ICE35
ICE39
ICE42
ICE45
ICE50
ICE51
ICE54
ICE55
ICE57
ICE59
ICE60
ICE67
ICE69
ICE76
ICE91