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 

[Request] Портабельность программной сборки на основе Тотала

 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: 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
_________________
Win11 x64 Eng | TC DreamLair eternal pre-α


Last edited by LonerD on Thu Mar 07, 2013 23:24; edited 4 times in total
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Thu Mar 07, 2013 04:03    Post subject: Reply with quote

Уже реализовано. Смотри в сторону ThinApp или аналогов.
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Thu Mar 07, 2013 06:22    Post subject: Reply with quote

D1P wrote:
Смотри в сторону ThinApp

Э-не. Мыть руки перед едой, не трогать каку и держаться подальше от ThinApp. Laughing
Возможно, оно и хорошее... возможно кто-то где-то и умеет делать рабочие приложения на нём. Но мне таковые из испробованного множества пока не встречались. Многие "портаблы" оставляют после себя гадости в системе (то есть работают непортабельно). Все запускаются долго, причём запускаются лишь когда звёзды сойдутся (не знаю в чём причина - но под Win8 не запустилась ни одна, хотя они же под Win7 работали).

D1P wrote:
или аналогов.

Например?
Я не ищу сложностей и полных эмуляций рабочей среды. Достаточно базовой портабельности запускаемых приложений на уровне сохранения-восстановления веток реестра и каталогов с настройками (на уровне PortableApps). Единый запускаемый файл (лучше даже плагин чтобы не висел в процессах) который отслеживает активность программ. Централизованное хранение всех настроек запускаемых программ (чтобы не прописывать ключи и пути для ланчера каждый раз).
_________________
Win11 x64 Eng | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
jentoso



Joined: 20 Dec 2007
Posts: 351

Post (Separately) Posted: Thu Mar 07, 2013 07:06    Post subject: Reply with quote

LonerD, а как kIT Portable Launcher
_________________
TC 11.03 combo, Windows 10 x64
Back to top
View user's profile Send private message
KopBuH



Joined: 02 Jul 2010
Posts: 127
Location: Tashkent, Uzbekistan

Post (Separately) Posted: Thu Mar 07, 2013 09:09    Post subject: Reply with quote

LonerD wrote:

Я не ищу сложностей и полных эмуляций рабочей среды. Достаточно базовой портабельности запускаемых приложений на уровне сохранения-восстановления веток реестра и каталогов с настройками (на уровне PortableApps). Единый запускаемый файл (лучше даже плагин чтобы не висел в процессах) который отслеживает активность программ. Централизованное хранение всех настроек запускаемых программ (чтобы не прописывать ключи и пути для ланчера каждый раз).

ты запросил что-то вроде TotalUninstall, но не только с отслеживанием, но еще и с откатом пользовательских настроек Smile

это должен быть целый монитор системы (как например Мониторинг активности у АВ Касперского Very Happy )
а вот насчет слежения из каталога файла %commander_exe% - легче отследить процессы по списку, запущенные из ТС.

не думаю, что кто-то за это возьмется)
_________________
Оглянись вокруг, посмотри, подумай, поблагодари.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Thu Mar 07, 2013 10:47    Post subject: Reply with quote

С помощью ThinApp проще простого виртуализовать весь реестр и папки профиля, системы и т.п. и сохранять песочницу рядом с экзешником песочницы, около метра будет весить экзешник, в него надо поместить лишь прокси-лаунчер, который запустит тотал с папки песочницы.

Но что если пользователь захочет обратиться к физическим ключам или папкам?
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Thu Mar 07, 2013 11:13    Post subject: Reply with quote

LonerD wrote:
Например?

Пройди по ссылке в комменте до раздела "Альтернативы".
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Thu Mar 07, 2013 18:58    Post subject: Reply with quote

jentoso
Quote:
а как kIT Portable Launcher

Да, - я ведь об этом и пишу, только назвал программу сокращённо kiTRun (по имени ехе-шника). Арсен уже полтора года как не развивает функционал Launcherа. Одного реестра недостаточно.
Нужно также сохранение файловых настроек. Плюс хранение списка всех настроек, ключей реестра, перечня файлов в одном месте (оптимально - в ini-файле). Плюс запуск одной копии программы, а не кучи процессов для каждого приложения.

KopBuH
Quote:
ты запросил что-то вроде TotalUninstall

В идеале - да, только . Но про "что-то вроде TotalUninstall" - я упомянул мелким шрифтом с пометкой "уже из области фантастики."

Quote:
а вот насчет слежения из каталога файла %commander_exe% - легче отследить процессы по списку, запущенные из ТС.

Да, отслеживать дочерние процессы Тотала. Причём не все процессы, а только те, которые являются составной частью сборки, то есть программы, которые запускаются из каталога %commander_path%.


MVV
Quote:
С помощью ThinApp проще простого виртуализовать весь реестр и папки профиля, системы и т.п.

Так в том и дело, что не хочется ВЕСЬ реестр и папки. Достаточно отслеживать только те немногие программы, которые запущены в данный момент.

Quote:
Но что если пользователь захочет обратиться к физическим ключам или папкам?

То есть например если запущена программа с портабелизацией из-под Тотала и в это же время пользователь запустит ещё одну копию, установленную в системе? Значит, всё немножко перепутается. В общем, то же что и при работе, например, PortableApps.

D1P
Quote:
Пройди по ссылке в комменте до раздела "Альтернативы".

Пройдусь, но выглядят монструозно. Мне бы что-то вроде резидентного PortableApps.
_________________
Win11 x64 Eng | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
Mellomann



Joined: 07 Sep 2009
Posts: 708

Post (Separately) Posted: Thu Mar 07, 2013 21:38    Post subject: Reply with quote

Quote:
что-то вроде резидентного PortableApps
Ну так вот он и ответ! Laughing

А по большому счёту - глупо загонять тотал в изоляцию, ибо, как уже было сказано, получается реальная проблема физического доступа к изолированным местам в случае надобности, а перезапустить тотал или запустить ещё один - чаще всего далеко не лучшая затея.

LonerD wrote:
держаться подальше от ThinApp.
Возможно, оно и хорошее... возможно кто-то где-то и умеет делать рабочие приложения на нём.
Ну, я делаю и весьма беспроблемно. Но загонять в контейнер изначально портативную программу - полнейшая чушь и потеря лишнего процевого времени при запуске. Плюс к тому, вылезут ещё разные исключения в изоляциях дочерних процессов. Нафиг-нафиг. В контейнер нужно совать ТОЛЬКО то, что требуется изолировать, и НЕ БОЛЕЕ того.

Уж самое разумное и рациональное - это изолировать каждого нарушителя спокойствия отдельно (благо, портативить можно практически всё!) по своим углам. И будет себе покоится с миром, мирно трудясь на фоне, портативный 2007 офис (аж на целых 200-300 мбайт) или даже 2003й (и того меньше сотни), портативный фотошоп, нюрка, и кучи, кучи прочего софта, который запортаблить ещё проще...
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Thu Mar 07, 2013 23:28    Post subject: Reply with quote

Mellomann
Quote:
Ну так вот он и ответ

Насколько я понимаю, PortableApps - это один ланчер для одного приложения. Запустится десять приложений - будет в памяти висеть 20 процессов. Не айс.
Насколько я понимаю работу PortableApps - реализовать запрошенное невозможно. Пойду ещё поищу базовые руководства, попробую освоить, хотя это совсем не то, что хотелось бы.

Quote:
Ну, я делаю и весьма беспроблемно.

А у меня всегда и везде никакие ThinApp не работают.
Как оказалось, приложения, сделанные старыми версиями ThinApp, под Win8 работать не могут. И разработчикам ThinApp плевать, что номер версии ОС изменился лишь на одну десятую, и по сути вся структура файловой системы и реестра полностью повторяет Win7. Несовместимость - и баста, переделывайте все ваши портаблы заново. Это не просто идиотизм со стороны разработчиков делать такое, это уже неизлечимый случай.

Quote:
В контейнер нужно совать ТОЛЬКО то, что требуется изолировать, и НЕ БОЛЕЕ того.

Не согласен. В контейнер не нужно совать НИЧЕГО. Всякие непрозрачные виртуализации не нужны.

Quote:
глупо загонять тотал в изоляцию, ибо, как уже было сказано, получается реальная проблема физического доступа к изолированным местам в случае надобности

Целиком согласен. Нужен лишь плагин, который следит за запуском программ и сохраняет-восстанавливает записи реестра и настройки.

Всё же предлагаю вернуться к первому сообщению темы и забыть про дискуссию о контейнерах. Немного уточнил и дополнил запрос с пояснениями на конкретном примере.
Неужели никого не интересует универсальная портабельность?
_________________
Win11 x64 Eng | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
Mellomann



Joined: 07 Sep 2009
Posts: 708

Post (Separately) Posted: Fri Mar 08, 2013 00:24    Post subject: Reply with quote

LonerD wrote:
старыми версиями ThinApp, под Win8 работать не могут

Это не старый тинап виноват, это в винде чё-то изменилось, что виртуализация больше не работает. В любом случае, ждём обновки.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group