InstallFiles 操作

InstallFiles 操作将文件表中指定的文件从源目录复制到目标目录。

序列限制

InstallFiles 操作必须在 InstallValidate 操作之后以及任何依赖文件的操作之前执行。

ActionData 消息

字段 操作数据的说明
[1] 已安装文件的标识符。
[6] 已安装文件的大小(以字节为单位)。
[9] 包含已安装文件的目录的标识符。

 

注解

InstallFiles 操作对 文件表中指定的文件进行操作。 每个文件都基于 组件表中文件的关联组件的安装状态进行安装。 只有那些组件解析为 msiInstallStatelocal 状态的文件才有资格进行复制。

InstallFiles 操作实现文件表的以下列。

  • FileName 列指定目标文件名。
  • “版本”列指定文件版本。
  • “属性”列指定文件和安装属性标志位。
  • “文件”列指定唯一的文件标记。
  • FileSize 列指定未压缩的文件大小(以字节为单位)。
  • 语言列指定文件语言标识符。
  • Sequence 列指定媒体上的序列号。

InstallFiles 操作实现组件表的以下列。

  • Directory_列指定对 Directory 表 项的引用。
  • 组件列指定组件项的唯一名称。

仅当下列其中一个为 true 时,才会复制指定的文件:

  • 该文件当前未在本地计算机上安装。
  • 该文件位于本地计算机上,但版本号低于 文件表中的文件。
  • 该文件位于本地计算机上,但没有关联的版本号。

要复制的每个文件的源目录由 sourceMode 确定,后者又取决于 Media 表的“内阁”列中的值。 有关源模式的完整讨论,请参阅 媒体表

如果要复制的文件的源目录驻留在可移动媒体(如软盘或 CD-ROM)上,InstallFiles 操作会在尝试复制文件之前验证是否插入了正确的源媒体。 InstallFiles 搜索具有相同可移动类型的媒体,其 标签与 Media 表的 VolumeLabel 列中给定的值匹配。 如果找到匹配的装载卷,则文件复制过程会继续。 如果未找到匹配项,对话框会请求用户插入正确的媒体。 在这种情况下,该对话框使用在 Media 表的 DiskPrompt 列中找到的媒体名称作为提示的一部分。

必须执行警告,因为 InstallFiles 操作可以删除原始文件,而不是替换它。 当 InstallFiles 操作在替换旧文件时遇到错误,并且用户选择忽略错误时,会发生此错误。 安装程序的默认行为是在确保正确复制新文件之前删除旧文件。

有关安装程序使用的文件版本控制规则,请参阅 文件版本控制规则