Страница 1 из 1

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

Добавлено: Чт мар 07, 2013 03:28
LonerD
Наверное, многие задумывались о портабельной работе своей сборки Тотала. :!:
Сам по себе Тотал портабельный, но из него много чего запускается такого, что оставляет следы в реестре - в системном реестре, в каталогах с профилем пользователя. :cry: (в первую очередь речь идёт о программах, используемых в комплекте с Тоталом).
Мечта детства - это создание песочницы, автономной среды для работы. Чтобы на любом компьютере работать со своими собственными настройками, не засорять установленную ОС, а также иметь возможность перенести свои настройки с компьютера на компьютер.

Предполагается, что это будет некий плагин (наподобие Autorun), стартующий вместе с Тоталом, или же скорее подплагин для плагина Autorun или просто отдельная программа, которая будет запускаться через плагин Autorun и висеть всё время в памяти, выгружаясь после закрытия Тотала через тот же Autorun.
По аналогии с существующими реализациями - некая расширенная реализация kIT Portable Launcher/kitRun (исходники которого доступны), только с возможностью не запускать себя любимого с каждой программой, а с постоянным "висением" в памяти и перехватом дочерних процессов Тотала.

Сей плагин (назовём его плагином) будет постоянно висеть в памяти и следить за запускаемыми из-под Тотала программами, указанными пользователем в некоем файле настроек. Как правило, это те программы, которые находятся в одном каталоге с Тоталом, то есть включены в свою собственную сборку.

Процесс следующий:
Пользователь создаёт ini-файл, в котором указывает отслеживаемые программы, ключи реестра для каждой из программ и каталоги/файлы в каталоге с профилем пользователя.
Примерно вот так:

Код: Выделить всё

[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.

Кто-то возьмётся реализовать такое? :roll:

Добавлено: Чт мар 07, 2013 04:03
D1P
Уже реализовано. Смотри в сторону ThinApp или аналогов.

Добавлено: Чт мар 07, 2013 06:22
LonerD
D1P писал(а):Смотри в сторону ThinApp
Э-не. Мыть руки перед едой, не трогать каку и держаться подальше от ThinApp. :lol:
Возможно, оно и хорошее... возможно кто-то где-то и умеет делать рабочие приложения на нём. Но мне таковые из испробованного множества пока не встречались. Многие "портаблы" оставляют после себя гадости в системе (то есть работают непортабельно). Все запускаются долго, причём запускаются лишь когда звёзды сойдутся (не знаю в чём причина - но под Win8 не запустилась ни одна, хотя они же под Win7 работали).
D1P писал(а):или аналогов.
Например?
Я не ищу сложностей и полных эмуляций рабочей среды. Достаточно базовой портабельности запускаемых приложений на уровне сохранения-восстановления веток реестра и каталогов с настройками (на уровне PortableApps). Единый запускаемый файл (лучше даже плагин чтобы не висел в процессах) который отслеживает активность программ. Централизованное хранение всех настроек запускаемых программ (чтобы не прописывать ключи и пути для ланчера каждый раз).

Добавлено: Чт мар 07, 2013 07:06
jentoso
LonerD, а как kIT Portable Launcher

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

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

не думаю, что кто-то за это возьмется)

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

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

Добавлено: Чт мар 07, 2013 11:13
D1P
LonerD писал(а):Например?
Пройди по ссылке в комменте до раздела "Альтернативы".

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

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

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

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

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


MVV
С помощью ThinApp проще простого виртуализовать весь реестр и папки профиля, системы и т.п.
Так в том и дело, что не хочется ВЕСЬ реестр и папки. Достаточно отслеживать только те немногие программы, которые запущены в данный момент.
Но что если пользователь захочет обратиться к физическим ключам или папкам?
То есть например если запущена программа с портабелизацией из-под Тотала и в это же время пользователь запустит ещё одну копию, установленную в системе? Значит, всё немножко перепутается. В общем, то же что и при работе, например, PortableApps.

D1P
Пройди по ссылке в комменте до раздела "Альтернативы".
Пройдусь, но выглядят монструозно. Мне бы что-то вроде резидентного PortableApps.

Добавлено: Чт мар 07, 2013 21:38
Mellomann
что-то вроде резидентного PortableApps
Ну так вот он и ответ! :lol:

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

Уж самое разумное и рациональное - это изолировать каждого нарушителя спокойствия отдельно (благо, портативить можно практически всё!) по своим углам. И будет себе покоится с миром, мирно трудясь на фоне, портативный 2007 офис (аж на целых 200-300 мбайт) или даже 2003й (и того меньше сотни), портативный фотошоп, нюрка, и кучи, кучи прочего софта, который запортаблить ещё проще...

Добавлено: Чт мар 07, 2013 23:28
LonerD
Mellomann
Ну так вот он и ответ
Насколько я понимаю, PortableApps - это один ланчер для одного приложения. Запустится десять приложений - будет в памяти висеть 20 процессов. Не айс.
Насколько я понимаю работу PortableApps - реализовать запрошенное невозможно. Пойду ещё поищу базовые руководства, попробую освоить, хотя это совсем не то, что хотелось бы.
Ну, я делаю и весьма беспроблемно.
А у меня всегда и везде никакие ThinApp не работают.
Как оказалось, приложения, сделанные старыми версиями ThinApp, под Win8 работать не могут. И разработчикам ThinApp плевать, что номер версии ОС изменился лишь на одну десятую, и по сути вся структура файловой системы и реестра полностью повторяет Win7. Несовместимость - и баста, переделывайте все ваши портаблы заново. Это не просто идиотизм со стороны разработчиков делать такое, это уже неизлечимый случай.
В контейнер нужно совать ТОЛЬКО то, что требуется изолировать, и НЕ БОЛЕЕ того.
Не согласен. В контейнер не нужно совать НИЧЕГО. Всякие непрозрачные виртуализации не нужны.
глупо загонять тотал в изоляцию, ибо, как уже было сказано, получается реальная проблема физического доступа к изолированным местам в случае надобности
Целиком согласен. Нужен лишь плагин, который следит за запуском программ и сохраняет-восстанавливает записи реестра и настройки.

Всё же предлагаю вернуться к первому сообщению темы и забыть про дискуссию о контейнерах. Немного уточнил и дополнил запрос с пояснениями на конкретном примере.
Неужели никого не интересует универсальная портабельность?

Добавлено: Пт мар 08, 2013 00:24
Mellomann
LonerD писал(а):старыми версиями ThinApp, под Win8 работать не могут
Это не старый тинап виноват, это в винде чё-то изменилось, что виртуализация больше не работает. В любом случае, ждём обновки.