执行器不在NSIS安装程序中工作

执行器不在NSIS安装程序中工作,nsis,Nsis,我是NSIS新手,我尝试在安装时执行一个可执行文件,类似于预请求。我尝试了下面的代码,它将exe复制到安装路径,但它没有执行它 Section "example" example SetOutPath "$INSTDIR" File "setup.exe" Exec "$INSTDIR\setup.exe" BringToFront SectionEnd $INSTDIR变量是否映射到名称中包含空格的目录?如果是这样,您应该添加简单引号,将双引号包括在Exec参数中: Exe

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

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

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

Exec '"$INSTDIR\setup.exe"'

Seki的回答基本上是正确的,我想补充一点,Exec/ExecWait的正确语法是始终
Exec'c:\path\app.exe“param1”par am2“param3”

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

如果空格/缺少引号不是问题所在,那么您可能还需要了解一些其他事项:

  • $OUTDIR是新进程的工作目录(SetOutPath设置此目录)
  • 缺少dll等(请检查)

Mmmh,感谢您指出双引号始终是必需的。在最新版本的帮助下,它并不像在4.9.1.2“[…]中所说的那样明显。注意,如果命令可以有空格,则应将其放在引号中,以将其与参数分隔开来。[…]”,并指出引号对于win9x是必需的。也许可以更新帮助?