【问题标题】:WiX Burn after restart/force reboot continuing installationWiX Burn 重启后/强制重启继续安装
【发布时间】: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 我的链如下

标签: wix installation windows-xp burn wix3.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() 或类似的早期检查它。
  • 谢谢罗伯!经过上述实施后,它按预期完美运行
  • 引导程序中的“托管代码”在哪里?
猜你喜欢
  • 1970-01-01
  • 2014-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-15
  • 2014-06-14
相关资源
最近更新 更多