다음을 통해 공유


사용자 지정 작업 작성

아래 표에는 샘플 사양을 충족하는 데 사용되는 5가지 사용자 지정 작업인 ProcessAccounts, UninstallAccounts, CreateAccounts, RemoveAccounts 및 RollbackAccounts가 나열되어 있습니다. 이러한 모든 사용자 지정 작업은 이진 테이블에 저장된 동적 링크 라이브러리에 있습니다. 샘플 사용자 지정 작업이 포함된 동적 링크 라이브러리에 대한 C++ 소스 코드는 Windows Installer SDK에 제공됩니다. ProcessAccounts 및 UninstallAccounts는 Process.cpp 파일에 있습니다. CreateAccount는 Create.cpp 파일에 있습니다. RemoveAccount 및 RollbackAccount는 Remove.cpp 파일에 있습니다. 이러한 원본 파일을 사용하여 Process.dll, Create.dll 및 Remove.dll 파일을 만들 수 있습니다.

사용자 계정을 만들거나 제거하려면 상승된 권한이 필요하므로 시스템 컨텍스트에서 실행되는 지연된 실행 사용자 지정 작업을 사용하여 사용자 계정을 만들거나, 제거하거나, 롤백해야 합니다. 즉시 실행 사용자 지정 작업인 ProcessAccounts 및 UninstallAccounts는 사용자 계정을 만들거나, 제거하거나, 롤백하는 지연된 사용자 지정 작업(CreateAccount, RemoveAccount 및 RollbackAccount)을 생성합니다.

지연된 사용자 지정 작업은 데이터베이스 테이블에서 정보를 읽을 수 없으므로, ProcessAccounts 및 UninstallUserAccouts는 지연된 실행 사용자 지정 작업에 대한 컨텍스트 정보 가져오기에 설명된 대로 UserAccounts 테이블의 정보를 지연된 사용자 지정 작업에 전달하도록 CustomActionData 속성을 설정해야 합니다. 설치 관리자가 실행 스크립트를 실행할 때 지연된 사용자 지정 작업은 CustomActionData 속성의 정보에 따라 사용자 계정을 처리합니다.

모든 사용자 지정 작업은 이진 테이블에 저장된 동적 연결 라이브러리에 있으므로 모두 기본 숫자 형식의 msidbCustomActionTypeDll 및 msidbCustomActionTypeBinaryData 상수를 포함합니다. ProcessAccounts 및 UninstallAccounts는 순수 사용자 지정 작업 유형 1의 예입니다. 다른 사용자 지정 작업 유형에 대한 자세한 내용은 모든 사용자 지정 작업 유형의 요약 목록을 참조하세요.

CreateAccount 및 RemoveAccount는 서비스가 특정 사용자를 가장하는 것을 허용하지 않는 지연된 실행 사용자 지정 작업 입니다. 이러한 사용자 지정 작업에는 이러한 사용자 지정 작업 스크립트 내 실행 옵션을 지정하는 msidbCustomActionTypeInScript 및 msidbCustomActionTypeNoImpersonate 상수가 포함됩니다.

RollbackAccount는 롤백 설치 중에 사용자 계정만 제거하는 롤백 사용자 지정 작업입니다. RollbackAccount에는 이러한 사용자 지정 작업 스크립트 내 실행 옵션을 지정하는 msidbCustomActionTypeInScript 및 msidbCustomActionTypeRollback 상수가 포함됩니다.

이러한 사용자 지정 작업은 로그 파일에 기록하면 안 되는 사용자 암호와 같은 중요한 데이터를 처리할 수 있습니다. 따라서 지연된 사용자 지정 작업에는 사용자 지정 작업 유형에 msidbCustomActionTypeHideTarget이 포함되어야 합니다. 직접 사용자 지정 작업이 CustomActionData 속성을 사용하여 지연된 사용자 지정 작업에 데이터를 전달하는 방식으로 인해 지연된 사용자 지정 작업의 이름도 속성 테이블MsiHiddenProperties 속성 목록에 추가해야 합니다.

사용자 지정 동작 DLL 진입점 사용자 지정 작업
ProcessAccounts ProcessUserAccounts in Process.dll. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData = 1
UninstallAccounts UninstallUserAccounts in Process.dll. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData = 1
CreateAccount CreateUserAccount in Create.dll. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate + msidbCustomActionTypeHideTarget = 11265.
RemoveAccount RemoveUserAccount in Remove.dll. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate + msidbCustomActionTypeHideTarget = 11265.
RollbackAccount RemoveUserAccount in Remove.dll. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeRollback + msidbCustomActionTypeHideTarget = 9473.

 

CustomAction 테이블 작성을 계속합니다.