同期/非同期カスタム アクション
Windows インストーラーでは、カスタム アクションはメイン インストールとは別のスレッドとして処理されます。 カスタム アクションの同期実行中、インストーラーでは、カスタム アクションのスレッドが完了するまで待機してから、メイン インストールが続行されます。 非同期実行中は、インストーラーでは、現在のインストールが続行されると同時にカスタム アクションが実行されます。 したがって、カスタム アクションの作成者は、関数呼び出しの間にインストール データベースに変更を加える可能性がある非同期スレッドを認識する必要があります。
特に、非同期カスタム アクションでは、MsiGetTargetPath と MsiSetTargetPath の呼び出しを回避する必要があります。 代わりに、MsiGetProperty を使用してターゲット パスを取得します。 インポート、エクスポート、変換操作などの一括データベース操作は、どの種類のカスタム アクションでも回避する必要があります。
オプション フラグを CustomAction テーブルの Type フィールドで設定して、メイン アクション スレッドとカスタム アクション スレッドが同期または非同期に実行されるように指定できます。 「カスタム アクションの戻り処理オプション」を参照してください。
インストーラーでは、ロールバック カスタム アクションと同時実行インストール アクションのみを同期カスタム アクションとして実行できます。