2012-11-19 130 views
1

我將NSIS腳本編譯爲.exe安裝文件。我用命令行\ S無聲選項啓動.exe。NSIS無提示安裝程序返回退出代碼1

安裝按需要靜默執行,但有退出代碼1.退出代碼1對應於用戶選擇嚮導上取消的情況。但是,安裝成功並且模式處於靜默狀態(無用戶交互)。此外,此退出代碼來自哪裏,以及如何手動強制退出代碼0?

我有一個想法,我可以做一些.onInstSuccess函數,如果安裝成功,強制執行退出代碼1。

此外,ExecWait捕獲退出代碼到一個變量,但沒有'設置'選項。

你會怎麼推薦?

感謝和問候

+0

你是說有一個空白部分的無聲安裝程序產生退出代碼1?如果是這樣,請向我們展示如何捕獲此退出代碼,如果沒有,請向我們展示一些NSIS代碼... – Anders

回答

3

沒有任何的示例代碼是有點難以想這個問題可能是什麼!

您可以使用SetErrorLevel來設置特定的退出代碼。

就ExecWait而言,設置任何東西都沒有意義,當它返回子進程結束時。如果你想使用子進程的退出代碼,你只需要得到它:

ExecWait '"c:\foo.exe"' $0 
SetErrorLevel $0 
+0

當安裝程序處於靜默狀態時,則不會輸入函數.onGuiEnd。我想我可以reqson爲什麼它會像用戶將取消安裝程序一樣。所以我有一個想法你的代碼示例在函數.onInstSuccess可以做到這一點......但沒有'$':沒有捕捉真正的退出代碼,但強制執行0.我會嘗試,但希望對我的解釋有你的意見(安裝程序不訪問.onGuiEnd - >退出代碼1) – octoback

+0

.onGuiEnd不在靜默安裝程序中執行(不使用頁面,也不使用GUI回調) – Anders

相關問題