Uso de componentes transitivos

Un uso típico de los componentes transitivos es preparar un producto para reinstalarlo durante una actualización del sistema. El autor del paquete de instalación especifica que los componentes que deben intercambiarse durante una actualización del sistema tienen el atributo transitivo. Cuando el usuario actualice posteriormente el sistema, deberá volver a instalar el producto. Tras esta reinstalación, el instalador quita los componentes anteriores e instala los componentes posteriores, sin tener que instalar todo el producto.

Para incluir dos componentes transitivos en el paquete de instalación

  1. Incluya ambos componentes transitivos en el paquete de instalación.

  2. Cree los dos componentes transitivos en la tabla Component tal como lo haría si fueran componentes normales. Todos los componentes transitivos deben tener su propio identificador único global especificado en la columna ComponentId.

  3. Incluya el bit msidbComponentAttributesTransitive en la columna Attributes de la tabla Component en todos los componentes transitivos. Si se establece este bit, el instalador vuelve a evaluar el valor de la instrucción en la columna Condición tras una reinstalación.

    Si anteriormente el valor era False y ha cambiado a True, el instalador instala el componente.

    Si anteriormente el valor era True y ha cambiado a False, el instalador elimina el componente, aunque este tenga otros productos como clientes.

    Nota:

    A menos que se establezca el bit transitivo, el componente permanece habilitado una vez instalado, aunque la instrucción condicional se evalúe como False en una instalación de mantenimiento posterior del producto. Las condiciones deben basarse únicamente en los estados del equipo. No se debe usar con condiciones basadas en los estados de usuario o en las propiedades establecidas en la línea de comandos, ya que esto puede hacer que el instalador requiera que se vuelva a instalar el producto cada vez que un usuario diferente lo use.

     

  4. Escriba expresiones condicionales complementarias en los campos Condición de la tabla Control, de modo que, cuando la condición del primer componente transitivo cambie a False, la condición del segundo componente transitivo cambia a True. Esto provoca que se elimine el primer componente y se instale el segundo componente tras la reinstalación de la aplicación.

Para cambiar los componentes transitivos es preciso volver a instalar el producto. Por consiguiente, los autores de paquetes deben proporcionar a los usuarios un método para volver a instalar el producto y establecer los modos de la propiedad REINSTALLMODE. Básicamente hay tres formas de desencadenar la reinstalación:

  • Ejecute y configure la reinstalación desde la interfaz de usuario mediante la creación de un paquete que use la interfaz de usuario completa.
  • Ejecute la reinstalación desde la línea de comandos mediante msiexec /f y seleccione los modos de la lista para la opción de línea de comandos/f.
  • Haga que la aplicación llame a MsiReInstallProduct o MsiReInstallFeature.

El bit solo se debe usar con condiciones basadas en estados del equipo. No se debe usar con condiciones basadas en los estados de usuario o en las propiedades establecidas en la línea de comandos, ya que esto puede hacer que el instalador requiera que se vuelva a instalar el producto cada vez que un usuario diferente lo use.

Nota:

A menos que el bit Transitivo de la columna Atributos se establezca para un componente, el componente permanecerá habilitado una vez instalado incluso si la instrucción condicional de la columna Condición se evalúa como False en una instalación de mantenimiento posterior del producto.

En la mayoría de los casos, si una aplicación incluye componentes transitivos, Windows Installer requiere que su origen repare o actualice la aplicación. En estos casos, el CD-ROM de restauración del sistema enviado por un fabricante de equipos originales no funciona y es necesario proporcionar una fuente de instalación real de la aplicación.