一旦我的Wix MBA启动(实际上在主视图的代码隐藏构造函数中),我就为BA中的一堆Detect *事件设置事件处理程序:
LogDetect("Setting bootstrapper detection handlers");
bootstrapperApplication.DetectRelatedBundle += BootstrapperOnDetectRelatedBundle;
bootstrapperApplication.DetectPackageComplete += BootstrapperApplicationOnDetectPackageComplete;
bootstrapperApplication.DetectRelatedMsiPackage += BootstrapperOnDetectRelatedMsiPackage;
bootstrapperApplication.DetectPriorBundle += BootstrapperOnDetectPriorBundle;
bootstrapperApplication.DetectMsiFeature += BootstrapperApplicationOnDetectMsiFeature;
bootstrapperApplication.DetectComplete += BootstrapperApplicationOnDetectComplete;
bootstrapperApplication.DetectBegin += BootstrapperApplicationOnDetectBegin;
然后我打电话给Detect():
LogDetect("Beginning detection of existing installations...");
bootstrapperApplication.Engine.Detect();
在这些处理程序中,我只调用LogDetect()
。我知道LogDetect()
有效,因为我在处理程序之外的那两个调用会记录消息,但是LogDetect()
没有记录其他消息,这意味着永远不会调用处理程序。
我认为至少DetectBegin
和DetectComplete
会触发。
我认为在调用Detect()
后不久就会发生这些事件。它什么时候发生?
编辑:如果我查看用户临时目录中的日志文件,它会显示正在发生检测。那些日志条目不是我的(它们标记为iXXX,其中i代表内部我认为)。
(旁注:这个有点相关的问题,没有得到回答的事实并不是很有希望...... Wix Bootstrapper: Sequence of Bootstrapper events)
答案 0 :(得分:1)
看起来他们一直在开火;他们只是试图在不同的线程上工作:/