文件表

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

文件表包含以下列。

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

 

文件

一个唯一标识文件的非本地化令牌。 此字段不区分大小写。 不要将标识符分配给仅按大小写不同的不同文件。

Component_

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

文件名

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

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

FileSize

文件大小(字节)。 这必须是非负数。

版本

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

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

语言

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

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

属性

包含表示文件属性的位标志的整数。

下表显示了位字段的定义。

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

 

如果设置了 Attributes 列中的 msidbFileAttributesVital 位,并且如果选择文件所属的组件进行安装,则安装程序必须能够安装此文件才能成功完成安装。 例如,如果安装程序由于某种原因无法安装该文件 (,例如,如果源文件不能位于源映像中) ,则将显示一个错误对话框,其中包含选项“重试”或“取消”。 对于没有 msidbFileAttributesVital 集的文件,如果安装错误为“Abort”、“Retry”和“Ignore” (,则用户可以选择在不安装该文件) 的情况下成功完成安装。

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

序列

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

序列列中的序列号用于指定文件安装顺序以及文件所在的源媒体 (与 媒体表) 。 例如,假设文件具有 92 个序列号。 若要确定此文件所在的源磁盘,请查看媒体表中的条目,其最后序列值小于 92。

尽管压缩文件在内阁中分配了内部序列号,但这些绝对数字不需要与 File 表中的序列号匹配。 但是,重要的是,文件表中的文件序列与内阁中的文件序列相同。

对于未压缩的文件,序列号不需要是唯一的。 例如,如果所有文件均未压缩,并且所有文件都驻留在一个磁盘上,则可以为所有文件提供相同的序列号。

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

注解

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

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

若要在安装过程中移动用户计算机上的现有文件,请使用 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、helpfile) 。

 

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

验证

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