3

我正在使用WiX Burn创建托管引导程序应用程序。我需要处理一些可能需要强制重启的 ExePackage 元素。这个问题有一些关于如何处理重启的诱人线索,但我无法让它工作。

我有<ExitCode Value="3010" Behavior="forceReboot" />元素ExePackage,我可以在日志中看到触发。我正在收听and 设置Shutdown引发的事件,尽管我还没有弄清楚如何捕获在应用阶段检测到强制重启时应该何时发生这种情况的条件。我正在测试直接进入自定义 UI 的进度条部分的方法,但我不确定如何从中断的地方恢复应用阶段。我需要打电话还是在这种情况下?是否需要采取一些特殊措施来保持和恢复状态以在重新启动后继续存在,或者 Burn 引擎是否在内部处理所有这些?BootstrapperApplicatione.Result = Result.Restartif (Command.Resume == ResumeType.Reboot)RunBootstrapperApplicationEngine.Detect()Engine.Apply

如果有人能指出一个处理重启的 WiX Burn 托管引导程序应用程序的工作示例,我将不胜感激。

4

1 回答 1

3

查看WixStandardBA的实现,即使它不受管理。基本上它执行以下操作:

  1. 在启动时,检查WixBundleForcedRestartPackage变量并将其存储在m_sczAfterForcedRestartPackage.

  2. Detect像往常一样打电话。

  3. Plan像往常一样打电话。

  4. OnPlanPackageBegin中,跳过包,直到导致重新启动的包。

  5. Apply像往常一样打电话。

Burn 负责在重启过程中保持变量。

于 2014-10-10T23:03:33.747 回答