InstallFiles 操作
InstallFiles 操作将 File 表中指定的文件从源目录复制到目标目录。
序列限制
InstallFiles 操作必须在 InstallValidate 操作之后以及任何文件相关的操作之前执行。
ActionData 消息
字段 | 操作数据说明 |
---|---|
[1] | 已安装文件的标识符。 |
[6] | 已安装文件的大小(以字节为单位)。 |
[9] | 包含已安装文件的目录的标识符。 |
备注
InstallFiles 操作对 File 表中指定的文件进行操作。 每个文件都根据 Component 表中文件的关联组件的安装状态进行安装。 只有其组件解析为 msiInstallStatelocal 状态的文件才有资格进行复制。
InstallFiles 操作实现 File 表的以下列。
- FileName 列指定目标文件名。
- Version 列指定文件版本。
- Attributes 列指定文件和安装属性标志位。
- File 列指定唯一的文件标记。
- FileSize 列指定未压缩的文件大小(以字节为单位)。
- Language 列指定文件语言标识符。
- Sequence 列指定媒体上的序列号。
InstallFiles 操作实现 Component 表的以下列。
- Directory_ 列指定对 Directory 表项的引用。
- Component 列指定组件项的唯一名称。
仅当满足以下条件之一时,才会复制指定的文件:
- 文件当前未安装在本地计算机上。
- 该文件位于本地计算机上,但版本号低于 File 表中的文件。
- 文件位于本地计算机上,但没有关联的版本号。
要复制的每个文件的源目录由 sourceMode 确定,而 sourceMode 又取决于 Media 表的 Cabinet 列中的值。 有关源模式的完整讨论,请参阅 Media 表。
如果要复制的文件的源目录驻留在软盘或 CD-ROM 等可移动媒体上,则 InstallFiles 操作会在尝试复制文件之前验证是否已插入正确的源媒体。 InstallFiles 搜索具有与 Media 表的 VolumeLabel 列中给定的值匹配的卷标签的同一可移动类型的媒体。 如果找到匹配的已装载卷,则文件复制过程继续进行。 如果未找到匹配项,则会显示一个对话框,要求用户插入正确的媒体。 在这种情况下,对话框使用在 Media 表的 DiskPrompt 列中找到的媒体名称作为提示的一部分。
必须小心,因为 InstallFiles 操作可以删除原始文件,而不是替换它。 当 InstallFiles 操作在替换旧文件时遇到错误,并且用户选择忽略该错误时,会发生此情况。 安装程序的默认行为是先删除旧文件,然后再确保正确复制新文件。
有关安装程序使用的文件版本控制规则,请参阅文件版本控制规则。