我正在使用WiX Burn创建托管引导程序应用程序。我需要处理一些可能需要强制重启的ExePackage elements。 This question有关于如何处理重启的一些诱人线索,但我无法让它正常工作。
我在<ExitCode Value="3010" Behavior="forceReboot" />
元素中有ExePackage
,我可以在日志中看到触发。我正在收听由Shutdown
引发的BootstrapperApplication
事件并设置e.Result = Result.Restart
,但我还没有弄清楚如何捕获强制重启时应该发生的情况在Apply阶段检测到。我正在我if (Command.Resume == ResumeType.Reboot)
的{{1}}方法中测试Run
直接进入我的自定义用户界面的进度条部分,但我不知道如何恢复它离开的应用阶段关闭。在这种情况下,我是否需要致电BootstrapperApplication
或Engine.Detect()
?是否需要采取一些特殊操作来保持并恢复状态以便在重新启动后继续运行,或者Burn引擎是否在内部处理所有这些操作?
如果有人能指出一个处理重启的WiX Burn托管引导程序应用程序的工作示例,我将不胜感激。
答案 0 :(得分:3)
检查WixStandardBA的实施情况,即使它没有得到管理。基本上它执行以下操作:
启动时,请检查WixBundleForcedRestartPackage
变量并将其存储在m_sczAfterForcedRestartPackage
。
正常呼叫Detect
。
正常呼叫Plan
。
在OnPlanPackageBegin
中,跳过包直到导致重新启动的包。
正常呼叫Apply
。
Burn负责在重新启动时保持变量。