我有一个自定义Bootstrapper,我试图通过更改版本来升级我的Bundle(所有MSI' s版本保持不变,这不是一个理想的场景)。两个Bundles都有相同的升级代码(他们应该有)。
升级完成后,旧软件包将安静地卸载,因为在安装新软件包之后将使用参数/ quit调用它,但是一旦完成旧软件包的卸载,该过程仍然存在并且不会#39; t自杀。 因此我的Custom Bootstrapper的当前状态不会改变。
问题:任何人都可以让我知道在这里可以做些什么,以便杀死旧的捆绑进程,以便当前的捆绑包随着它升级而不会卡住?
答案 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中设置的标志