文件表

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

文件表包含以下列。

类型 钥匙
文件 标识符 Y N
元件_ 标识符 N N
文件名 文件名 N N
FileSize DoubleInteger N N
版本 版本 N Y
语言 语言 N Y
属性 整数 N Y
序列 整数 N N

 

文件

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

Component_

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

FileName

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

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

FileSize

文件的大小(以字节为单位)。 这必须是非负数。

版本

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

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

语言

用逗号分隔的小数语言 ID 的列表。

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

属性

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

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

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

 

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

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

序列

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

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

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

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

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

言论

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

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

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

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

版本 语言 描述
1.2.3.4 1033 版本和语言。
1.2.3.4 (Null) 版本,但没有语言。
1.2.3.4 0 版本和语言是中立的。
Testdb (Null) 没有与之关联的语言的配套文件。
Testdb 1033 配套文件和语言。
(Null) 1033 没有版本,但有一种语言与之关联(即 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