NSIS - установить рабочий каталог для процесса перед его запуском - PullRequest
1 голос
/ 28 декабря 2011

Как указано выше.Я специально запускаю программу на Java, используя ExecWait, вызывая java.exe и передавая имя класса.Приложение, которое я запускаю, использует относительные пути и должно запускаться из определенного каталога, однако, когда я напрямую вызываю java, оно просто использует местоположение установщика в качестве текущего каталога и завершается ошибкой.

Есть ли способ обойти это?

Обновление: Вот моя командная строка:

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

1 Ответ

10 голосов
/ 28 декабря 2011

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
...