2013-04-23 162 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

相關問題