SamForum.org  
SamLab.ws
Заблокированные пользователи

Вернуться   SamForum.org > Дневники > Toluca
Важная информация

Оценить эту запись

Portable - это как? (часть II)

Запись от Toluca размещена 30.09.2010 в 10:54
Обновил(-а) Toluca 30.09.2010 в 22:35

... Продолжение. Начало ЗДЕСЬ

Не углубляясь с налета в методики более безопасного, чем выдирание, портирования, расставим базисные точки.


Портативным считаем софт, который
1) будучи сделан на на одной не испорченной кривыми руками и софтами машине нормально работает на такой же "чистой" машине;
2) не конфликтует с уже установленным стандартно таким же софтом, т.е. со стационарного софта не слетает регистрация и т.п., а также в свою очередь портативная версия номально работает незавасимо от установленных братьев;
3) не оставляет следов в реестре и файлах, кроме некоторых неизбежных (безобидных) и кроме самих результатов работы.


Специально пронумеровал эти условия, чтобы ниже ссылаться (1), (2), (3). Считайте их непоколебимыми заповедями (как у роботов Айзека Азимова).

Теперь собственно способы изготовления портативного софта и как следствие - его внешний вид и (что важно) признаки.

Я самовольно разобью Portable на 3 группы и оценю соответствие условиям портативности (1)(2)(3) на оценку (-)(-+)(+-)(+), что значит выполнение условия (маловероятно)(не достаточно)(достаточно)(вероятно).

1. Софт изначально портативный (нативная портативность)
Такой софт
- можете либо Вы написать самостоятельно; (1+)(2+)(3+)
Т.е. предполагается, что вы при написании софта именно этими тремя пунктами и руководствуетесь.
- может опционально (по Вашему усмотрению) становиться портативным (пример - KMPlayer, Aimp, Total Commander); (1+)(2+-)(3+-)
Это значит, что разработчик толи ради портативности толи для совместимости с другими ОС оставил возможность хранить настройки и дополнения в папке программы (в ini, xml и др.). А если программа еще и понимает относительные пути (вместо C:\\Program Files\\Opera\\program указать .\\program). Способов достижения нативной портативности в этом случае множество: правка некоего главного конфига программы, других конфигов, запуска с параметром (все продукты Mozilla).
- может и без установки работать (будучи извлеченным из Program Files), т.е. он и так портативный (ну там плюс-минус портативный), а Вы и не догадывались. (1-+)(2-)(3-+)

Способы выявления
О методах определения такого портабла можно сказать только одно: если софтина не относится к следующим двум категориям, она относится сюда. Ну а так же в сравнении. Если мы видим папку с портативной программой практически совпадающую по наполнению с таким же установленной программой, то это либо халтурщина либо нативная портативность.

Теперь танцы с бубном. Софтина капризная, а может еще и с регистрацией. А запортаблить нужно.


2. PortableApps
Это технология портабелизации, укоторой есть как сторонники, так и... Я . Шучу. Почти шучу.
В этом случае в программе NSIS (Nullsoft Scriptable Install System - распространенный бесплатный и мощный создатель инсталяторов на основе скриптов от создателей Winamp) или AuitoIt делается загрузочный файл к основной программе, который
- прединсталирует в систему записи реестра и некоторые нужный файлы,
- запускает основную прогу,
- после работы все это чистит, стараясь на флешке еще и запомнить настройки софта.

Сразу скажу, что лично мне этот метод нравится только когда необходимо совершенно легально пользоваться вечно триальным софтом (ведь никто не запретит Вам удалять на собственном компе некоторые файлы и записи реестра). Ну и когда следующий метод неприменим.
В других случаях не хочется думать даже, что случится, если во время работы "мощной" и сложной сделанной таким способом софтины выключится свет. Все неподобранные файлы и записи реестра останутся в машине. Кстати, различные вирусы чаще всего присутствуют именно в таких портаблах, если вы их берете из непроверенного источника.
Проверенным источником можно считать само движение PortableApps, стандартизировавшее этот метод портабелизации и снабжеющее всех желающих нужным инструментарием и документацией.
Минусом отмечу, что это движение старается запортавлить по свое методике практически все без разбора, а так же снабдить инструментарием всех желающих, но не очень понимающих. Результат - много некачественно софта сделанного по сомнительной технологии. Огромным минусом часто становится невозможность запустить программу без прав администратора (какой же админ даст пользователю писать куда ни попадя в систему).
В связи с вышесказанным оцениваю так: (1+)(2-+)(3+-)

Способы выявления
Если применена именно технология PortableApps, портативка иногда спрашивает, куда установиться (это просто распаковка из файла _Название_.paf.exe). В конечной папке можно обнаружить запускающий NSIS или AutoIt экзэшник и папку (например с названием App), где просто лежит вся софтина. Да и если технология другая - можете порробовать распаковать запускалочку в Universal Extractor, это может вообще оказаться просто SFX-архив (и возвращаемся к пункту 1.).


3. Виртуализация
Это чуть более поздний способ изготовления портативок. Он возник как побочный эффект административной виртуализации (метода администрирования и запуска программ через сеть при установке тоько на одном компьютере).
Виртуализация - помещение программы в виртуальный контейнер (читай архив, отсюда огромный плюс - сжатие). При запуске этого контейнера программа "думает", что все записи реестра и файлы уже на месте - в системе (ничего никуда не копируется и не записывается - еще плюс).
Отсюда и пошло название места, где хранятся все настройки программы - песочница (Sandbox). Вирус внутри контейнера такой программы - обезоружен, т.к. ничего не может записать в реальную систему - только в песочницу. Хотя сам вирус может извернуться, если создатель позаботисля, и записать нечто и в реальную систему. Зараженным же может быть только сам файл запуска - но это уж только проблемма чистоты рук и ОСей, по которым такая портативка гуляла.

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

Наиболее подходящими для портабелизации инструментами виртуализации есть VMware ThinApp (Thinstall) и Xenocode Virtual Appliance Studio, наиболее активное обсуждение которых на просторах СНГ идет на forum.ru-board.com.

ThinApp, как и другие подобные, создает на основе изменений, полученных ДО установки софта и ПОСЛЕ, проект, в котором есть только измененные (добавленные) файлы и записи реестра с множеством настроек (изоляция и т.д.). После настройки проект компилируется в Standalone-приложение (чаще всего - один исполняемый файл или исполняемые файлы с контейнером - два, три...) хранящее настройки в своей папке или в профиле пользователя в отдельной папке (иногда есть выбор). Это по-сути - небольшая виртуальная машина всего с одной программой внутри (виртуализация уровня приложения).

Весь смысл - разделить программу и среду ОС, оставляя в системе только результат работы (DOC и др.), минимально вмешиваясь в ОС. Создание портативки - это лишь полезный побочный эффект.

Большинство же других инструментов виртуализации работает по тому же принципу, но не создает так сказать standalone-программы, а только незапускаемый стандартными (без центра администрирования и клиентской части) пакет. Например Symantec Altiris (есть бесплатная версия) и Citrix XenApp (малопонятная вещь), ну и решения от Microsoft (да, не удивляйтесь, но это только для корпоративщиков).
Ну и оценки: (1+)(2+-)(3+-)

Способы выявления
Приведу только более-менее вменяемый способ: (пкм) Свойства -> (вкл) Версия. И там уж иногда можно увидать название виртуализатора, его версию и имя владельца лицензии.


Особняком от этого всего стоит способ лаунчера. Т.е. запускается не программа, а лаунчер, который прямо в памяти говорит основной программе, что куда сохранять и как себя вести. Изготовление лаунчера - процедура "из черной магии" зачастую недоступная даже самим разработчикам.



А как же *NIXы?
Хочется спросить: "А можно ли реализовать подобную упаковку для разбросанных по всему винчертеру *NIX-пакетов?"
Давайте отбросим тот случай (хотя тоже можно подумать), когда необходимо компилировать из исходного кода. Теперь заглянем внуть разных пакетов программ: RPM, DEB и др. Что там лежит? Правильно сами файлы программы, информация, где они должны лежать в конечной системе и записи конфигов. А теперь думаем: "Что мешает делать не инстлаляционные файлы, а пакеты, которые по содержимому - то же самое, только является запускаемым файлом?".
Вроде ничего не мешает, особенно учитывая, что хорошо настроенный Wine отлично ведется на Windows-виртуальные пакеты. Но как раз в этом словосочетании "является запускаемым файлом" и кроется подвох: в отличие от Windows-спецификации PE (Portable Executable - это почти любая EXE-шка), в *NIXе скорее можно сказать, что не программа выполняется в системе, а cистема по требованию выполняет запускаемый файл (это основа защищенности и надежности *NIX).

Получается, что чтобы сделать, виртуализованную или другую портативку, прийдется обманывать не саму программу, а всю систему.
Но, возможно, некоторые подобные решения появятся или уже появляются.

Вот и все. Не во всем точно, но достаточно содержательно.
Всем спасибо за внимание!

(С) NickOn [NickOnToluca]
Размещено в Без категории
Просмотров 11872 Комментарии 7 Редактировать метки Отправить другу ссылку на эту запись
Всего комментариев 7

Комментарии

  1. Старый комментарий
    Аватар для schta
    большое тебе спасибо за инфу, дружище!
    Запись от schta размещена 30.09.2010 в 13:13 schta вне форума
  2. Старый комментарий
    Аватар для Toluca
    Цитата:
    Сообщение от schta Просмотреть комментарий
    большое тебе спасибо за инфу, дружище!
    Пожалуйста. По возможности давайте ссылку, когда нужно будет разъяснить собеседнику.
    Запись от Toluca размещена 30.09.2010 в 14:54 Toluca вне форума
  3. Старый комментарий
    Аватар для virtuOS
    Почему на форум не написал? У дневника читателей меньше, а информация может быть полезной многим.
    Запись от virtuOS размещена 30.09.2010 в 17:04 virtuOS вне форума
  4. Старый комментарий
    Аватар для Toluca
    Цитата:
    Почему на форум не написал?
    Куда именно?
    Если есть подходящий раздел форума - дайте там ссылку на запись блога.
    Запись от Toluca размещена 30.09.2010 в 22:31 Toluca вне форума
  5. Старый комментарий
    Аватар для dima4o
    Цитата:
    Сообщение от Toluca Просмотреть комментарий
    Куда именно?
    Если есть подходящий раздел форума - дайте там ссылку на запись блога.
    На форуме есть раздел В помощь начинающему компьютерщику, там можете создать тему "Portable - это как?" и разместить вашу статью.
    Запись от dima4o размещена 30.09.2010 в 22:50 dima4o вне форума
  6. Старый комментарий
    Аватар для dima4o
    Дал ссылку в форуме на блог в теме Полезная информация
    Запись от dima4o размещена 03.10.2010 в 11:16 dima4o вне форума
  7. Старый комментарий
    Аватар для Toluca
    Ок.
    Запись от Toluca размещена 03.10.2010 в 21:33 Toluca вне форума
 
Реклама



Powered by vBulletin® Version 3.8.2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot

Время генерации страницы 0.22852 секунды с 20 запросами