Установщик изменяет переменную PATH, изменения не отображаются в командной оболочке

StackOverflow https://stackoverflow.com/questions/40311

Вопрос

Я добавил настраиваемое действие установки в свой установщик, чтобы добавить один из моих каталогов установки в переменную среды System PATH. После того, как я запустил установщик, переменная PATH отражает изменения (когда я обращаюсь к ней через апплет Control Panel :: System), но когда я запускаю новую командную оболочку, переменная PATH не отражает изменения. Есть ли что-то, что я не могу сделать, что вызывает это?

Это было полезно?

Решение

Я думаю, это зависит от того, как вы запускаете новую командную оболочку. Например, при изменении переменной среды PATH в разделе «Свойства системы» это изменение не отражается до тех пор, пока вы не откроете новую командную строку. Я думаю, что когда вы запускаете новый " cmd " В процессе (например, из диалогового окна «Выполнить») вы получите свежую копию всех переменных среды, но если вы запустите командную строку другим способом, то этого не произойдет.

Для того, чтобы что-то сделать с помощью такого сценария, вам может потребоваться перезагрузка, прежде чем вы заметите изменение.

Другие советы

Как вы запускаете командную оболочку? С помощью TaskManager?

Я подозреваю, что вы можете запускать его из Проводника - если я правильно помню, это может означать, что вы наследуете родительские процессы (в данном случае Windows Explorer) переменную PATH. Так как это было установлено до запуска вашего установщика, вы видите старое значение.

Не уверен, поможет ли это ...

http://support.microsoft.com/kb/310519 говорит, что для системы Переменные среды (одной из которых является PATH) требуют перезапуска, хотя у меня есть ощущение, что выхода из системы и включения может быть достаточно.

Почему вы используете CustomAction для этого? Установщик Windows поддерживает изменение переменных среды. Кроме того, я думаю, что установщик Windows отправляет широковещательное сообщение для обновления системы при изменении переменных среды. Это может означать, что вам не нужно перезагружаться ... но прошло много времени с тех пор, как я попробовал YMMV.

Как вы добавляете переменную среды?

Без использования каких-либо внешних инструментов вы можете добавить его в реестр . Затем ваш тест открытия нового командного окна будет отражать ваши изменения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top