2011-12-28 90 views
1

如上所述。 我使用ExecWait专门运行Java程序,通过调用java.exe并传递类名。我正在运行的应用程序依赖于相对路径,必须从特定目录运行,但是当我直接调用java时,它只是使用安装程序位置作为当前目录并失败。NSIS - 在运行之前设置进程的工作目录

有没有办法解决这个问题?

更新:这是我的命令行:

ExecWait "$INSTDIR\MyApp\jre\bin\java.exe -cp $INSTDIR\MyApp\lib\*; MyJavaClassName" 
+0

你能发布一些命令行吗? – korifey 2011-12-28 12:03:58

+0

完成后,我只是调用我的应用程序的捆绑JRE以及类名称。 – Rex 2011-12-29 04:49:09

+1

你应该修复你的报价只是为了安全:ExecWait'“$ instdir \ app.exe”“参数1”参数2“参数m3”'(路径等应引用) – Anders 2011-12-29 09:35:13

回答

10

SetOutPath设置当前/工作目录的过程中,应该由子进程继承...

Push $OUTDIR 
SetOutPath $myspecialdir 
ExecWait '"$instdir\myapp.exe"' 
Pop $OUTDIR 
SetOutPath $OUTDIR # Optional if working directory does not matter for the rest of the code 

SetOutPath $myspecialdir 
ExecWait '"$instdir\myapp.exe"' 
SetOutPath $instdir 
+0

谢谢,我不知道这也会设置当前目录:) – Rex 2011-12-29 06:47:28