Как создать портативную программу (Portable)
В прошлом видео я рассказал о том, что такое портативные программы, а сейчас речь пойдет о принципе создания таких приложений.
Портативные программы могут создаваться двумя способами. Первый и самый правильный — это когда разработчик программы сам создает портативную версию. В этом случае она остается полнофункциональной и работает корректно. Но есть второй способ. Он не совсем правильный и не всегда легальный, но тем не менее имеет место быть. Для того чтобы понять суть этого способа, следует прояснить некоторые важные моменты.
Итак, обычно для установки программы вам нужно иметь ее дистрибутив.
Дистрибутив — это тоже программа, и она предназначена для корректной установки основной программы на компьютер. Когда любая программа устанавливается на компьютер, она копирует свои файлы в определенные папки, вносит о себе информацию в реестр операционной системы, возможно копирует нужные ей для работы файлы и библиотеки в системные папки Windows. Именно поэтому очень часто для установки программ необходимо обладать правами администратора, то есть иметь самые широкие полномочия на компьютере, позволяющие изменять важные для операционной системы настройки и файлы.
Так вот, второй способ создания портативных программ заключается в следующем:
Шаг 1. Сканируется операционная система и файлы на компьютере и запоминается это состояние.
Шаг 2. Устанавливается программа, из которой предстоит сделать портативную.
Шаг 3. Повторное сканирование операционной системы и компьютера в целом.
Сравнивается состояние компьютера во время первого и второго сканирований и, если так можно выразиться, разница этих состояний и будет являться установленной программой.
Эта разница может проявляться в появлении новых файлов и папок, в изменении или добавлении новых системных файлов, в добавлении какой-то системной информации и т.д.
Это, конечно, очень упрощенное объяснение, но его достаточно для понимания сути процесса создания портативной программы.
Правда тут есть еще один нюанс — очень важно, чтобы программа, из которой мы хотим сделать портативную, никогда прежде не устанавливалась на компьютер, а точнее в текущую операционную систему.
Дело в том, что если программа была установлена, а затем удалена, то велика вероятность, что некоторые важные файлы программы останутся в системе и после ее удаления. А это означает, что при повторной установке программы эти файлы не будут изменены и, соответственно, при сканировании состояния системы не будут внесены в список файлов, необходимых для работы будущей портативной программы. Поэтому желательно или даже обязательно портативные программы создавать на вновь установленной операционной системе или пользоваться для их создания виртуальной машиной со свежей Windows.
Логично предположить, что если файлы установленной программы перенести на съемный диск, например, на флешку, а также скопировать туда все изменения внесенные программой при ее установке, то программа сможет работать автономно, то есть без привязки к операционной системе или компьютеру, на который она и была установлена.
Так-то оно так, но не совсем…
На самом деле при создании портативной программы, создают специальный контейнер, в который и помещаются все файлы и связи этой программы. Если программе нужно было для своей работы обращаться к некоторой информации Windows, например, к его реестру, то в этом контейнере такое обращение имитируется, что позволяет программе «думать», что она установлена по всем правилам. Такую среду называют «виртуализацией», так как по сути все необходимые для работы программы ссылки на ресурсы операционной системы, подменяются виртуальными, ведущими на какой-то ресурс внутри контейнера.
Теперь остается лишь понять, как провести сканирование состояния системы до и после установки программы, и как затем изолировать программу, сделав ее портативной.
Ну а для этого также существуют специальные программы, которые такое сканирование производят, а затем из разницы состояний пытаются создать портативную программу. Я говорю «пытаются», так как далеко не всегда это получается сделать полностью и корректно. Дело в том, что если программа, так скажем, не особо требовательна и при своей установке просто копирует свои файлы в определенное место на жестком диске, а также регистрирует себя в реестре Windows, то создание ее портативной версии вполне может закончиться успешно. Но вот если программа требует наличия определенных библиотек или драйверов, то есть по сути специальных вспомогательных программ, решающих какие-то узконаправленные конкретные задачи, то может возникнуть проблема. Обычно такие файлы или библиотеки при установке программы копируются в определенные системные папки и при запуске программа ожидает их обнаружить именно там. Кроме этого сам принцип работы некоторых драйверов и библиотек исключает возможность их запуска, например, с флешки. Они должны загружаться вместе с операционной системой и, соответственно, должны находиться в определенном месте файловой системы компьютера. Но ведь портативность подразумевает, что все необходимые для работы программы файлы будут находиться в одном месте, а не в разных частях жесткого диска, так как нам бы хотелось такую программу скопировать, например, на флешку и запускать с флешки на любом компьютере или ноутбуке. Именно из-за такого поведения некоторых программ, вновь созданная портативная программа может попросту не работать или работать нестабильно, или же будет ограничена по функциональности и это важно понимать.
Я лишь в общих чертах обрисовал суть проблемы. Тут нужно на более глубоком уровне разбираться с принципом работы конкретной программы — какие файлы и библиотеки нужны для ее работы и откуда она их запускает, что за это отвечает ну и так далее. Без специальных знаний тут не обойтись. Я сам не являюсь в этой области специалистом и разобрался с этим вопросом лишь на уровне обычного пользователя.
Также есть еще один нюанс касающийся программ по созданию портативных приложений. Они не особо дружат с антивирусами. Как я сказал ранее, принцип работы таких программ часто сводится к полному сканированию системы, а подобное поведение кажется весьма подозрительным для программ защиты (то есть антивирусов) и они часто принимают подобные программы за вредоносные.
Итак, с принципом создания портативных программ на, так скажем, любительском уровне мы разобрались. В следующей заметке я расскажу о некоторых программах, которые позволяют создавать портативные версии других программ.