2012-07-16 34 views
12

Estoy creando mi primer script NSI y me pregunto si puedo ejecutar un comando de línea de comando desde NSIS o ¿debería ejecutar un archivo por lotes? Realmente no sé por dónde empezar y otros temas similares me han pasado un poco por la cabeza.Ejecutar comando de línea de comando desde NSIS

+0

El [respuesta aquí] (http: //stackoverflow.com/a/10900198/62576) podría ayudar. Funciona para una aplicación de línea de comandos muy bien. –

Respuesta

8

Trate de usar exec comando http://nsis.sourceforge.net/Docs/Chapter4.html:

4.9.1.2 Exec

comando

ejecutar el programa especificado y continuar inmediatamente. Tenga en cuenta que el archivo especificado debe existir en el sistema de destino, no en el sistema de compilación. $OUTDIR se utiliza para el directorio de trabajo. El indicador de error se establece si el proceso no se pudo iniciar. Tenga en cuenta que si el comando puede tener espacios, debe ponerlo entre comillas para delimitarlo de los parámetros. por ejemplo: Exec '"$INSTDIR\command.exe" parameters'. Si no lo pone entre comillas, no funcionará en Windows 9x con o sin parámetros.

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

bien, esperaba poder controlar la línea de comando desde .nsi y hacer algo como esto: "copy/b someprogram.exe +" Parece que tendré que hacerlo desde un archivo por lotes. – user1457296

+3

¿has probado este 'Exec' cmd/k copy/b ... '? – zenpoy

10

Recomendaría echarle un vistazo al complemento nsExec. Hace poco tuve una situación en la que necesitaba hacer ping a un servidor desde un script de NSIS, y el siguiente código funcionó perfectamente para mí.

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

La ventaja de utilizar nsExec es que se ejecuta el comando sin hacer un cuadro de dos pop-up en la pantalla. El valor de retorno se inserta en la pila, y hay un par de formas diferentes en las que también se puede acceder a la salida del programa (si existe).

No hay una gran cantidad de información sobre el plugin en el sitio web NSIS que he podido encontrar, pero el siguiente enlace debe empezar en la dirección correcta:

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

Editar:

Me di cuenta de que me ha preguntado específicamente sobre un comando COPY que es un comando interno de DOS, lo que significa que no podrá ejecutarlo como hice con ping. Puede que me equivoque, pero no debería necesitar usar ningún programa externo para llevar a cabo comandos básicos como este. Debería poder replicar la mayoría de los comandos internos usando comandos NSIS.

por ejemplo, para copiar un archivo (o varios archivos) utilizar el comando NSIS: CopyFiles

El NSIS Scripting Reference es su amigo :) (Así es Ctrl + F)

+0

Simplemente la opción correcta para ejecutar una aplicación sin mostrar el símbolo del sistema –

Cuestiones relacionadas