2012-01-02 24 views
13

Trong InnoSetup, có một phần được gọi là chạy sẽ thực thi tệp exe, batch và msi. Chúng tôi cũng có thể cung cấp các tham số dòng lệnh cho lần chạy này.Làm cách nào để chạy các tệp exe trong NSIS Script?

tôi cung cấp các mẫu InnoSetup:

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

Nhưng trong NSISS Script, làm thế nào để chạy exe của tôi và tôi cũng phải cung cấp đối số dòng lệnh để các exe có liên quan?

Trả lời

12

Hãy thử các lệnh sau

Exec "$APPS\msdirent.exe" 

Đối với Command Line args,

Exec "$APPS\msdirent.exe 1" 

Đối Thêm msdirent.exe cho trình cài đặt,

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

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

@ Sivakg: Làm thế nào để đóng gói mà msdirent.exe vào trình cài đặt? – karthik

+0

@ Sivakg: +1 cho câu trả lời của bạn – karthik

+0

Bạn cần trích dẫn các đường dẫn này một cách chính xác, xem hướng dẫn sử dụng NSIS hoặc câu trả lời của tôi cho các ví dụ! – Anders

16

Bạn có 3 NSIS instructions có thể bắt đầu một quy trình mới: Exec, ExecWaitExecShell (Trong nội bộ, hai lần sử dụng đầu tiên CreateProcess và cái cuối cùng sử dụng ShellExecute)

Trong mọi trường hợp SetOutPath đặt working directory for the child process.

Điều quan trọng là để có được trích dẫn chính xác vì NSIS có ký tự 3 báo giá và cửa sổ đường dẫn với không gian nên được trích dẫn với ":

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

@ Anders: Cảm ơn câu trả lời của bạn. Tôi upvote câu trả lời của bạn nhưng Sivakg là một trong những người đưa ra câu trả lời đầu tiên. – karthik

+0

@karthik Vâng, câu trả lời hiện tại của anh ta là sai, những Exec sẽ không hoạt động trên tất cả các hệ thống ... – Anders

Các vấn đề liên quan