如何在 WiX 安装程序中处理 ManagedBootstrapperApplicationHost 和重启/重启?

Posted

技术标签:

【中文标题】如何在 WiX 安装程序中处理 ManagedBootstrapperApplicationHost 和重启/重启?【英文标题】:How do I handle ManagedBootstrapperApplicationHost & reboot / restart in WiX installer? 【发布时间】:2013-04-10 14:24:49 【问题描述】:

我正在使用 WiX Burn 来安装我们项目的必备组件,并且我使用 ManagedBootstrapperApplicationHost 来拥有自定义 UI。我正在检查 Windows Installer 版本并将其作为先决条件进行安装,但它需要重新启动。

如何在代码中处理重启?

我尝试在下面的代码中检查它,但在重启的情况下e.status 的值也是 0。

代码

private void PlanComplete(object sender, PlanCompleteEventArgs e)

    logger.LogInfoMessage("-------------->>  "+ e.Status.ToString());
    if (Hresult.Succeeded(e.Status))
    
        this.root.PreApplyState = this.root.State;
        this.root.State = InstallationState.Applying;
        WixBA.Model.Engine.Apply(this.root.ViewWindowHandle);
    
    else
    
        this.root.State = InstallationState.Failed;
    

【问题讨论】:

【参考方案1】:

如果在ApplyComplete() 回调到您的bootstrapper application 中需要重新启动,引擎将返回。您可以在那个时候决定接受重启并从ApplyComplete() 回调中返回Result.Restart

或者,您可能希望在完成对话框或其他内容上提示用户,让他们选择接受或不接受重新启动。在这种情况下,您可以从Shutdown() 回调中返回Result.Restart,并且引擎将在您的引导程序应用程序退出后重新启动。

我倾向于在我的引导程序应用程序中最常使用第二个选项。

【讨论】:

以上是关于如何在 WiX 安装程序中处理 ManagedBootstrapperApplicationHost 和重启/重启?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 wix 安装程序中卸载另一个程序?

如何实现 WiX 安装程序升级?

我如何在 WiX 安装程序脚本中实际使用 LinkerBindInputPaths PropertyGroup

如何关闭正在运行的 wix 安装程序?

如何在升级过程中运行捆绑包时,如何在WIX(Windows安装程序xml)引导程序项目中将按钮文本更改为“升级”?

如何使用 wix 安装程序添加公司名称