Wix Burn:自定义Bootstrapper升级,卸载旧捆绑但流程仍然存在

时间:2015-08-14 06:08:30

标签: wix bootstrapper burn

我有一个自定义Bootstrapper,我试图通过更改版本来升级我的Bundle(所有MSI' s版本保持不变,这不是一个理想的场景)。两个Bundles都有相同的升级代码(他们应该有)。

升级完成后,旧软件包将安静地卸载,因为在安装新软件包之后将使用参数/ quit调用它,但是一旦完成旧软件包的卸载,该过程仍然存在并且不会#39; t自杀。 因此我的Custom Bootstrapper的当前状态不会改变。

问题:任何人都可以让我知道在这里可以做些什么,以便杀死旧的捆绑进程,以便当前的捆绑包随着它升级而不会卡住?

1 个答案:

答案 0 :(得分:0)

我想我已经找到了问题,因为当升级发生以便删除旧的bundle条目时,刻录引擎会创建一个额外的进程,所以为了在卸载发生后返回主线程,我在CustomBA中的ApplyComplete事件中做了以下更改。

if (CustomBootstrapperApplication.Model.PlannedAction == LaunchAction.Uninstall && isRelatedBundlePresent) // this will be called in case of Upgrade of the bundle
{
    CustomBootstrapperApplication.Dispatcher.InvokeShutdown();                 
}

isRelatedBundlePresent是我在RelationType.Upgrade

中在DetectRelatedBundle中设置的标志