Wix Bootstrapper:Bootstrapper事件的序列

Far*_*eed 6 wix bootstrapper burn

我开始玩Managed Boostrapper类和事件.简而言之,我添加了BoostrapperCore.dll,它会给你命名空间

Microsoft.Tools.WindowsInstallerXml.Bootstrapper

我能够从不同博客中的一些示例中获得一些信息.例如,入口点是BootstrapperApplication.Run(),在bootstrapper应用程序准备好运行时被调用.

然后有一些事件,如:

BoostrapperApplication.DetectBegin
BoostrapperApplication.DetectPackageBegin
BoostrapperApplication.DetectForward
Run Code Online (Sandbox Code Playgroud)

等等......

问题:是否有任何精确的文档/在线帮助,提供Microsoft.Tools.WindowsInstallerXml.Bootstrapper命名空间中的事件和方法的详细信息和顺序?

这肯定会节省很多时间......

问候

Jus*_*tin 9

虽然源代码在 git 上,但我还没有找到这些事件的大量文档。

就顺序而言,WiX 引导程序有 3 个主要阶段(所有这些阶段都是异步发生的)

探测

这是刻录引擎试图找出已经安装了什么(如果有的话)的时候。bootstrapper 应用程序通过调用 启动此过程Engine.Detect,您可能希望在引导程序启动后立即执行此操作,因为您需要此结果来决定是否显示安装、卸载或升级 UI。

在此阶段,引擎将引发OnDetect...事件以告诉引导程序应用程序它找到了什么。

计划

这是 Burn 引擎弄清楚它要做什么的时候。引导程序应用程序通过调用Engine.Plan,指定所需的操作(例如安装、卸载、升级等...)来启动此过程。这通常在应用阶段之前完成,例如在用户点击“开始”按钮之后)。该OnPlan...事件在这个阶段提出。

申请

这是 Burn 引擎实际安装或卸载包中的包的时间,并在引导程序应用程序调用Engine.Apply. 绝大多数剩余消息是在此阶段引发的,用于进度和错误报告的组合,或允许引导程序应用程序处理某些事情(例如OnResolveSource,可用于提示用户查找引擎无法定位的文件) )

Apply 有两个子阶段,Cache 和 Execute。


在这三个阶段之一中,我只能看到 3 个未引发的事件:

  • OnStartup, 在引导程序首次启动时引发(基本引导程序应用程序调用Run入口点作为处理此事件的一部分)
  • OnShutdown, 在引导程序退出时引发
  • OnSystemShutdown, 在收到WM_QUERYENDSESSION窗口消息时引发

您绝对需要处理的事件是OnDetectComplete, OnPlanComplete, OnApplyComplete, 将按该顺序发生。