Acceso a la sesión del instalador actual desde dentro de una acción personalizada

Las acciones personalizadas no diferidas que llaman a scripts o a bibliotecas de vínculos dinámicos pueden acceder a una instalación en ejecución para consultar o modificar los atributos de la sesión de instalación actual. Solo puede existir un objeto Session para cada proceso y los scripts de acciones personalizadas no deben intentar crear otra sesión.

Las acciones personalizadas solo pueden agregar, modificar o quitar filas, columnas o tablas temporales de una base de datos. Las acciones personalizadas no pueden modificar los datos persistentes de una base de datos, por ejemplo, los datos que forman parte de la base de datos almacenada en el disco.

Bibliotecas de vínculos dinámicos

Para acceder a una instalación en ejecución, se usan acciones personalizadas que llaman a bibliotecas de vínculos dinámicos (DLL) un identificador del tipo MSIHANDLE para la sesión actual como el único argumento para el punto de entrada del archivo DLL denominado en la columna Target de la tabla CustomAction. Como el instalador proporciona este identificador, la acción personalizada no debe cerrarlo, por ejemplo, para recibir el identificador hInstall del instalador, la función de acción personalizada se declara de la siguiente manera.

UINT __stdcall CustomAction(MSIHANDLE hInstall)

Para obtener acceso de solo lectura a la base de datos actual, obtenga el identificador de base de datos llamando a MsiGetActiveDatabase. Para más información, consulte Obtención de un identificador de base de datos.

Scripts

Las acciones personalizadas escritas en VBScript o JScript pueden acceder a la sesión de instalación actual mediante el objeto Session. El instalador crea un objeto Session denominado "Session" que hace referencia a la instalación actual. En el caso del acceso de solo lectura a la base de datos actual, utilice la propiedad Database del objeto Session.

Dado que un script se ejecuta desde el contexto del objeto Session, no siempre es necesario calificar completamente las propiedades y los métodos. En el siguiente ejemplo, cuando se usa VBScript, la referencia Me puede reemplazar el objeto Session, por ejemplo, las tres líneas siguientes son equivalentes.

Session.SetInstallLevel 1
Me.SetInstallLevel 1
SetInstallLevel 1

Archivos ejecutables

No se puede acceder a la sesión del instalador actual desde acciones personalizadas que llaman a archivos ejecutables iniciados con una línea de comandos, por ejemplo, Custom Action Type 2 y Custom Action Type 18.

Acciones personalizadas de ejecución diferida

No se puede acceder a la sesión del instalador actual ni a todos los datos de propiedad desde una acción personalizada de ejecución diferida. Para más información, consulte Obtención de información de contexto para acciones personalizadas de ejecución diferida.

Acceso a una base de datos o sesión desde dentro de una acción personalizada