Создание пользовательских действий
В таблице ниже перечислены пять настраиваемых действий, используемых в соответствии с примерами спецификаций: 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.