2013-04-23 141 views
4

我有一个使用ManagedBootstrapperApplicationHost的WiX Burn自定义安装程序。安装必备的一个微软Windows Installer 4.5后,我使用强制重新启动计算机(视窗  XP):重新启动后WiX刻录/强制重启继续安装

<ExitCode Behavior="forceReboot"/> 

的包链是这样的:

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

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

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

+0

什么是您的连锁样子在你的包和你使用的是什么版本的WiX的? – 2013-04-23 12:27:01

+0

我使用维克斯3.7我的链是如下 Gaurav 2013-04-23 13:06:52

回答

7

当重启后重新启动Bundle时,BOOTSTRAPPER_COMMAND结构传递到BootstrapperApplicationCreate函数包含一个resumeType字段,该字段将设置为BOOTSTRAPPER_RESUME_TYPE_REBOOT。在托管代码中,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. 
} 
+0

感谢罗!我应该检查相同的this.Engine.Detect();在运行 – Gaurav 2013-04-23 14:36:08

+0

是的,你会想在Run()或类似的早期检查。 – 2013-04-23 14:43:03

+0

谢谢Rob!它在上面的实现之后按预期完美工作 – Gaurav 2013-04-25 12:17:01