【问题标题】:Exec not working in NSIS installerExec 在 NSIS 安装程序中不起作用
【发布时间】:2012-06-05 12:25:34
【问题描述】:

我是 NSIS 新手,我正在尝试在安装时执行可执行文件,类似于预请求。我尝试了下面的代码,它将 exe 复制到安装路径但它没有执行它。

Section "example" example
  SetOutPath "$INSTDIR"
  File "setup.exe"
  Exec "$INSTDIR\setup.exe"
  BringToFront
SectionEnd 

【问题讨论】:

    标签: nsis


    【解决方案1】:

    Seki 的回答大部分是正确的,我想补充一点,Exec/ExecWait 的正确语法是 always Exec '"c:\path\app.exe" param1 "par am2" param3'

    参数当然是可选的,但应该始终引用应用程序的路径,这不仅是因为在您的情况下 $INSTDIR 可以包含空格,而且至少在 Win9x 上,无论您不引用它都会失败(根据到 NSIS 手册)

    如果空格/缺少引号不是问题,那么您可能还需要考虑其他几件事:

    • $OUTDIR 是新进程的工作目录(SetOutPath 设置这个)
    • 缺少 dll 等(与 Process Monitor 核对)

    【讨论】:

    • 嗯,感谢您指出双引号始终是强制性的。在最新版本的帮助下,它并不是那么明显,因为它在 4.9.1.2 “[...] 注意,如果命令可以有空格,您 应该 将其放在引号中以分隔它来自parameters.[...]”,并且还表明引号对于win9x是强制性的。也许可以更新帮助?
    【解决方案2】:

    $INSTDIR 变量是否映射到名称中包含空格的目录?如果是这样,您应该添加简单引号以将双引号包含到 Execargument 中:

    Exec '"$INSTDIR\setup.exe"'
    

    【讨论】:

      猜你喜欢
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多