WiX Burn 重启后/强制重启继续安装

Posted

技术标签:

【中文标题】WiX Burn 重启后/强制重启继续安装【英文标题】:WiX Burn after restart/force reboot continuing installation 【发布时间】:2013-04-16 11:32:36 【问题描述】:

我有一个使用 ManagedBootstrapperApplicationHost 的 WiX Burn 自定义安装程序。安装 Microsoft Windows Installer 4.5 的必备软件之一后,我使用以下命令强制重启 PC (Windows XP):

<ExitCode Behavior="forceReboot"/>

Bundle 链如下所示:

<Chain>
   <PackageGroupRef Id="WindowsInstaller45"/>
   <PackageGroupRef Id="Netfx2Full"/>
   <PackageGroupRef Id="Netfx4Full"/>
   <PackageGroupRef Id="CustomPkg"/>
   <PackageGroupRef Id="SQLExpress"/>
</Chain>

重启后,我希望我的安装在此之后继续,但它实际上会检测到安装并显示卸载选项。

在安装过程中重新启动时如何检测未完成的安装?

【问题讨论】:

你的链在你的包中是什么样子的,你使用的是什么版本的 wix? 我正在使用 Wix 3.7 我的链如下 【参考方案1】:

当 Bundle 在重新启动后再次启动时,传递给 BootstrapperApplicationCreate 函数的 BOOTSTRAPPER_COMMAND 结构包含将设置为 BOOTSTRAPPER_RESUME_TYPE_REBOOTresumeType 字段。在托管代码中,BootstrapperApplication 类包含一个 Command 属性,该属性包含 resume 字段。

例如在托管代码中,要告诉您的BootstrapperApplication 在重新启动后启动,您可以检查:

 if (BootstrapperApplication.Command.resume == ResumeType.Reboot)
 
    // started after restart, go straight to Detect->Plan->Apply to finish the
    // previous operation. BootstrapperApplication.Command.action will tell us
    // the action to complete.
 
 else
 
    // started normally, show typical UI scenarios.
 

【讨论】:

谢谢罗伯!我应该在 this.Engine.Detect() 中检查相同的内容吗?在运行中 是的,你需要在 Run() 或类似的早期检查它。 谢谢罗伯!经过上述实施后,它按预期完美运行 引导程序中的“托管代码”在哪里?

以上是关于WiX Burn 重启后/强制重启继续安装的主要内容,如果未能解决你的问题,请参考以下文章

Wix 安装然后立即尝试修复

强制 WiX Burn 引导程序允许 MSI 文件使用 REINSTALLMODE=amus

WiX Burn:如何将安装程序可执行文件部署到某个位置?

WiX - Burn 支持两用 msi 包吗?

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

(Un)在 WIX Burn 安装程序中安装 NSIS 包