Compartir a través de


Creación de acciones personalizadas

En la tabla siguiente se enumeran las cinco acciones personalizadas que se usan para cumplir las especificaciones de ejemplo: ProcessAccounts, UninstallAccounts, CreateAccounts, RemoveAccounts y RollbackAccounts. Todas estas acciones personalizadas se encuentran en bibliotecas de vínculos dinámicos almacenadas en la tabla Binary. El código fuente de C++ para las bibliotecas de vínculos dinámicos que contienen las acciones personalizadas de ejemplo se proporcionan en el SDK de Windows Installer. ProcessAccounts y UninstallAccounts se encuentran en el archivo Process.cpp. CreateAccount está en el archivo Create.cpp. RemoveAccount y RollbackAccount están en el archivo Remove.cpp. Estos archivos de origen se pueden usar para crear los archivos Process.dll, Create.dll y Remove.dll.

Como la creación o eliminación de una cuenta de usuario requiere privilegios elevados, las acciones personalizadas de ejecución diferida que se ejecutan en el contexto del sistema se deben utilizar para crear, quitar o revertir cuentas de usuario. Las acciones personalizadas de ejecución inmediata, ProcessAccounts y UninstallAccounts, generan las acciones personalizadas diferidas que crean, quitan o revierten cuentas de usuario: CreateAccount, RemoveAccount y RollbackAccount.

Como las acciones personalizadas diferidas no pueden leer información en las tablas de base de datos, ProcessAccounts y UninstallUserAccouts deben establecer una propiedad CustomActionData para pasar la información de la tabla UserAccounts a las acciones personalizadas diferidas, tal y como se describe en Obtención de información de contexto para acciones personalizadas de ejecución diferida. Cuando el instalador ejecuta el script de ejecución, las acciones personalizadas diferidas administran las cuentas de usuario según la información de la propiedad CustomActionData.

Como todas las acciones personalizadas están en bibliotecas de vínculos dinámicos almacenadas en la tabla Binary, todas incluyen las constantes msidbCustomActionTypeDll y msidbCustomActionTypeBinaryData en su tipo numérico base. ProcessAccounts y UninstallAccounts son ejemplos de Tipo de acción personalizada 1 pura. Para más información sobre otros tipos de acciones personalizadas, consulte Lista de resumen de todos los tipos de acciones personalizadas.

CreateAccount y RemoveAccount son acciones personalizadas de ejecución diferida que no permiten a los servicios suplantar a usuarios concretos. Estas acciones personalizadas incluyen las constantes msidbCustomActionTypeInScript y msidbCustomActionTypeNoImpersonate para especificar estas opciones de ejecución en script de acción personalizada.

RollbackAccount es una acción personalizada de reversión que solo quita las cuentas de usuario durante una instalación de reversión. RollbackAccount incluye las constantes msidbCustomActionTypeInScript y msidbCustomActionTypeRollback para especificar estas opciones de ejecución en script de acción personalizada.

Estas acciones personalizadas pueden administrar datos confidenciales, como contraseñas de usuario, que no se deben escribir en el archivo de registro. Por lo tanto, las acciones personalizadas diferidas deben incluir msidbCustomActionTypeHideTarget en el tipo de acción personalizada. Los nombres de las acciones personalizadas diferidas también se deben agregar a la lista de propiedades MsiHiddenProperties de la tabla Property debido a la forma en que las acciones personalizadas inmediatas pasan datos a acciones personalizadas diferidas mediante la propiedad CustomActionData.

Acción personalizada Punto de entrada del archivo DLL Tipo de acción personalizada
ProcessAccounts ProcessUserAccounts en Process.dll. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData = 1
UninstallAccounts UninstallUserAccounts en Process.dll. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData = 1
CreateAccount CreateUserAccount en Create.dll. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate + msidbCustomActionTypeHideTarget = 11265.
RemoveAccount RemoveUserAccount en Remove.dll. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate + msidbCustomActionTypeHideTarget = 11265.
RollbackAccount RemoveUserAccount en Remove.dll. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeRollback + msidbCustomActionTypeHideTarget = 9473.

 

Continúe en Creación de la tabla CustomAction.