使用可传递组件

可传递组件的一个典型用途为:在系统升级期间,准备要重新安装的产品。 安装包的作者会将在系统升级期间需交换出去的那些组件指定为具有可传递属性。 当用户后续升级系统时,必须重新安装该产品。 重新安装时,安装程序会删除以前的组件并安装更新的组件,而无须安装整个产品。

若要在安装包中包含两个可传递组件

  1. 在安装包中同时包含两个可传递组件。

  2. 将两个可传递组件创作到 Component 表中,就像常规组件一样。 每个可传递组件均须在 ComponentId 列中指定其自己的唯一 GUID。

  3. 在每个可传递组件的 Component 表的 Attributes 列中包含 msidbComponentAttributesTransitive 位。 如果已设置此位,安装程序则会在重新安装时重新计算 Condition 列中语句的值。

    如果该值先前为 False 且已更改为 True,安装程序则会安装该组件。

    如果该值先前为 True 且已更改为 False,则即使此组件具有作为客户端的其他产品,安装程序仍会删除该组件。

    注意

    除非设置了可传递位,否则即使在产品的后续维护安装时将该条件语句的值计算为 False,该组件仍会保持启用状态。 相关条件必须仅基于计算机状态。 不要搭配使用基于命令行中所设用户状态或属性的条件,因为此操作可能会导致安装程序要求在其他用户每次使用时均需重新安装该产品。

     

  4. 将互补条件表达式输入到 Control 表的 Condition 字段中,以便当针对第一个可传递组件的条件变为 False 时,针对第二个可传递组件的条件可变为 True。 如此一来,在重新安装应用程序时会删除第一个组件并安装第二个组件。

必须重新安装产品才能切换可传递组件。 因此,包作者需为用户提供用于重新安装产品和设置 REINSTALLMODE 属性的模式的方法。 触发重新安装大致有三种方法:

该位应仅与基于计算机状态的条件搭配使用。 不要搭配使用基于命令行中所设用户状态或属性的条件,因为此操作可能会导致安装程序要求在其他用户每次使用时均需重新安装该产品。

注意

除非为组件设置了 Attributes 列中的可传递位,否则即使在产品的后续维护安装时将 Condition 列中的条件语句计算为 False,该组件仍会在安装后保持启用状态。

大多数情况下,如果应用程序包含可传递组件,Windows Installer 会要求使用应用程序的源来修复或升级该应用程序。 在这些情况下,原始设备制造商寄送的系统还原 CD-ROM 无效,而需提供应用程序的实际安装源。