3

インストールが中断された場合、またはエラーで完了した場合にのみ実行するようにカスタム アクションをシーケンスする方法は?

現在のインストール ステータス (失敗/成功) を返す Windows インストーラー プロパティはありますか?

4

2 に答える 2

7

要素のOnExit属性は、<Custom>探しているものです。Before、、AfterおよびSequence属性と相互に排他的であり、次の値を持つことができます: successcancel、。errorsuspend

更新:基本的に、これは私が意味するものです:

1) 実行したい作業を実行するカスタム アクションを定義します (失敗データを収集します)。CustomAction MSI テーブルは主キーとして想定されているため、同じターゲットを指す N 個のカスタム アクションを定義する必要があることに注意してくださいId(DLL CA であると仮定しましょう)。

<CustomAction Id="LogFailureOnCancel" BinaryKey="CustomActions" DllEntry="LogFailure" ... />
<CustomAction Id="LogFailureOnError" BinaryKey="CustomActions" DllEntry="LogFailure" ... />

注: どちらの定義も同じ実際のアクション (DllEntry属性) を指しています。

2) これらのカスタム アクションを適切にスケジュールします。

 <Custom Action="LogFailureOnCancel" OnExit="cancel" />
 <Custom Action="LogFailureOnError" OnExit="error" />
于 2012-07-17T10:32:21.197 に答える
0

Windows インストーラーが許可する範囲で、これはロールバックがスケジュールされたカスタム アクション中にのみ可能です。ただし、ロールバックは遅延スクリプトにのみ適用されるため、InstallInitialize と InstallFinalize の間にスケジュールされたアクションでのみ使用できます。このスケジューリング期間外の即時モード アクションによってインストールが中止された場合、ロールバックは適用されません。

C++ または InstallScript アクションを使用していると仮定すると、ロールバックが有効かどうか、およびロールバック中である場合は、MsiGetModeMSIRUNMODE_ROLLBACKENABLEDを呼び出すことで、またはMSIRUNMODE_ROLLBACKそれぞれを使用して確認できます。

于 2012-07-17T12:09:52.913 に答える