使用可传递组件

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

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

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

  2. 将两个可传递组件创作到 组件表中 ,与常规组件相同。 每个可传递组件都必须在 ComponentId 列中指定自己的唯一 GUID。

  3. msidbComponentAttributesTransitive 位包含在每个可传递组件的组件表的属性列中。 如果设置了此位,安装程序会在重新安装时重新评估 Condition 列中语句的值。

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

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

    注意

    除非设置了可传递位,否则即使条件语句在产品的后续维护安装上评估为 False,组件仍保持启用状态。 条件必须仅基于计算机状态。 不要根据命令行上设置的用户状态或属性使用条件,因为这可能会导致安装程序要求在其他用户每次使用时重新安装产品。

     

  4. 将互补条件表达式输入控件表的条件字段,以便当第一个可传递组件上的条件更改为 False 时,第二个可传递组件上的条件更改为 True。 这会导致在重新安装应用程序时删除第一个组件并安装第二个组件。

需要重新安装产品才能切换可传递组件。 因此,包作者需要为用户提供重新安装产品的方法,以及设置 REINSTALLMODE 属性的模式。 基本上有三种方法可以触发重新安装:

该位应仅用于基于计算机状态的条件。 不要根据命令行上设置的用户状态或属性使用条件,因为这可能会导致安装程序要求在其他用户每次使用时重新安装产品。

注意

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

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