次の方法で共有


カスタム アクションのロールバック

インストーラーがインストール スクリプトを処理すると、ロールバック スクリプトが同時に生成されます。 ロールバック スクリプトに加えて、インストーラーはインストール中に削除するすべてのファイルのコピーを保存します。 これらのファイルは、非表示のシステム ディレクトリに保持されます。 インストールが完了すると、ロールバック スクリプトと保存されたファイルが削除されます。 インストールが失敗した場合、インストーラーはインストール中に行われた変更をロールバックし、コンピューターの元の状態を復元しようとします。

データベース テーブルに行を挿入してシステム操作をスケジュールするカスタム アクションは、インストールのロールバックによって逆になりますが、システムを直接変更したり、他のシステム サービスにコマンドを発行したりするカスタム アクションは、ロールバックによって常に元に戻すことはできません。 ロールバック カスタム アクションは、インストーラーがインストールのロールバック中にのみ実行するアクションであり、その目的は、システムに変更を加えたカスタム アクションを元に戻す操作です。

ロールバック カスタム アクションは、遅延実行カスタム アクションの一種です。これは、インストール シーケンス中に呼び出されたときに実行が遅延されるためです。 これは、ロールバック中にのみ実行されるという点で、通常の遅延カスタム アクションとは異なります。 ロールバック カスタム アクションは、アクション シーケンスでロールバックする遅延カスタム アクションの前に常に置く必要があります。 ロールバック カスタム アクションでは、遅延カスタム アクションが実行中に中断されるケースも処理する必要があります。 たとえば、ユーザーがカスタム アクションの実行中に [キャンセル] ボタンを押した場合などです。

ロールバック カスタム アクションは非同期的に実行できないことに注意してください。 「同期および非同期のカスタム アクション する」を参照してください。

ロールバック カスタム アクションの補完は、カスタム アクション コミットです。 インストーラーは、インストール シーケンス中にコミット カスタム アクションを実行し、カスタム アクションをロールバック スクリプトにコピーしますが、ロールバック中は実行しません。

ロールバック カスタム アクションでは、カスタム アクションのコミットによって行われたすべての変更を削除できない場合があることに注意してください。 インストーラーはロールバックとコミットの両方のカスタム アクションをロールバック スクリプトに書き込みますが、コミット カスタム アクションは、インストーラーがインストール スクリプトを正常に処理した後にのみ実行されます。 コミット カスタム アクションは、ロールバック スクリプトで実行する最初のアクションです。 コミット カスタム アクションが失敗した場合、インストーラーはロールバックを開始しますが、ロールバック スクリプトに既に書き込まれている操作のみをロールバックできます。 つまり、コミット カスタム アクションによっては、ロールバックでアクションによって行われた変更を元に戻すことができない場合があります。 カスタム アクションを作成してリターン コードを無視することで、コミット カスタム アクションのエラーを無視できます。

インストーラーがロールバック カスタム アクションを実行すると、設定されるモード パラメーターはMSIRUNMODE_ROLLBACKのみです。 実行モードのパラメーターの説明については、「MsiGetMode」を参照してください。

ロールバック カスタム アクションは、CustomAction テーブルの Type フィールドにオプション フラグを追加することで指定できます。 ロールバック カスタム アクション 指定するオプション フラグについては、「カスタム アクション In-Script 実行オプションの」を参照してください。

ロールバックが無効になっている場合、カスタム アクションのロールバックとコミットは実行されません。 パッケージ作成者が適切なインストールのためにこれらの種類のカスタム アクションを必要とする場合は、ロールバックが無効になったときにインストールを続行できない状態で、RollbackDisabled プロパティを使用する必要があります。 ロールバックを無効にする方法については、「ロールバック インストール (Windows インストーラー)を参照してください。