Obtención de información de contexto para acciones personalizadas de ejecución diferida

Dado que el script de instalación se puede ejecutar fuera de la sesión de instalación en la que se escribió, es posible que la sesión ya no exista durante la ejecución del script. En este caso, el identificador de sesión original y las propiedades establecidas durante la secuencia de instalación no están disponibles para una acción personalizada de ejecución diferida. Las funciones que requieran un identificador de sesión se restringirán a algunos métodos que pueden recuperar información de contexto, o bien habrá que escribir en el script de instalación las propiedades necesarias durante la ejecución del script. Por ejemplo, las acciones personalizadas diferidas que llaman a bibliotecas de vínculos dinámicos (DLL) pasan un identificador que solo se puede usar para obtener una cantidad de información muy limitada. Es posible acceder desde una acción personalizada diferida a las funciones que no requieren un identificador de sesión.

Las acciones personalizadas de ejecución diferida están restringidas a llamar solo a las siguientes funciones que requieren un identificador.

Función Descripción
MsiGetProperty Admite un conjunto limitado de propiedades cuando se usa con acciones personalizadas de ejecución diferida: la propiedad CustomActionData, la propiedad ProductCode y la propiedad UserSID. Las acciones personalizadas de confirmación no pueden usar la función MsiGetProperty para obtener la propiedad ProductCode. Las acciones personalizadas de confirmación pueden usar la propiedad CustomActionData para obtener el código del producto.
MsiFormatRecord Admite un conjunto limitado de propiedades cuando se usa con acciones personalizadas de ejecución diferida: las propiedades CustomActionData y ProductCode.
MsiGetMode Cuando se llama a MsiGetMode desde acciones personalizadas de ejecución diferida, acciones personalizadas de confirmación o acciones personalizadas de reversión, devuelve True o False si se le solicita que compruebe los parámetros de modo MSIRUNMODE_SCHEDULED, MSIRUNMODE_COMMIT o MSIRUNMODE_ROLLBACK. Las solicitudes para comprobar cualquier otro parámetro de modo de ejecución desde una acción personalizada diferida, de confirmación o de reversión devuelven False.
MsiGetLanguage Identificador de idioma numérico del producto actual. Las acciones personalizadas de confirmación no pueden usar la función MsiGetLanguage. Las acciones personalizadas de confirmación pueden usar la propiedad CustomActionData para obtener el identificador de idioma numérico.
MsiProcessMessage Procesa los mensajes de error o progreso de la acción personalizada.

 

Una acción personalizada escrita en JScript o VBScript requiere el objeto Session de instalación. Tiene el tipo de objeto Session y el instalador lo adjunta al script con el nombre "Session". Dado que es posible que el objeto Session no exista durante una reversión de la instalación, las acciones personalizadas diferidas escritas en el script deben usar uno de los métodos o propiedades siguientes del objeto Session para recuperar su contexto.

Nombre Descripción
Propiedad Mode Devuelve True solo para MSIRUNMODE_SCHEDULED.
Propiedad Property (objeto Session) Devuelve la propiedad CustomActionData, la propiedad ProductCode o la propiedad UserSID.
Propiedad Language (objeto Session) Devuelve el identificador de idioma numérico de la sesión de instalación.
Método Message Se llama para controlar los errores y el progreso.
Propiedad Installer Devuelve el objeto primario, que se usa para funciones que no son de sesión, como el acceso al registro y la administración de la configuración del instalador.

 

Los valores de propiedad que se establecen en el momento en que se procesa la secuencia de instalación en el script podrían no estar disponibles en el momento en que se ejecuta el script. Solo el siguiente conjunto limitado de propiedades es accesible en todo momento para las acciones personalizadas durante la ejecución del script.

Nombre de propiedad Descripción
CustomActionData Valor en el momento en que la acción personalizada se procesa en la tabla de secuencia. La propiedad CustomActionData solo está disponible para acciones personalizadas de ejecución diferida. Las acciones personalizadas inmediatas no tienen acceso a esta propiedad.
ProductCode Código único para el producto (cadena GUID).
UserSID Lo establece el instalador en el identificador de seguridad (SID) del usuario.

 

Si la acción personalizada de ejecución diferida requiere otros datos de propiedad, sus valores deben almacenarse en el script de instalación. Esto se puede hacer mediante una segunda acción personalizada.

Para escribir el valor de una propiedad en el script de instalación para su uso durante una acción personalizada de ejecución diferida

  1. Inserte una pequeña acción personalizada en la secuencia de instalación que establezca la propiedad que interesa en una propiedad que tenga el mismo nombre que la acción personalizada de ejecución diferida. Por ejemplo, si la clave principal de la acción personalizada de ejecución diferida es "MyAction", establezca una propiedad denominada "MyAction" en la propiedad X que necesita recuperar. Debe establecer la propiedad "MyAction" en la secuencia de instalación antes de la acción personalizada "MyAction". Aunque cualquier tipo de acción personalizada puede establecer los datos de contexto, el método más sencillo es usar una acción personalizada de asignación de propiedad (por ejemplo, el tipo de acción personalizada 51).
  2. En el momento en que se procesa la secuencia de instalación, el instalador escribirá el valor de la propiedad X en el script de ejecución como valor de la propiedad CustomActionData.

Acerca de las propiedades

Utilizar propiedades

Referencia de propiedades