2015-09-16 77 views
0

我有一個應該叫二次基本NSIS安裝 - 非NSIS安裝程序,像這樣:NSIS ExecWait不啓動二次安裝

Section "Install First" SEC01 
    File "WindowsPathToFile\setup.exe" 
    DetailPrint "Installing the first Thing" 
    ExecWait '"$INSTDIR\setup.exe"' 
SectionEnd 

NSIS和安裝不拋出任何錯誤 - 但是子從未啓動或執行安裝程序(並且從未安裝該應用程序)。

請注意,如果我在批處理腳本中調用「setup.exe」並啓動批處理腳本,這可行。我只是希望有更優雅的東西(不會顯示命令提示符),因爲我會有幾個需要調用的自定義安裝程序。

我不認爲「ExecWait Doesn't Wait」中詳細描述的ExecWait鏈問題會影響我,因爲我不認爲我的(setup.exe)安裝程序正在提取輔助安裝程序。

setup.exe安裝程序由LabVIEW創建,我還沒有找到關於它在幕後做什麼的好信息。

我在這裏錯過了什麼嗎?或者我只需要堅持批處理腳本?

回答

0

輔助安裝程序是否需要提升?你的.nsi中有RequestExecutionLevel admin嗎?

ExecWait內部調用CreateProcess Windows API函數,如果需要通過UAC提升子進程,它將失敗。

如果您要執行需要提升的子進程,則通常建議您的安裝程序也要求提升。如果你出於某種原因不想這樣做,那麼你可以使用ShellExecWait${StdUtils.ExecShellWaitEx}

+0

我的輔助安裝程序確實需要提升。 我發現第一個錯誤: 當我改變這個時,我正在使用** RequestExecutionLevel用戶**而不是** admin **我現在有一個新問題: 當NSIS安裝程序調用新的安裝程序時, **。\ ConfigInfo.cpp(3266):InstallerError 11005 致命錯誤。無法找到初始化文件。 找不到文件C:\ setup.ini ** 我懷疑這是一個路徑問題,但至少現在它似乎在做某些事情...... 謝謝你的幫助。 –