File 表
File 表包含源文件及其各种属性的完整列表,按唯一的非本地化标识符排序。 可以将文件以独立文件的形式存储在源媒体上,或者将其压缩成一个 cab 文件。 有关详细信息,请参阅使用 Cab 文件和压缩源。
File 表包含以下列。
列 | 类型 | 密钥 | Nullable |
---|---|---|---|
文件 | Identifier | Y | N |
Component_ | Identifier | N | N |
FileName | Filename | N | N |
FileSize | DoubleInteger | N | N |
版本 | Version | N | Y |
语言 | 语言 | N | Y |
特性 | 整数 | N | Y |
序列 | 整数 | N | N |
列
-
File
-
用于唯一标识文件的非本地化标记。 此字段不区分大小写。 不要将标识符分配给只有大小写有差别的不同文件。
-
Component_
-
Component 表第一列中的外部键。 此字段标识控制文件的组件。
-
FileName
-
用于安装的文件名。 该名称可本地化。
由于某些 Web 服务器可能区分大小写,因此 FileName 应与源文件大小写完全匹配,以确保支持 Internet 下载。
-
FileSize
-
文件大小(字节)。 必须是非负数。
-
版本
-
此字段是版本控制文件的版本字符串。 对于非版本受控文件,此字段为空。 在此字段中输入的文件版本必须与安装包中包含的文件版本相同。
还可以将 Version 字段设置为包含 File 表中另一条记录的主键。 然后,被引用的文件将确定此文件的版本控制逻辑。 有关详细信息,请参阅配套文件。 请注意,如果此文件是其组件的关键路径,则不能将其指定为配套文件。
-
Language
-
逗号分隔的十进制语言 ID 列表。
不应使用语言 ID 创建字体文件,因为字体没有嵌入式语言 ID 资源。 因此,对于字体文件,此列应保留为 null。
-
Attributes
-
包含表示文件属性的位标志的整数。
下表显示了位字段的定义。
常数 十六进制 十进制 说明 msidbFileAttributesReadOnly 0x000001 1 只读 msidbFileAttributesHidden 0x000002 2 Hidden msidbFileAttributesSystem 0x000004 4 系统 msidbFileAttributesVital 0x000200 512 文件对其所属组件的准确运行至关重要。 如果包含 msidbFileAttributesVital 属性的文件安装失败,安装将会停止并回滚。 在这种情况下,安装程序会显示一个没有“忽略”按钮的对话框。 如果未设置此属性,并且文件安装失败,则安装程序会显示一个具有“忽略”按钮的对话框。 在这种情况下,用户可以选择忽略文件安装失败消息并继续。 msidbFileAttributesChecksum 0x000400 1024 文件包含有效的校验和。 需要使用校验和来修复已损坏的文件。 msidbFileAttributesPatchAdded 0x001000 4096 如果文件是由修补程序添加的,则此位只能由该修补程序添加。 msidbFileAttributesNoncompressed 0x002000 8192 文件的源类型未压缩。 如果已设置,则会忽略字数统计摘要属性。 如果 msidbFileAttributesNoncompressed 和 msidbFileAttributesCompressed 均未设置,则文件的压缩状态由字数统计摘要属性指定。 不要同时设置 msidbFileAttributesNoncompressed 和 msidbFileAttributesCompressed。 msidbFileAttributesCompressed 0x004000 16384 文件的源类型已压缩。 如果已设置,则会忽略字数统计摘要属性。 如果 msidbFileAttributesNoncompressed 和 msidbFileAttributesCompressed 均未设置,则文件的压缩状态由字数统计摘要属性指定。 不要同时设置 msidbFileAttributesNoncompressed 和 msidbFileAttributesCompressed。 如果在 Attributes 列中设置了 msidbFileAttributesVital 位,并且已选择安装文件所属的组件,则安装程序必须能够安装此文件才能成功完成安装。 如果安装程序由于某种原因无法安装该文件(例如,如果无法在源映像中找到源文件),则会出现一个包含“重试”或“取消”选项的错误对话框。 对于未设置 msidbFileAttributesVital 的文件,出现安装错误时的选项将是“中止”、“重试”和“忽略”(选择“忽略”选项无需安装该文件即可成功完成安装)。
对于安装中的每个可执行文件(该文件的有效校验和存储在可移植可执行文件 (PE) 头中),应在 Attributes 列中设置 msidbFileAttributesChecksum 位。 在重新安装期间,只会在那些设置了此位的文件中验证是否存在有效的校验和。 有关详细信息,请参阅 REINSTALLMODE。
-
Sequence
-
此文件在媒体映像中的顺序位置。 如果文件已压缩,则此顺序必须与 cab 文件中的文件顺序相对应。 此字段中的整数必须等于或大于 1。
Sequence 列中的序号用于指定文件安装顺序,以及文件所在源媒体的顺序(与 Media 表结合使用)。 例如,假设某个文件的序号为 92。 若要确定此文件所在的源磁盘,请在 Media 表中查找 Last Sequence 最小值大于 92 的条目。
尽管在 cab 文件中会为压缩文件分配内部序号,但这些绝对数字不需要与 File 表中的序号匹配。 但重要的是,File 表中的文件顺序必须与 cab 文件中的文件顺序相同。
对于未压缩的文件,序号不必是唯一的。 例如,如果所有文件都未压缩,并且都位于一个磁盘上,则可为所有文件指定相同的序号。
最大限制为 32767 个文件。 若要创建包含更多文件的 Windows Installer 包,请参阅创作大型包。
备注
顺序表中的 InstallFiles 和 RemoveFiles 操作处理此表中的信息。 有关使用顺序表的信息,请参阅使用顺序表。
表最初是从文件列表生成的,但如果使用了 cab 压缩,则表是从压缩引擎的输出重新生成的。 有关详细信息,请参阅 Cab 文件。
若要在安装期间移动用户计算机上的现有文件,请使用 MoveFiles 操作和 MoveFile 表。 若要将文件安装到多个位置,请使用 DuplicateFiles 操作和 DuplicateFile 表。
下表汇总了 Version 列和 Language 列中可能的值组合。 有关详细信息,请参阅文件版本控制规则。
版本 | 语言 | 说明 |
---|---|---|
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