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