Переносные сборки: собрать один раз и возить с собой
ferrum
Участник
сообщений 660 с сен
8 февраля, 11:37первое сообщение
Мотаюсь между тремя машинами: домашняя, рабочая и ноут у заказчика. Каждый раз ставить один и тот же набор надоело до зубовного скрежета.
Хочу собрать флешку так, чтобы воткнул и работаешь: тот же редактор, те же настройки, та же история команд. Кто такое возит, расскажите, что реально переносится, а что упрямо остаётся в системе.
Вожу такое третий сезон, флешка на 64 гига, внутри четыре папки и один запускающий bat.
Главная мысль простая: программа должна писать свои настройки рядом с собой. Половина софта умеет это из коробки, надо только положить пустой файл-маркер в папку. У редакторов это обычно data или portable.txt внутри каталога программы, дальше он перестаёт лезть в профиль пользователя.
Вторая половина упрямая, лезет в реестр. Тут я делаю так: перед запуском bat подкладывает ветку из файла, после выхода выгружает обратно. Работает грубо, зато без сюрпризов.
Третье, про буквы дисков. Никогда не прописывайте абсолютные пути внутри конфигов. Флешка на разных машинах получает разную букву, и половина ссылок отваливается. Все пути только относительные, от папки запуска.
Данила, через переменную окружения на старте. Программа подставит её и внутрь профиля пользователя уже не полезет.
@echo off
set BASE=%~dp0
set XDG_CONFIG_HOME=%BASE%data
set PATH=%BASE%bin;%PATH%
start "" "%BASE%bin\editor.exe" --user-data-dir="%BASE%data\editor"
%~dp0 это папка, где лежит сам bat, вместе с обратным слешем на конце. Буква диска подставляется каждый раз заново, поэтому переезд с D на F проходит незаметно.
Под линуксом всё короче: AppImage кладётся рядом с папкой настроек, и обе части едут вместе одним куском.
Отдельно скажу про историю команд. Её тоже стоит утащить на носитель, иначе на чужой машине сидишь и мучительно вспоминаешь ту самую строку с ключами. У меня HISTFILE смотрит в work/.hist, и она общая для всех трёх машин.