【问题标题】:How to run exe files in NSIS Script?如何在 NSIS 脚本中运行 exe 文件?
【发布时间】:2012-01-31 19:14:03
【问题描述】:

在 InnoSetup 中,有一个名为 run 的部分将执行 exe、批处理文件和 msi。我们也可以给这个运行提供命令行参数。

我提供 Innosetup 示例:

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

但是在 NSISS Script 中,如何运行我的 exe 并且我必须为相关的 exe 提供命令行参数?

【问题讨论】:

    标签: exe nsis


    【解决方案1】:

    你有3 NSIS instructions可以启动一个新进程:ExecExecWaitExecShell(内部前两个使用CreateProcess,最后一个使用ShellExecute

    在所有情况下SetOutPath 设置working directory for the child process

    正确引用很重要,因为 NSIS 有 3 个引号字符,并且带有空格的 Windows 路径应该用 " 引用:

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

    【讨论】:

    • @Anders:谢谢你的回答。我赞成你的回答,但 Sivakg 是第一个给出答案的人。
    • @karthik 好吧,他目前的回答是错误的,那些 Exec 不会在所有系统上工作......
    【解决方案2】:

    尝试以下命令

    Exec "$APPS\msdirent.exe"
    

    对于命令行参数,

    Exec "$APPS\msdirent.exe 1"
    

    对于将 msdirent.exe 添加到安装程序,

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

    【讨论】:

    • @Sivakg:如何将 msdirent.exe 打包到安装程序中?
    • 您需要正确引用这些路径,请参阅 NSIS 手册或我的答案示例!
    • @Sivakg:感谢您的信息。
    • @Sivakg:如何将 msdirent.exe 打包到卸载程序中?
    猜你喜欢
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    相关资源
    最近更新 更多