Portable-софт - все свое ношу с собой

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

При помощи USB-флэшки даже не самого большого объема, на которой установлен набор portable-программ, можно работать с привычными приложениями на любом компьютере. В клубе, в гостях, на работе - в любой ситуации, когда необходимо, чтобы под рукой оказался нужный инструмент, он всегда будет доступен в виде portable-сборки на флэшке или на любом другом носителе. Для того чтобы быстро записать диск, сжать музыку для MP3-плеера, конвертировать графический файл и т.д. не нужно тратить время на установку программы, достаточно подключить носитель и запустить нужный файл. Еще один довод в пользу использования portable-версии программы - отсутствие следов в системе после работы с портативным приложением. В процессе использования таких утилит в системном реестре не появляются дополнительные записи, и, кроме того, портативный софт, как правило, занимает гораздо меньше места на диске, по сравнению с приложением, установленным стандартным способом.

Четкого определения portable-софта не существует, однако принято различать несколько вариантов портативных сборок. Наиболее удачные и "правильные" портативные приложения - такие, которые после использования не оставляют в никаких следов в системном реестре или дополнительных файлов на жестком диске.

1.jpg

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

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

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

VMware ThinApp 4.03

Разработчик: VMware
Размер дистрибутива: 4,5 Мб
Распространение: shareware

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

Инструмент VMware ThinApp, работу которого мы сейчас рассмотрим, предназначен для виртуализации практически любого приложения (про ограничения будет сказано в заключении).

Главный инструмент программы - утилита для захвата системных изменений ThinApp Setup Capture, именно с нее начинается работа с VMware ThinApp. Чтобы создать портативную версию приложения, необходимо запустить этот файл и выполнить несколько действий по этапам.

Однако прежде чем приступить к компилированию портативного приложения, необходимо сделать некоторые приготовления. Для того чтобы портативная сборка оказалась успешной, нужно позаботиться, чтобы используемая операционная система была "чистой", то есть на ней не были установлены и запущены приложения, которые в фоновом режиме динамически вносят изменения в ее настройки. Это необходимо для того, чтобы при составлении "слепка" системы в поле зрения VMware ThinApp не попали случайные файлы, которые могут необоснованно увеличить размер портативной версии программы. Может быть и обратная ситуация, когда VMware ThinApp пропустит какой-нибудь системный параметр. Даже работа обычного антивирусного пакета приведет к тому, что вам придется вручную корректировать данные, зафиксированные монитором изменений.

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

2.jpg

После запуска ThinApp Setup Capture в настройках сканирования следует выбрать диски, для которых программа должна выполнять мониторинг, а также выбрать разделы системного реестра, за которыми утилита должна следить. По умолчанию VMware ThinApp отслеживает изменения, которые происходят в разделах HKEY_LOCAL_MACHINE и HKEY_USERS (также может контролироваться раздел HKEY_CURRENT_USER).

3.jpg

На создание "снимка" системы потребуется некоторое время - примерно от одной до нескольких минут, в зависимости от производительности компьютера и объема жесткого диска. В процессе сканирования нежелательно запускать какие-либо приложения или работать в уже запущенных программах. Если же анализ будет производиться не на виртуальной машине или не на чистой системе, не исключено, что после завершения процесса сканирования системы программа сообщит о некоторых ошибках.

4.jpg

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

5.jpg

Инсталляция новой утилиты приведет к появлению в системе новых записей реестра и, разумеется, к новым файлам на диске. Эти изменения должна обнаружить утилита для виртуализации. Поэтому на следующем этапе запускается повторное сканирование параметров системы. VMware ThinApp создает точно такой же "снимок" системы и сравнивает его с предыдущим. Исходя из обнаруженных отличий между данными, полученными после первого сканирования, и данными, полученными после повторного анализа, VMware ThinApp сможет выделить информацию, которая появилась на компьютере благодаря установке нового приложения. После вторичного анализа системных параметров, ThinApp Setup Capture выведет на экран список исполнительных файлов, среди которых необходимо выделить тот, который будет служить конвейером для данных портативного приложения. На этом этапе можно дать название файлу.

6.jpg

Следующий шаг - сортировка ресурсов будущей портативной программы. Все изменения, которые были обнаружены программой, объединяются в группу директорий, расположенных в папке ...VMwareVMware ThinAppCaptures. Сохранять предварительные файлы проекта можно также на сетевой диск или напрямую, на USB-флэшку, в зависимости от выбранного способа в настройках на этом этапе. По названию директорий легко понять, какие именно данные в них содержатся. Так, например, в директории %ProgramFilesDir% можно увидеть те файлы новой утилиты, которые были скопированы мастером установки.

7.jpg

При создании портативной версии приложения можно использовать один из двух методов ограничения - режим Merged Isolation и WriteCopy Isolation. Первый вариант позволяет пользователям создавать и обновлять файлы в несистемных директориях (например, в С:Project). Второй вариант предпочтителен для тех приложений, которые у вас не вызывают доверия и могут стать причиной поражения компьютера.

8.jpg

Перед окончательным компилированием проекта необходимо внимательно просмотреть содержимое этих папок на предмет лишней информации. Случайный запуск фонового приложения, например, создание временных файлов открытого браузера или ежеминутная запись списка заданий менеджера загрузок неизбежно приведет в появлению соответствующего "мусора" в директориях проекта, поскольку VMware ThinApp воспримет их как результат действий установленной утилиты. То же самое относится и к запротоколированным данным системного реестра. Эти данные находятся в текстовых файлах HKEY_CURRENT_USER.txt, HKEY_LOCAL_MACHINE.txt и HKEY_USERS.txt. Их также нужно просмотреть и "почистить" в случае надобности.

Завершая создание портативной версии программы, нужно указать некоторые настройки создаваемого приложения - будет ли конечный файл в виде установочного файла MSI, а также будет ли создаваться портативная версия с использованием компрессии или же конечный файл будет без сжатия.

9.jpg

После того, как все предварительные приготовления будут завершены, можно создавать конечный файл. Это делается очень просто - либо в интерфейсе пошагового мастера VMware ThinApp запускается компиляция кнопкой Build Now, или с помощью файла build.bat, который находится в корне директории проекта. После того, как процесс компиляции проекта будет завершен, утилита будет располагаться во вложенной папке bin директории проекта.

10.jpg

Molebox Ultra 4.22

Разработчик: Teggo Software
Размер дистрибутива: 4,5 Мб
Распространение: shareware

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

11.gif

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

PECompact 3.0

Разработчик: Bitsum Technologies
Размер дистрибутива: 1,1 Мб
Распространение: shareware

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

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

Другой способ уменьшения размеров портативной сборки - использование утилиты PECompact2. Эта небольшая утилита дает возможность уменьшить размер файлов в директории программы. PECompact2 сжимает файлы dll, scr и exe, причем, может использовать для этого разные алгоритмы архивирования данных. К файлам, упакованным утилитой, прикрепляется небольшой объем данных. Эти данные представляют собой так называемый загрузчик, благодаря которому данные смогут распаковываться. При запуске программы, сжатый ранее файл, распаковывается "на лету". Распаковка сжатых файлов происходит настолько быстро, что время, которое необходимо для их разархивирования, невозможно определить визуально. По сравнению с обычными программами-архиваторами, такими как 7zip или Winrar, PECompact2 сжимает исполнительные файлы гораздо лучше (кстати, файлы этих архиваторов значительно уменьшаются в размерах после обработки их данной утилитой). Высокий коэффициент сжатия данных объясняется тем, что архивируемый файл проходит предварительную обработку, в результате чего он становится более плотно сжимаемым при передаче алгоритму компрессии. Поскольку утилита PECompact2 поддерживает дополнительные модули, теоретически программа может применять любые алгоритмы сжатия, достаточно только установить нужное дополнение.

12.jpg

Утилита имеет два варианта - консольный и с графическим интерфейсом. Консольную версию PECompact2 можно использовать в пакетных файлах или консольных приложениях, например, в файловом менеджере FAR. PECompact2 может пакетно обрабатывать файлы, причем каждый отдельный файл из списка может иметь свои собственные параметры компрессии. Возможности утилиты не ограничиваются простым сжатием файлов. Утилита содержит разные настройки процесса упаковки файлов - возможность выбрать алгоритм, установить степень сжатия, задействование проверки целостности кода, указание ресурсов файла, которые должны быть обработаны программой и т.д. Среди дополнительных возможностей программы, следует отметить функцию защиты от взлома исполнительных файлов. Используемый по умолчанию в PECompact2 загрузчик содержит защиту против отладчиков, препятствующую восстановлению исходного кода.

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

13.jpg

Мы рекомендуем вам не использовать максимальные параметры сжатия (для этого в утилите есть специальная кнопка "Установить параметры для максимального сжатия", автоматически переводящая программу в режим наибольшей компрессии данных). Дело в том, что это может привести к ошибкам при распаковке.

Заключение

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

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