LonerD

|
Posted: Thu Mar 07, 2013 03:28 Post subject: [Request] Портабельность программной сборки на основе Тотала |
|
|
Наверное, многие задумывались о портабельной работе своей сборки Тотала.
Сам по себе Тотал портабельный, но из него много чего запускается такого, что оставляет следы в реестре - в системном реестре, в каталогах с профилем пользователя. (в первую очередь речь идёт о программах, используемых в комплекте с Тоталом).
Мечта детства - это создание песочницы, автономной среды для работы. Чтобы на любом компьютере работать со своими собственными настройками, не засорять установленную ОС, а также иметь возможность перенести свои настройки с компьютера на компьютер.
Предполагается, что это будет некий плагин (наподобие Autorun), стартующий вместе с Тоталом, или же скорее подплагин для плагина Autorun или просто отдельная программа, которая будет запускаться через плагин Autorun и висеть всё время в памяти, выгружаясь после закрытия Тотала через тот же Autorun.
По аналогии с существующими реализациями - некая расширенная реализация kIT Portable Launcher/kitRun (исходники которого доступны), только с возможностью не запускать себя любимого с каждой программой, а с постоянным "висением" в памяти и перехватом дочерних процессов Тотала.
Сей плагин (назовём его плагином) будет постоянно висеть в памяти и следить за запускаемыми из-под Тотала программами, указанными пользователем в некоем файле настроек. Как правило, это те программы, которые находятся в одном каталоге с Тоталом, то есть включены в свою собственную сборку.
Процесс следующий:
Пользователь создаёт ini-файл, в котором указывает отслеживаемые программы, ключи реестра для каждой из программ и каталоги/файлы в каталоге с профилем пользователя.
Примерно вот так:
Code: | [Programs]
Prog_01=%commander_path%\exe\UltraTCEditors\Ultra TC Editors.exe
Prog_01_reg=[HKCU\Software\Ultra_TC_Editors]
Prog_01_reg_TC=%commander_path%\Settings\UltraTCEditors.reg
Prog_01_reg_orig=%commander_path%\Regs\UltraTCEditors_orig.reg
Prog_01_files=%$Local_Appdata%\SettingsDir\
Prog_01_files_TC=%commander_path%\Settings\SettingsDir\
Prog_01_reg_orig=%commander_path%\Settings\SettingsDir_orig\
Prog_02=...
..... |
Если запускается любая программа из-под Тотала (любая - включая запуск через внутренние ассоциации, через скрипты, напрямую ехе-файл запустить) - плагин проверяет, присутствует ли запускаемая программа в ключах Prog_хх.
Если не присутствует - программа запускается и работает.
Если присуствует - то перед запуском программы плагин перехватывает запуск программы и выгружает её текущие настройки (записи в реестре и записи в каталоге с профилем пользователя). То есть сохраняет значение ключа Prog_01_reg в файл Prog_01_reg_orig, содержимое каталога %$Local_Appdata%\SettingsDir\ - в каталог %commander_path%\Settings\SettingsDir_orig\
После чего в реестр вносится файл, указанный в ключе Prog_01_reg_TC и в каталог, указанный в ключе Prog_01_files копируется каталог, указанный в ключе Prog_01_files_TC.
Далее программа запускается и работает. А плагин неустанно следит за ней. Как только программа закрывается - плагин производит обратный процесс - сохраняет текущие настройки и возвращает те, которые были до запуска программы, удаляет файлы и каталоги, указанные в ключах Prog_01_reg_orig и Prog_01_reg_orig.
На случай краха плагина или Тотала - несложно предусмотреть защиты (при штатном запуске проверять в ini-файле наличие ключа на предмет краха, если ключ присутствует - восстановить _orig-файлы, если ключ отсутствует - создать его, а при штатном закрытии удалить.
Более сложная реализация - плагин сам будет следить за изменениями в указанных кустах реестра и каталогах файловой системе; можно даже не указывать программы, слежение будет происходить за всеми дочерними процессами Тотала, запускаемыми из каталога %commander_path%. Но это уже из области фантастики.
Подумал куда разместить тему - в плагины или в программы, решил всё-таки в плагины, ибо всё-же идея связана непосредственно с плагином Autorun.
Кто-то возьмётся реализовать такое?  _________________ Windows 11 | TC DreamLair eternal pre-α
Last edited by LonerD on Thu Mar 07, 2013 23:24; edited 4 times in total |
|