다음을 통해 공유


사용자 지정 작업 작성

아래 표에는 샘플 사양을 충족하는 데 사용되는 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 Process.dll에서 사용자 계정 처리. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData = 1
계정 제거 Process.dll에서 UninstallUserAccounts. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData = 1
계정 생성 Create.dll사용자계정생성. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate + msidbCustomActionTypeHideTarget = 11265.
계정 삭제 Remove.dll에서 사용자 계정 제거. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate + msidbCustomActionTypeHideTarget = 11265.
RollbackAccount Remove.dll사용자 계정 제거. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeRollback + msidbCustomActionTypeHideTarget = 9473.

 

CustomAction 테이블작성을 계속하십시오.