2012-06-05 52 views
3

我是NSIS的新手,我嘗試在執行類似於預先請求的安裝時執行可執行文件。我試着將下面的代碼複製到安裝路徑,但它沒有執行它。Exec在NSIS安裝程序中不起作用

Section "example" example 
    SetOutPath "$INSTDIR" 
    File "setup.exe" 
    Exec "$INSTDIR\setup.exe" 
    BringToFront 
SectionEnd 

回答

1

變量是否映射到名稱包含空格的目錄?如果是這樣,你應該添加簡單的報價,包括雙引號到Exec說法:

Exec '"$INSTDIR\setup.exe"' 
8

從關答案多半是正確的,我只是想補充的是,Exec的/ ExecWait正確的語法是總是Exec '"c:\path\app.exe" param1 "par am2" param3'

參數當然是可選的,但在應用程序的路徑應始終被引用,不只是因爲你的情況,其中$ INSTDIR可以包含空格,但至少在Win9x將失敗不管你不要什麼(根據NSIS手冊)

如果空間/缺少引號不是問題,那麼有一對夫婦的其他東西,你可能要考慮:

  • $ OUTDIR是爲新進程的工作目錄(SetOutPath套本)
  • 缺少DLL的等(Process Monitor
+0

嗯,感謝指出,雙引號總是強制性的。在最新版本的幫助下,它不是那麼明顯,因爲它在4.9.1.2中聲明「[...]請注意,如果命令可能有空格,您應該*將它放在引號中以將其與參數分隔[ ...]「,並且還表明引號對於win9x是強制性的。也許可以幫助更新? – Seki