Постоянное изменение пользовательской переменной окружения% PATH% через пакет или Python - PullRequest
8 голосов
/ 21 июля 2009

У меня были проблемы с тем, чтобы мои пользователи устанавливали переменную среды PATH вручную, я ищу способ сделать это автоматически. Пакетный файл был бы предпочтительнее, так как это потребовало бы, чтобы они запускали его сами (с предупреждением о том, что они делают), но дополнение к setup.py также приемлемо.

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

Ответы [ 4 ]

5 голосов
/ 21 июля 2009

Как сказал Дэвид, есть инструмент SETX, который вы можете получить из Windows Resource Kit.

Однако я обнаружил, что у SETX иногда возникают проблемы (например, сбой). Я точно не понял, в чем проблема, но я подозреваю, что это проблема размера (например, если вы пытаетесь установить переменную - в моем случае это PATH) на слишком большое значение, например> 1024, что-то нечетное символы).

Я нашел два других исполняемых файла, которые могут делать то же самое. Мой любимый, в частности, SetEnv Джонатана «Дарка» Уилкса в CodeProject. Он сделал его весьма полезным, с хорошей функциональностью и совместимым со всеми системами Windows - я также предложил некоторые функции. :)

Другой вариант, если вам это нужно, - это сделать это вручную (фактически добавив элемент в реестр и затем передав WM_SETTINGCHANGE в окна верхнего уровня, или перезапустив оболочку / перезагрузившись ). Однако я думаю, что SetEnv в BATCH-файле - ваш лучший выбор. ;)

5 голосов
/ 23 декабря 2010

Итак, поскольку у меня были трудности с тем, чтобы мои пользователи настраивали PATH вручную, я ищу способ сделать это автоматически.

Раздел реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths (а также HKEY_CURRENT_USER\...) позволяет присоединить путь к приложению к имени исполняемого файла.

Всякий раз, когда запускается исполняемый файл с заданным именем, путь приложения добавляется к переменной окружения PATH этого исполняемого файла.

2 голосов
/ 06 июня 2011

Я только что натолкнулся на этот вопрос, и мне не понравились какие-либо из доступных вариантов, поэтому я решил написать свое собственное решение.

(SetEnv был бы хорош, но мне не нравилась лицензия non-libre, и я всегда предпочел бы не вызывать подпроцесс ... Я не возражал бы называть SetEnv в качестве подпроцесса, но, согласно Википедии, лицензия, которую она использует, не является libre, потому что в ней есть какое-то положение «не делай зла», и такого рода юридически неоднозначные ограничения, по моему мнению, всегда являются бомбой замедленного действия.)

Вот небольшой MIT-лицензированный Python класс , чтобы скрыть работу по непосредственному изменению реестра и отправке WM_SETTINGCHANGE. (Подходит для использования в setup.py)

2 голосов
/ 21 июля 2009

С этого сайта :

Использование дополнительного инструмента Setx.exe

Не входит в стандартную Windows Настройка XP, но инструмент командной строки называется setx.exe включен в Поддержка Windows XP с пакетом обновления 2 Инструменты. Этот инструмент расширяет набор команда, так что постоянные изменения в переменные среды могут быть сделаны. Например, чтобы добавить папку C: \ New Папка к пути, команда будет быть

setx path "%PATH%;C:\New Folder"

Похоже, это сработает для того, что вы хотите сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...