2012-01-02 24 views
13

En InnoSetup, hay una parte llamada ejecutar que ejecutará el exe, archivo por lotes y msi. También podemos dar parámetros de línea de comando a esta ejecución.Cómo ejecutar archivos EXE en secuencias de comandos NSIS?

que proporcionan la muestra InnoSetup:

[Run] 
Filename: "{app}\msdirent.exe "; 
Filename: "msiexec.exe"; Parameters: "/i ""{tmp}\NETCFSetupv2.msi""" ; Check:ShouldInstallComCtlUpdate ; 

Pero en NSISS Script, cómo ejecutar mi exe y también tengo que proporcionar argumentos de línea de comandos para el ejecutable en cuestión?

Respuesta

12

Pruebe los siguientes comandos

Exec "$APPS\msdirent.exe" 

Para la línea de comandos, Args

Exec "$APPS\msdirent.exe 1" 

para añadir msdirent.exe al instalador,

SetOutPath "$APPS" 
File "localpath\msdirent.exe" 

Exec "$APPS\msdirent.exe 1" 
+1

@ Sivakg: Cómo empacar que msdirent.exe en el instalador? – karthik

+0

@ Sivakg: +1 para su respuesta – karthik

+0

¡Debe citar estas rutas correctamente, consulte el manual de NSIS o mi respuesta para obtener ejemplos! – Anders

16

Tienes 3 NSIS instructions que pueden iniciar una nuevo proceso: Exec, ExecWait y ExecShell (Internamente, la primera de dos CreateProcess uso y el último utiliza ShellExecute)

En todos los casos SetOutPath establece el working directory for the child process.

Es importante para obtener el correcto ya que citando NSIS tiene caracteres 3 de cotización y caminos ventanas con espacios deben ser citados con ":

ExecWait '"$instdir\myapp.exe"' 
Exec '"$instdir\otherapp.exe" param1 "par am 2" param3' 
+0

@ Anders: gracias por su respuesta. Renuncié a su respuesta, pero Sivakg es quien primero da la respuesta. – karthik

+0

@karthik Bueno, su respuesta actual es incorrecta, esos Exec no funcionarán en todos los sistemas ... – Anders

Cuestiones relacionadas