Como criar as ações personalizadas
A tabela abaixo lista as cinco ações personalizadas usadas para atender às especificações de exemplo: ProcessAccounts, UninstallAccounts, CreateAccounts, RemoveAccounts e RollbackAccounts. Todas essas ações personalizadas estão em bibliotecas de vínculo dinâmico armazenadas na tabela Binary. O código-fonte C++ para as bibliotecas de vínculo dinâmico que contêm os exemplos de ações personalizadas são fornecidos no SDK do Windows Installer. ProcessAccounts e UninstallAccounts estão no arquivo Process.cpp. CreateAccount está no arquivo Create.cpp. RemoveAccount e RollbackAccount estão no arquivo Remove.cpp. Esses arquivos de origem podem ser usados para criar os arquivos Process.dll, Create.dll e Remove.dll.
Como a criação ou a remoção de uma conta de usuário exige privilégios elevados, as ações personalizadas de execução adiada executadas no contexto do sistema precisam ser usadas para criar, remover ou reverter as contas de usuário. As ações personalizadas de execução imediata, ProcessAccounts e UninstallAccounts, geram as ações personalizadas adiadas que criam, removem ou revertem contas de usuário: CreateAccount, RemoveAccount e RollbackAccount.
Como as ações personalizadas adiadas não podem ler as informações de tabelas de banco de dados, ProcessAccounts e UninstallUserAccouts precisam definir uma propriedade CustomActionData para transmitir as informações da tabela UserAccounts às ações personalizadas adiadas, conforme descrito em Como obter informações de contexto para ações personalizadas de execução adiada. Quando o instalador executa o script de execução, as ações personalizadas adiadas tratam as contas de usuário de acordo com as informações da propriedade CustomActionData.
Como todas as ações personalizadas estão em bibliotecas de vínculo dinâmico armazenadas na tabela Binary, todas elas incluem as constantes msidbCustomActionTypeDll e msidbCustomActionTypeBinaryData no tipo numérico base. ProcessAccounts e UninstallAccounts são exemplos de Tipos de Ação Personalizada 1 puros. Para obter informações sobre outros tipos de ação personalizada, confira a Lista de resumo de todos os tipos de ação personalizada.
CreateAccount e RemoveAccount são ações personalizadas de execução adiada que não permitem que os serviços representem usuários específicos. Essas ações personalizadas incluem as constantes msidbCustomActionTypeInScript e msidbCustomActionTypeNoImpersonate para especificar essas opções de execução no script da ação personalizada.
RollbackAccount é uma ação personalizada de reversão que só remove as contas de usuário durante uma instalação de reversão. RollbackAccount inclui as constantes msidbCustomActionTypeInScript e msidbCustomActionTypeRollback para especificar essas opções de execução no script da ação personalizada.
Essas ações personalizadas podem tratar dados confidenciais, como senhas de usuário, que não devem ser gravadas no arquivo de log. Portanto, as ações personalizadas adiadas devem incluir msidbCustomActionTypeHideTarget no tipo de ação personalizada. Os nomes das ações personalizadas adiadas também precisam ser adicionados à lista de propriedades MsiHiddenProperties na tabela Property devido à maneira como as ações personalizadas imediatas transmitem dados para as ações personalizadas adiadas usando a propriedade CustomActionData.
Ação personalizada | Ponto de entrada de DLL | Tipo de ação personalizada |
---|---|---|
ProcessAccounts | ProcessUserAccounts no Process.dll. | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData = 1 |
UninstallAccounts | UninstallUserAccounts no Process.dll. | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData = 1 |
CreateAccount | CreateUserAccount no Create.dll. | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate + msidbCustomActionTypeHideTarget = 11265. |
RemoveAccount | RemoveUserAccount no Remove.dll. | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate + msidbCustomActionTypeHideTarget = 11265. |
RollbackAccount | RemoveUserAccount no Remove.dll. | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeRollback + msidbCustomActionTypeHideTarget = 9473. |
Prossiga para Como criar a tabela CustomAction.