2012-07-16 10 views
12

Sto creando il mio primo script NSI e mi chiedo se posso eseguire un comando da riga di comando da NSIS o devo solo eseguire un file batch? Non so davvero da dove cominciare e altri argomenti simili sono andati un po 'sopra la mia testa.Esegui comando da riga di comando da NSIS

+0

Il [risposta qui] (http: //stackoverflow.com/a/10900198/62576) potrebbe aiutare. Funziona perfettamente con un'app di riga di comando. –

risposta

8

Prova utilizzando exec comando http://nsis.sourceforge.net/Docs/Chapter4.html:

4.9.1.2 Exec

comando

eseguire il programma specificato e continuare immediatamente. Si noti che il file specificato deve esistere sul sistema di destinazione, non sul sistema di compilazione. $OUTDIR viene utilizzato per la directory di lavoro. Il flag di errore è impostato se il processo non può essere avviato. Nota: se il comando può avere spazi, devi metterlo tra virgolette per delimitarlo dai parametri. ad esempio: Exec '"$INSTDIR\command.exe" parameters'. Se non lo inserisci tra virgolette, non funzionerà su Windows 9x con o senza parametri.

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

ok, speravo di essere in grado di controllare la riga di comando da .nsi e fare qualcosa del genere: "copy/b someprogram.exe + ,," Sembra che avrò bisogno di farlo da un file batch. – user1457296

+3

hai provato questo 'Exec 'cmd/k copy/b ...''? – zenpoy

10

Suggerirei di dare un'occhiata al plug-in nsExec. Recentemente ho avuto una situazione in cui avevo bisogno di eseguire il ping di un server all'interno di uno script NSIS, e il codice seguente ha funzionato perfettamente per me.

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

Il vantaggio di utilizzare nsExec è che si esegue il comando senza fare una finestra DOS pop-up sullo schermo. Il valore di ritorno viene inserito nello stack e ci sono un paio di modi in cui è possibile accedere anche all'output del programma (se esiste).

Non c'è un sacco di informazioni sul plugin sul sito NSIS che ho potuto trovare, ma il seguente collegamento dovrebbe iniziare nella giusta direzione:

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

Edit:

Ho notato che hai chiesto specificamente un comando COPY che è un comando interno DOS, il che significa che non sarai in grado di eseguirlo come ho fatto con il ping. Potrei sbagliarmi ma non dovresti aver bisogno di usare programmi esterni per eseguire comandi di base come questo. Dovresti essere in grado di replicare la maggior parte dei comandi interni usando i comandi NSIS.

per esempio per copiare un file (o più file) utilizzare il comando NSIS: CopyFiles

Il NSIS Scripting Reference è tuo amico :) (Così è Ctrl + F)

+0

L'opzione giusta per eseguire un'applicazione senza visualizzare il prompt dei comandi –