Compartir a través de


Secuenciación de acciones personalizadas

Las acciones personalizadas se programan en tablas de secuencia de la misma manera que las acciones estándar.

Para programar una acción personalizada en una tabla de secuencia

  1. Escriba el nombre de la acción personalizada (que es la clave principal de la tabla CustomAction) en la columna Action de la tabla Sequence.
  2. Escriba la secuencia de la acción personalizada en relación con las demás acciones de la tabla en la columna Sequence de la tabla Sequence. Para obtener más información sobre las tablas de secuencia, vea Uso de una tabla Sequence.
  3. Para omitir condicionalmente la acción, introduzca una expresión condicional en la columna Condition de la tabla Sequence. El instalador omite esta acción si la expresión se evalúa como FALSE.

Como en el caso de las acciones estándar, las acciones personalizadas programadas en InstallUISequence o AdminUISequence solo se ejecutan si la interfaz de usuario interna está establecida en el nivel completo. El nivel de interfaz de usuario se establece mediante la función MsiSetInternalUI.

Las acciones estándar y personalizadas programadas en las tablas InstallExecuteSequence, AdminExecuteSequence o AdvtExecuteSequence no realizan cambios en el sistema. En su lugar, el instalador pone en cola los registros de ejecución en un script para la ejecución posterior durante el servicio de instalación. Si no hay ningún servicio de instalación, las acciones programadas en estas tablas se ejecutan en el mismo contexto que la secuencia de la interfaz de usuario.

Si el servidor del instalador no está registrado, las acciones personalizadas se ejecutan en el lado cliente. Si el servidor está registrado y usa el modo de interfaz de usuario completa, las acciones personalizadas se ejecutan en el lado servidor.

Si usa la interfaz de usuario completa con el servidor, las acciones iniciales anteriores a la acción InstallValidate se ejecutan en el cliente para permitir la interacción completa. A continuación, la ejecución se cambia al servidor que repite esas acciones y ejecuta las acciones de ejecución del script. Esto va seguido de un retorno al cliente para las acciones finales.

Tenga en cuenta que si se quita un producto estableciendo su característica superior en ausente, es posible que la propiedad REMOVE no sea igual a ALL hasta después de la acción InstallValidate. Esto significa que cualquier acción personalizada que dependa de REMOVE=ALL se debe secuenciar después de la acción InstallValidate. Una acción personalizada puede comprobar REMOVE para determinar si se ha establecido un producto para que se desinstale por completo.

Las acciones personalizadas que hacen referencia a un archivo instalado como origen, como Tipo de acción personalizada 17 (DLL), Tipo de acción personalizada 18 (EXE), Tipo de acción personalizada 21 (JScript) y Tipo de acción personalizada 22 (VBScript), deben cumplir las siguientes restricciones de secuenciación.

  • La acción personalizada se debe secuenciar después de la acción CostFinalize para que se pueda resolver la ruta de acceso al archivo al que se hace referencia.
  • Si el archivo de origen aún no está instalado en el equipo, las acciones personalizadas diferidas (en script) deben secuenciarse después de InstallFiles.
  • Si el archivo de origen aún no está instalado en el equipo, las acciones personalizadas no diferidas deben secuenciarse después de la acción InstallInitialize.

Las siguientes restricciones de secuenciación se aplican a acciones personalizadas que cambian o actualizan un paquete de Windows Installer.

  • Si la acción personalizada cambia el paquete, por ejemplo, agregando filas a una tabla, la acción debe secuenciarse antes de la acción InstallInitialize.
  • Si la acción personalizada realiza cambios que afectarían al coste, se debe secuenciar antes de la acción CostInitialize.
  • Si la acción personalizada cambia el estado de instalación de características o componentes, se debe secuenciar antes de la acción InstallValidate.