2013-08-27 48 views
0

我有一個簡單的刻錄引導程序,其中我需要做的第一件事是觸發重新啓動(在安裝任何內容之前),然後在重新啓動後繼續安裝。我已經設置了鏈如:WiX ExitCode forceReboot導致無盡的重新啓動

<Chain> 
    <ExePackage SourceFile="DummyExe.exe"> 
    <ExitCode Behavior="forceReboot" /> 
    </ExePackage> 
    <PackageGroupRef Id="NetFx40Web" /> 
    <PackageGroupRef Id="others..." /> 
</Chain> 

當我最初運行安裝程序,這工作得很好:它強制重新啓動,並繼續在登錄時安裝,但隨後的鏈從頭開始了,因此引發另一次重啓。它只是強制重新啓動,並且不會繼續安裝。

我發現other answers解釋如何使用自定義引導程序應用程序來做到這一點,但我目前使用bal:WixStandardBootstrapperApplication

這可能沒有寫CBA? (我正在使用WiX 3.7)

回答

1

你正在得到你所要求的。

您希望在ExitCode元素中提供Value屬性以調整行爲。如果沒有,則會針對任何退出代碼調用該行爲。查閱預計退出代碼及其含義的包裝文件。如果您願意,您可以指定多個ExitCode元素,最後一個沒有Value的元素可以指定默認行爲。

+0

幸好我在'ExePackage'的控制。它只是我添加的一個佔位符,用於在安裝之前強制重新啓動。如果我添加多個'ExitCode'元素,我想我需要修改我的dummy exe以在重新啓動之前返回一個退出代碼,並且在重新啓動後另一個退出代碼(表示我們不需要安裝)?我想寫一個臨時註冊碼是最好的辦法。 – kcnygaard

+0

您可能應該允許exe運行至不起作用-0對於完成的安裝而言可能是一個很好的退出代碼。如果你確實想避免運行它,那麼你可以指定一個DetectCondition。 –

0

這可能工作:

<Chain> 
    <ExePackage Id="DummyReboot" SourceFile="DummyExe.exe" InstallCondition="NOT WixBundleForcedRestartPackage = DummyReboot" > 
    <ExitCode Behavior="forceReboot" /> 
    </ExePackage> 
    <PackageGroupRef Id="NetFx40Web" /> 
    <PackageGroupRef Id="others..." /> 
</Chain> 
相關問題