Поделиться через


Создание пользовательских действий

В таблице ниже перечислены пять настраиваемых действий, используемых в соответствии с примерами спецификаций: ProcessAccounts, UninstallAccounts, CreateAccounts, RemoveAccounts и RollbackAccounts. Все эти настраиваемые действия находятся в библиотеках динамической компоновки , хранящихся в двоичной таблице. Исходный код C++ для библиотек динамической компоновки, содержащих примеры пользовательских действий, предоставляется в пакете SDK установщика Windows. ProcessAccounts и UninstallAccounts находятся в файле Process.cpp. CreateAccount находится в файле Create.cpp. RemoveAccount и RollbackAccount находятся в файле Remove.cpp. Эти исходные файлы можно использовать для создания файлов Process.dll, Create.dll и Remove.dll.

Так как для создания или удаления учетной записи пользователя требуются повышенные привилегии, для создания, удаления или отката учетных записей пользователей необходимо использовать отложенное выполнение настраиваемых действий , выполняемых в контексте системы. При немедленном выполнении пользовательских действий ProcessAccounts и UninstallAccounts создаются отложенные настраиваемые действия, которые создают, удаляют или откатывают учетные записи пользователей: CreateAccount, RemoveAccount и RollbackAccount.

Так как отложенные настраиваемые действия не могут считывать сведения в таблицах базы данных, ProcessAccounts и UninstallUserAccouts необходимо задать свойство CustomActionData для передачи сведений из таблицы UserAccounts в отложенные настраиваемые действия, как описано в разделе Получение контекстной информации для пользовательских действий отложенного выполнения. Когда установщик запускает скрипт выполнения, отложенные настраиваемые действия обрабатывают учетные записи пользователей в соответствии со сведениями в свойстве CustomActionData.

Так как все пользовательские действия находятся в библиотеках динамической компоновки, хранящихся в таблице Binary, все они включают константы msidbCustomActionTypeDll и msidbCustomActionTypeBinaryData в их базовом числовом типе. ProcessAccounts и UninstallAccounts являются примерами чистого настраиваемого действия типа 1. Сведения о других типах настраиваемых действий см. в разделе Сводный список всех типов настраиваемых действий.

CreateAccount и RemoveAccount — это отложенные пользовательские действия выполнения , которые не позволяют службам олицетворять определенных пользователей. Эти настраиваемые действия включают константы msidbCustomActionTypeInScript и msidbCustomActionTypeNoImpersonate для указания этих параметров выполнения в скрипте.

RollbackAccount — это настраиваемое действие отката , которое удаляет учетные записи пользователей только во время установки отката. RollbackAccount включает константы msidbCustomActionTypeInScript и msidbCustomActionTypeRollback, чтобы указать эти параметры выполнения настраиваемого действия в скрипте.

Эти настраиваемые действия могут обрабатывать конфиденциальные данные, такие как пароли пользователей, которые не должны записываться в файл журнала. Поэтому отложенные настраиваемые действия должны включать msidbCustomActionTypeHideTarget в тип настраиваемого действия. Имена отложенных настраиваемых действий также необходимо добавить в список свойств MsiHiddenProperties в таблице Property из-за того, как немедленные пользовательские действия передают данные в отложенные настраиваемые действия с помощью свойства CustomActionData.

Пользовательское действие Точка входа DLL Тип настраиваемого действия
ProcessAccounts ProcessUserAccounts в Process.dll. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData = 1
UninstallAccounts UninstallUserAccounts в Process.dll. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData = 1
CreateAccount CreateUserAccount в Create.dll. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate + msidbCustomActionTypeHideTarget = 11265.
RemoveAccount RemoveUserAccount в Remove.dll. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate + msidbCustomActionTypeHideTarget = 11265.
RollbackAccount RemoveUserAccount в Remove.dll. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeRollback + msidbCustomActionTypeHideTarget = 9473.

 

Перейдите к созданию таблицы CustomAction.