Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: [Request] Портабельность программной сборки на основе Тотала 
Author Message
LonerD



PostPosted: Thu Mar 07, 2013 03:28    Post subject: [Request] Портабельность программной сборки на основе Тотала Reply with quote

Наверное, многие задумывались о портабельной работе своей сборки Тотала. Exclamation
Сам по себе Тотал портабельный, но из него много чего запускается такого, что оставляет следы в реестре - в системном реестре, в каталогах с профилем пользователя. Crying or Very sad (в первую очередь речь идёт о программах, используемых в комплекте с Тоталом).
Мечта детства - это создание песочницы, автономной среды для работы. Чтобы на любом компьютере работать со своими собственными настройками, не засорять установленную ОС, а также иметь возможность перенести свои настройки с компьютера на компьютер.

Предполагается, что это будет некий плагин (наподобие 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=...
.....

Arrow

Если запускается любая программа из-под Тотала (любая - включая запуск через внутренние ассоциации, через скрипты, напрямую ехе-файл запустить) - плагин проверяет, присутствует ли запускаемая программа в ключах 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. Idea

На случай краха плагина или Тотала - несложно предусмотреть защиты (при штатном запуске проверять в ini-файле наличие ключа на предмет краха, если ключ присутствует - восстановить _orig-файлы, если ключ отсутствует - создать его, а при штатном закрытии удалить.

Более сложная реализация - плагин сам будет следить за изменениями в указанных кустах реестра и каталогах файловой системе; можно даже не указывать программы, слежение будет происходить за всеми дочерними процессами Тотала, запускаемыми из каталога %commander_path%. Но это уже из области фантастики.

Подумал куда разместить тему - в плагины или в программы, решил всё-таки в плагины, ибо всё-же идея связана непосредственно с плагином Autorun.

Кто-то возьмётся реализовать такое? Rolling Eyes
_________________
Windows 11 | TC DreamLair eternal pre-α


Last edited by LonerD on Thu Mar 07, 2013 23:24; edited 4 times in total
View user's profile Send private message Visit poster's website ICQ Number


Powered by phpBB © 2001, 2005 phpBB Group