Я использую файл .bat для автоматизации некоторых задач для моего движка (после того, как он был только что клонирован из репозитория). Одной из задач является установка переменных окружения. Я использую команду SETX и устанавливаю путь именованной переменной как %CD%, то есть каталог, из которого был запущен установщик.
Это хорошо работает, хотя пользователю нужно log-off/log-on, что может раздражать. Этот цикл log-off/log-on не требуется, если переменная установлена как системная переменная (я не уверен, почему, но перезапуск Visual Studio не влияет на переменные пользовательской среды... то есть он не обнаруживает изменений, но обнаружит изменения в системных переменных ). Поэтому я приступил к использованию команды -m. К сожалению, для этого требуется, чтобы пакетный файл имел права администратора. Не проблема; Я запускал командный файл от имени администратора. Итак, теперь я столкнулся с проблемой. Текущая переменная каталога, %CD%, изменена с каталога, из которого была запущена программа установки, на C:\Windows\System32.
Итак, теперь к вопросу. Как установить системные переменные среды с помощью пакетного файла, который использует %CD% без значения по умолчанию C:\Windows\System32. Просто хочу отметить, что довольно много людей используют программу установки, и я хотел бы, чтобы этот процесс был максимально безболезненным и безошибочным. Это означает, что ручной ввод не является предпочтительным. В настоящее время при запуске без прав администратора и без -m требуется только цикл log-off/log-on. В остальном все автоматизировано.