NSIS - Set the working directory for a process before running it

给你一囗甜甜゛ 提交于 2019-12-08 04:55:27

问题


As above. I'm specifically running a Java program using ExecWait, by invoking java.exe and passing the classname. The application I'm running relies on relative paths and has to be run from a specific directory, however when I directly call java, it simply uses the installer location as the current directory and fails.

Is there a way to get around this?

Update: Here's my commandline:

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

回答1:


SetOutPath sets the current/working directory for the process, it should be inherited by the child process...

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

or

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


来源:https://stackoverflow.com/questions/8655408/nsis-set-the-working-directory-for-a-process-before-running-it

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!