カスタム アクションの作成
次の表に、サンプル仕様を満たすために使用される 5 つのカスタム アクションを示します。ProcessAccounts、UninstallAccounts、CreateAccounts、RemoveAccounts、RollbackAccounts です。 これらのカスタム アクションはすべて、Binary テーブルに格納されているダイナミック リンク ライブラリ内にあります。 サンプル カスタム アクションを含むダイナミック リンク ライブラリの C++ ソース コードは、Windows インストーラー 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 では、CustomActionData プロパティを設定して、UserAccounts テーブルの情報を遅延カスタム アクションに渡す必要があります。 インストーラーが実行スクリプトを実行すると、遅延カスタム アクションは CustomActionData プロパティの情報に従ってユーザー アカウントを処理します。
すべてのカスタム アクションは、Binary テーブルに格納されているダイナミック リンク ライブラリ内にあるため、定数 msidbCustomActionTypeDll と msidbCustomActionTypeBinaryData がその基本数値型に含まれます。 ProcessAccounts と UninstallAccounts は、純粋なカスタム アクションの種類 1 の例です。 その他のカスタム アクションの種類については、すべてのカスタム アクションの種類の概要リストに関するページを参照してください。
CreateAccount と RemoveAccount は、サービスで特定のユーザーを偽装することを許可しない遅延実行カスタム アクションです。 これらのカスタム アクションには、これらのカスタム アクションのスクリプト内実行オプションを指定するための定数 msidbCustomActionTypeInScript および msidbCustomActionTypeNoImpersonate が含まれています。
RollbackAccount は、ロールバック インストール中にユーザー アカウントを削除するだけのロールバック カスタム アクションです。 RollbackAccount には、これらのカスタム アクションのスクリプト内実行オプションを指定するための定数 msidbCustomActionTypeInScript および msidbCustomActionTypeRollback が含まれています。
これらのカスタム アクションは、ログ ファイルに書き込まれてはならないユーザー パスワードなどの機密データを処理する場合があります。 したがって、遅延カスタム アクションには、カスタム アクションの種類に msidbCustomActionTypeHideTarget を含める必要があります。 即時カスタム アクションで CustomActionData プロパティを使用して遅延カスタム アクションにデータを渡す方式のため、遅延カスタム アクションの名前もProperty テーブルの MsiHiddenProperties プロパティ リストに追加する必要があります。
カスタム アクション | DLL エントリ ポイント | カスタム アクションの種類 |
---|---|---|
ProcessAccounts | Process.dll の ProcessUserAccounts | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData = 1 |
UninstallAccounts | Process.dll の UninstallUserAccounts | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData = 1 |
CreateAccount | Create.dll の CreateUserAccount | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate + msidbCustomActionTypeHideTarget = 11265 |
RemoveAccount | Remove.dll の RemoveUserAccount | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate + msidbCustomActionTypeHideTarget = 11265 |
RollbackAccount | Remove.dll の RemoveUserAccount | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeRollback + msidbCustomActionTypeHideTarget = 9473 |
「CustomAction テーブルの作成」に進みます。