文件版本控制规则

任何安装程序的核心都是文件的实际安装。 决定是否安装文件是一个复杂的过程。 概括来讲,该决定取决于文件所属的组件是否标记为要安装。 决定要复制文件后,如果目标文件夹中存在另一个同名文件,则该过程会很复杂。 在这种情况下,需要一组包含以下属性的规则来帮助做出决定:

  • 版本
  • Date
  • 语言

仅当尝试将文件安装到已包含同名文件的位置时,安装程序才使用这些规则。 在这种情况下,Windows Installer 使用以下规则(所有其他规则均相同)来决定是否安装。

以最高版本为准 - 在所有其他条件相同的情况下,以版本最高的文件为准,即使计算机上的文件具有最高版本,也是如此。

以受版本控制的文件为准 - 安装受版本控制的文件而非不受版本控制的文件。

首选产品语言 - 如果正在安装的文件与计算机上的文件的语言不同,则首选语言与所安装产品匹配的文件。 非特定语言文件被视为另一种语言,因此同样首选正在安装的产品。

多种语言不匹配 - 在分解出所安装的文件与计算机上的文件之间的任何通用语言后,根据所安装产品所需的内容,首选剩下的任何语言。

保留超集语言 - 保留支持多种语言的文件,无论它是已在计算机上还是正在安装。

不受版本控制的文件是用户数据 - 如果修改日期晚于计算机上文件的创建日期,请不要安装该文件,因为用户自定义项将被删除。 如果修改日期和创建日期相同,则安装文件。 如果创建日期晚于修改日期,则认为文件未被修改,应安装该文件。

配套文件的安装不取决于它自己的文件版本控制信息,而取决于其配套父级的版本控制。 对于配套文件,仅当父文件具有更高版本时,才会跳过安装。 请注意,作为其组件的键路径的文件不能是配套文件,因为这会导致键路径文件的版本控制逻辑由配套父文件决定。

使用配套文件的不受版本控制的文件 - 如果不受版本控制的文件与使用配套机制的受版本控制的文件相关联,则应遵守受版本控制的文件的规则。 唯一的例外情况是计算机上受版本控制的文件和要安装的受版本控制的文件具有相同的版本和语言,但计算机上缺少配套文件。 在这种情况下,即使使用计算机上受版本控制的文件,也会使用正在安装的配套文件。 此外,如果 REINSTALLMODE 属性包含覆盖较旧版本选项(“o”或“e”)且配套文件与计算机上现有文件的版本相同,则安装使用配套文件的不受版本控制的文件。

规则适用于全局 - 用于确定何时安装文件的规则位于安装程序中的一个位置,并且适用于全局,这意味着它们同样适用于所有文件。

有关用于文件版本的格式示例,请参阅 Version 数据类型。 有关更具体的信息,请参阅替换现有文件默认文件版本控制