0

I have a managed bootstrapper application, which uses wix 3.7.

While in the middle of execution of one of the ExePackages, if there is a forced shutdown or a power off, then when the system is restarted and the user starts the bootstrapper again, it should resume from last ExePackage it stopped. The Command parameter has the value "Install" rather than "Resume". How do I ensure it starts as a "Resume" command.

4

1 回答 1

0

引导程序并非旨在跟踪任意安装程序的进度。每次运行时,它要么发现它本身已完全安装并执行其修改/删除行为,要么它没有并执行其安装行为。

在安装过程中,链中的每个 ExePackage 都有一个可选的检测条件。如果条件不存在或失败,则执行该包的 InstallCommand。

因此,理想情况下,安装程序应自行确定是否仅部分安装,然后做正确的事情。(换句话说,要像 Windows Installer 和其他精心设计的安装程序一样健壮。)

如果您无法更改但可以将此类检测条件写入您的 Bundle,您可以尝试在链中包含两个 ExePackage 元素,1)在安装程序部分安装的情况下运行 Resume 命令,然后 2)运行在安装程序未完全安装的情况下安装命令。

正常安装案例:

  1. 第一个不运行,
  2. 第二个完全运行。

恢复安装案例,重新开始:

  1. 第一个不运行,
  2. 第二个运行但是
  3. 中断
  4. 通电再走
  5. 第一个运行
  6. 如果再次发生中断,则返回两步
  7. 第二个不运行

如果在您的 Bundle 中执行此操作不方便,您可以在无法应对的安装程序周围编写一个强大的包装器。当然,这假设您可以根据机器的状态判断何时应该使用 Resume 命令和 Install 命令。

于 2013-10-24T03:22:41.903 回答