0

Wix 3.7 を使用するマネージド ブートストラップ アプリケーションがあります。

いずれかの ExePackage の実​​行中に強制シャットダウンまたは電源オフが発生した場合、システムが再起動され、ユーザーがブートストラップを再度開始すると、最後に停止した ExePackage から再開する必要があります。Command パラメーターの値は、"Resume" ではなく "Install" です。「再開」コマンドとして確実に開始するにはどうすればよいですか。

4

1 に答える 1

0

ブートストラップは、任意のインストーラーの進行状況を追跡するようには設計されていません。実行されるたびに、それ自体が完全にインストールされていることを検出して変更/削除動作を実行するか、そうでない場合にインストール動作を実行します。

インストール中、チェーン内の各 ExePackage にはオプションの検出条件があります。条件が存在しない場合、または失敗した場合、そのパッケージの InstallCommand が実行されます。

したがって、理想的には、インストーラーが部分的にしかインストールされていない場合は、インストーラーがそれを整理してから、正しいことを行う必要があります。(つまり、Windows インストーラーやその他の適切に設計されたインストーラーのように堅牢である必要があります。)

それを変更できないが、そのような検出条件をバンドルに書き込むことができる場合は、チェーンに 2 つの ExePackage 要素を含めることができます。1) インストーラーが部分的にインストールされている状態で Resume コマンドを実行し、次に 2)インストーラーが完全にインストールされていない状態でコマンドをインストールします。

通常のインストールの場合:

  1. 最初のものは実行されません。
  2. 2 つ目は完全に実行されます。

インストールケースを再開し、新たに開始します:

  1. 最初のものは実行されません。
  2. 2番目は実行されますが、
  3. 中断
  4. 電源を入れて再起動
  5. 最初の1つが実行されます
  6. 再度中断が発生した場合は 2 ステップ戻ります
  7. 2つ目は実行されません

バンドルで行うのが不便な場合は、対応できないインストーラーの周りに堅牢なラッパーを作成できます。もちろん、これは、マシンの状態に基づいて Resume コマンドと Install コマンドのどちらを使用する必要があるかを判断できることを前提としています。

于 2013-10-24T03:22:41.903 に答える