Получение переменной PATH в скрипте NSIS - PullRequest
0 голосов
/ 30 августа 2018

Я не могу понять, как добраться до переменной PATH в сценарии NSIS. Вот что я пробовал, но он возвращает «ошибку» в $ 0:

nsExec::ExecToStack 'echo %PATH%'
Pop $0
MessageBox MB_OK "$0"

Также пытался экранировать знаки% с помощью $ s, но безрезультатно. Помещение только некоторой строки вместо% PATH% также не работает. Я видел предложенный пример, такой же, как этот, использующий Exec вместо ExecToStack, но это тоже не сработало. Чего мне не хватает?

1 Ответ

0 голосов
/ 30 августа 2018

NSIS уже имеет встроенную инструкцию для этого: ReadEnvStr $0 PATH.

ExecToStack не сработало, потому что echo - это внутренняя команда в cmd.exe, а не .exe. Вы должны выполнить его как cmd.exe /c echo %path%.

Помните, что% path% может быть длиннее ограничения строки NSIS, поэтому не следует записывать его обратно в реестр после сохранения его в переменной NSIS. Используйте плагин EnVar для безопасного изменения% path%.

...