文件表
文件表包含源文件的完整列表,其中包含其各种属性,按唯一的非本地化标识符排序。 可以将文件作为单个文件存储在源媒体上,也可以在 内阁文件中压缩。 有关详细信息,请参阅 使用内阁和压缩源。
文件表包含以下列。
列 | 类型 | 钥匙 | 空 |
---|---|---|---|
文件 | 标识符 | 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 文件的源类型未压缩。 如果已设置,请忽略 字数统计摘要 属性。 如果未 msidbFileAttributesNoncompressed 或 msidbFileAttributesCompressed,则文件压缩状态由 Word Count Summary 属性指定。 不要同时设置 msidbFileAttributesNoncompressed 和 msidbFileAttributesCompressed。 msidbFileAttributesCompressed 0x004000 16384 文件的源类型已压缩。 如果已设置,请忽略 字数统计摘要 属性。 如果未 msidbFileAttributesNoncompressed 或 msidbFileAttributesCompressed,则文件压缩状态由 Word Count Summary 属性指定。 不要同时设置 msidbFileAttributesNoncompressed 和 msidbFileAttributesCompressed。 如果设置了 attributes 列中的 msidbFileAttributesVital 位,并且为安装选择了文件所属的组件,则安装程序必须能够安装此文件才能成功完成安装。 如果安装程序由于某种原因而无法安装该文件(例如,如果源文件不能位于源映像中),则将显示一个错误对话框,其中包含选项“重试”或“取消”。 对于没有 msidbFileAttributesVital 设置的文件,安装错误时的选项将为“Abort”、“Retry”和“Ignore”(也就是说,用户可以选择在不安装该文件的情况下成功完成安装)。
应为安装中的每个可执行文件设置 msidbFileAttributesChecksum 位,该可执行文件的安装中具有有效 校验和 存储在可移植可执行文件(PE)文件头中。 只有在重新安装期间,才会验证具有此位集的文件是否具有有效的校验和。 有关详细信息,请参阅 REINSTALLMODE。
-
序列
-
此文件在媒体图像上的顺序位置。 如果压缩了文件,则此顺序必须与内阁中的文件的顺序相对应。 此字段中的整数必须等于或大于 1。
序列列中的序列号用于指定文件的安装顺序和文件所在的源媒体(与 媒体表结合使用)。 例如,假设文件具有 92 的序列号。 若要确定此文件所在的源磁盘,请查看 Media 表中的条目,其最后序列值小于 92。
尽管压缩文件在内阁中分配内部序列号,但这些绝对数字不需要与 File 表中的序列号匹配。 但是,重要的是,文件表中的文件序列与内阁中的文件序列相同。
对于未压缩的文件,序列号不需要是唯一的。 例如,如果所有文件均未压缩,并且全部驻留在一个磁盘上,则可以为所有文件提供相同的序列号。
最大限制为 32767 个文件。 若要创建包含更多文件的 Windows Installer 包,请参阅 创作大型包。
言论
InstallFiles 和 RemoveFiles序列表中的作 处理此表中的信息。 有关 序列表的信息,请参阅 使用序列表。
该表最初是从文件列表中生成的,但如果使用了内阁压缩,则会从压缩引擎的输出中重新生成该表。 有关详细信息,请参阅 内阁文件。
若要在安装过程中移动用户计算机上的现有文件,请使用 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