我在NSIS中編寫了一個安裝程序,它是用NSIS創建的另一個安裝程序的包裝。 內部安裝程序不是我的。它使用BioWare安裝程序1.03(NSIS 2.34)創建。它可能會被打破,但我不能修改它!我的安裝程序所做的只是修改某些註冊表值(否則「內部」安裝程序將不會運行),然後執行安裝程序,然後覆蓋一些文件,然後恢復以前的註冊表值。如何執行另一個NSIS安裝程序並等待它完成?
我的問題:我不知道如何實際等待「內部」安裝程序完成!這是因爲安裝程序首先解壓縮它的內容並創建一個新的進程,這是真正的安裝程序。只要第一個進程(解包)結束,代碼就會執行。等待在這裏至關重要,因爲我需要覆蓋一些文件。
我讀過這個:http://nsis.sourceforge.net/When_I_use_ExecWait,_it_doesn't_wait,但我找不到NSIS安裝程序的任何開關。
我已經嘗試過ExecWait和nsExec :: Exec,但它們都沒有等待真正的安裝程序,只是爲了完成第一個過程。
嘗試創新設置 - 我覺得它更容易使用。 – Tim 2010-10-07 20:00:26
感謝您的建議,但不幸的是,Inno Setup似乎表現得相同。我使用它的Exec函數,它只等待第一個進程完成。我需要一種方式來等待所有進程 - InstallShield安裝程序爲此提供了一個開關,但是關於NSIS(使用NSIS創建的「內部」安裝程序)呢? – 2010-10-07 20:32:18