2012-07-16 743 views
12

我正在創建我的第一個NSI腳本,我只是想知道如果我可以從NSIS執行命令行命令還是應該執行批處理文件?我真的不知道從哪裏開始,其他類似的話題已經超出了我的頭腦。從NSIS執行命令行命令

+0

的【答案在這裏(HTTP: //stackoverflow.com/a/10900198/62576)可能會有所幫助。它適用於命令行應用程序。 – 2012-07-16 19:18:04

回答

8

嘗試使用exec命令http://nsis.sourceforge.net/Docs/Chapter4.html

4.9.1.2 Exec的

命令

執行指定的程序,並立即繼續。請注意,指定的文件必須存在於目標系統上,而不是編譯系統中。 $OUTDIR用於工作目錄。如果進程無法啓動,則會設置錯誤標誌。請注意,如果該命令可能有空格,則應將其放在引號中以便從參數中對其進行分隔。例如:Exec '"$INSTDIR\command.exe" parameters'。如果不將它放在引號中,它將無法在Windows 9x上使用或不使用參數。

Exec '"$INSTDIR\someprogram.exe"' 
Exec '"$INSTDIR\someprogram.exe" some parameters' 
+0

好吧,我希望能夠從.nsi控制命令行並執行如下操作:「copy/b someprogram.exe + ,,」聽起來像我需要從批處理文件中完成。 – user1457296 2012-07-16 22:18:13

+3

你試過這個'Exec'cmd/k copy/b ...'嗎? – zenpoy 2012-07-17 05:25:44

10

我建議看看nsExec插件。我剛剛遇到了一種情況,我需要從NSIS腳本中ping一臺服務器,下面的代碼對我來說非常合適。

nsExec::Exec '"C:\Windows\System32\PING.EXE" $URL' 

使用nsExec的好處是,它可以在屏幕上彈出一個dos框而不執行任何命令。返回值被壓入堆棧,並且有幾種不同的方式可以訪問程序的輸出(如果存在的話)。

沒有一大堆關於NSIS網站,我能找到的插件的信息,但下面的鏈接應該讓你在正確的方向開始:

http://nsis.sourceforge.net/Docs/nsExec/nsExec.txt

編輯:

我注意到你特別詢問了一個內部DOS命令的COPY命令,這意味着你將無法像執行ping操作那樣執行它。我可能會誤解,但你不應該使用任何外部程序來執行這樣的基本命令。您應該能夠使用NSIS命令複製大多數內部命令。

例如,要複製文件(或多個文件)使用NSIS命令:CopyFiles

NSIS Scripting Reference是你的朋友:)(所以是按Ctrl + F)

+0

只是正確的選項來執行應用程序而不顯示命令提示符 – 2014-03-20 03:36:41