2012-10-17 130 views
1

我已經爲我的java項目成功地創建了nsis腳本。我有一個批處理文件,需要在我的NSIS安裝程序中運行。它必須在所有文件解壓縮後運行。嘗試下面的命令在NSIS安裝程序中執行BAT文件 - 不工作

!define MUI_FINISHPAGE_RUN $INSTDIR\bin\batch.bat 

這其中也試過:

SetOutPath $INSTDIR 
ExpandEnvStrings $0 %COMSPEC% 
nsExec::ExecToStack '"$INSTDIR\batch.bat"' 

我已經提到這個link

我的要求是:

1.How利用NSIS腳本啓動批處理文件,安裝完成後?

回答

1

如果您不打算使用結果,爲什麼要調用ExpandEnvStrings?你的兩個例子中的路徑甚至不匹配。

只要你得到的路徑和引號糾正它應該工作:

!include MUI2.nsh 
!insertmacro MUI_PAGE_INSTFILES 
!define MUI_FINISHPAGE_RUN 
!define MUI_FINISHPAGE_RUN_FUNCTION RunBatch 
!insertmacro MUI_PAGE_FINISH 
!insertmacro MUI_LANGUAGE English 

Function RunBatch 
;The most basic version, runs with visible console: 
ExecWait '"$temp\test.cmd" /foo "bar baz" /blergh' 

;You must use cmd.exe if you want redirection (With stupid extra quotes for cmd.exe): 
ExpandEnvStrings $0 %COMSPEC% 
ExecWait '"$0" /C ""$temp\test.cmd" /foo "bar baz" /blergh > "$temp\stdout.txt""' 

;Use one of the exec plugins if you want to hide the console: 
nsExec::Exec '"$temp\test.cmd" /foo "bar baz" /blergh' 
FunctionEnd 

有幾個高管的插件,你可以根據自己的需要使用:nsExecExecDosExecCmd

+0

謝謝。什麼是「test.cmd」?你有沒有在你的ExecWait命令中提到? – Ami

+0

test.cmd是我用來檢測的批處理文件... – Anders

相關問題