2014-01-29 24 views
0

我有一個WIX安裝程序,需要啓動其他4個安裝程序。所有這些文件都在Exe文件中,但我們可能需要在MSI安裝程序中添加其他文件。WIX,引導程序或自定義操作

經過大量的研究,我達成的共識是使用引導程序,並鏈接子安裝程序。但是最後一篇文章在最後發現了一條評論:「但是現在你可以使用自定義操作」。

自定義操作的問題在於,在選擇立即模式時,它們都會在GUI啓動之前運行。但是,如果我使用「延遲」,那麼自定義操作無法訪問大多數安裝程序變量數據。所以我回到繪圖板上:我應該使用引導程序和鏈,還是使用自定義操作?

任何建議非常感謝。

回答

2

使用自定義操作來調用其他安裝程序的更有說服力的警告是Windows安裝程序一次只支持一次安裝。因此,如果您的任何EXE解包到MSI,它們將因安裝程序當前正在運行而無法安裝。

執行多個EXE安裝的「正確」方法是使用引導程序。

只有當您有一個相對簡單的不使用Windows Installer的第三方安裝程序時,纔可以執行調用其他安裝程序的自定義操作。在這些情況下,您可以在InstallFinalizeuse CustomActionData之前安排自定義操作as deferred以傳遞您需要的任何信息。

推遲的安裝程序在提升的進程中運行,這通常是決定延遲還是立即執行操作的決定性因素。您可以在安裝之前或之後安排即時操作,但它只能以用戶權限運行。

+0

嗨米奇,謝謝!我們現在沒有MSI,但未來可能需要。從錯誤的方式入手聽起來像是需要大量的工作才能退出,誰知道我們遇到了什麼問題。如果它不是自定義操作,是否有將數據傳遞到引導程序的方法?我真的是一個新手,但是引導程序會在原始安裝腳本的環境之外啓動。 – user3248498

+0

「這聽起來像引導程序啓動原始安裝腳本之外的東西」 - 這是正確的。它最終會被3個(或者你需要的很多)單獨的安裝程序調用,而這些安裝程序會被另一個腳本調用。關於這一切的一個很好的教程是http://wixtoolset.org/documentation/manual/v3/bundle/ – Mitch