Эта статья может сбивать с толку или непонятна читателям . ( Апрель 2018 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Эта статья, возможно, содержит оригинальные исследования . ( Август 2009 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Портативное приложение ( портативное приложение ), иногда также называют автономной , это программа предназначена для чтения и записи его параметров конфигурации в доступную папку на компьютере, как правило , в папке , в которой портативное приложение может быть найдено. Это упрощает перенос программы с пользовательскими настройками и данными между разными компьютерами. Программа, не имеющая параметров конфигурации, также может быть переносимым приложением.
Портативные приложения могут храниться на любом устройстве хранения данных , включая внутреннее запоминающее устройство , файловое хранилище , облачное хранилище или внешнее хранилище, такое как USB-накопители и дискеты, - сохраняя свои программные файлы и любую информацию о конфигурации и данные только на носителе. Если информация о конфигурации не требуется, переносимая программа может быть запущена из хранилища только для чтения, такого как CD-ROM и DVD-ROM . Некоторые приложения доступны как в устанавливаемой, так и в переносной версиях.
Некоторые приложения, которые не переносятся по умолчанию, поддерживают необязательную переносимость с помощью других механизмов, наиболее распространенными из которых являются аргументы командной строки . Примеры могут включать /portable
в себя простое указание программе вести себя как переносимую программу или --cfg=/path/inifile
указание местоположения файла конфигурации.
Как и любое приложение, портативные приложения должны быть совместимы с аппаратным обеспечением компьютерной системы и операционной системой .
В зависимости от операционной системы реализовать переносимость более или менее сложно; для операционных систем, таких как AmigaOS , все приложения по определению переносимы.
Переносимые приложения Windows [ править ]
Переносимое приложение не оставляет свои файлы или настройки на главном компьютере и не изменяет существующую систему и ее конфигурацию. Приложение не записывает данные в реестр Windows [ необходима цитата ] и не сохраняет свои файлы конфигурации (например, INI-файл ) в профиле пользователя ; вместо этого он хранит свои файлы конфигурации в переносном каталоге. Еще одно требование, поскольку пути к файлам часто будут отличаться при смене компьютеров из-за различий в присвоении букв дискам , заключается в том, что приложения должны хранить их в относительномформат. Хотя в некоторых приложениях есть возможности для поддержки такого поведения, многие программы не предназначены для этого. Распространенной техникой для таких программ является использование программы запуска для копирования необходимых настроек и файлов на главный компьютер при запуске приложения и перемещения их обратно в каталог приложения при его закрытии.
Альтернативной стратегией для достижения переносимости приложений в Windows, не требующей изменения исходного кода приложения, является виртуализация приложения : приложение «упорядочивается» или «упаковывается» на уровне времени выполнения, который прозрачно перехватывает вызовы своей файловой системы и реестра, а затем перенаправляет их другим постоянное хранилище без ведома приложения. При таком подходе само приложение остается неизменным, но переносимым.
Тот же подход используется для отдельных компонентов приложения: библиотек времени выполнения , компонентов COM или ActiveX , а не только для всего приложения. [1] В результате, когда отдельные компоненты переносятся таким образом, они могут быть: интегрированы в оригинальные переносимые приложения, многократно инстанциированы (виртуально установлены) с разными конфигурациями / настройками в одной и той же операционной системе (ОС) без взаимных конфликтов. Поскольку перенесенные компоненты не влияют на связанные с ОС объекты (реестр и файлы), компоненты не требуют прав администратора для установки и управления.
Microsoft увидела необходимость в реестре для конкретных приложений для своей операционной системы Windows еще в 2005 году. [2] В конечном итоге она включила часть этой технологии, используя упомянутые выше методы, через свою базу данных совместимости приложений [3], используя свои обходные пути [ 4] библиотеки кода в Windows XP. Он не предоставлял доступ к какой-либо из этих технологий через свои системные API-интерфейсы .
Переносимость в Linux и Unix-подобных системах [ править ]
Программы, написанные на базе Unix, часто не делают никаких предположений. В то время как многие программы Windows , предположим , что пользователь является администратором -что - то очень распространены в дни Windows 95 / +98 / ME (и в некоторой степени в Windows XP / 2000 , хотя и не в Windows Vista или Windows 7 ) -such быстро привести Ошибки «Отказано в разрешении» в Unix-подобных средах, поскольку пользователи гораздо чаще будут находиться в непривилегированном состоянии. Поэтому программы обычно предназначены для использования HOME
переменной среды для хранения настроек (например, $HOME/.w3m
для w3mбраузер). Динамический компоновщик предоставляет переменную среды, LD_LIBRARY_PATH
которую программы могут использовать для загрузки библиотек из нестандартных каталогов. Предполагая, что /mnt
содержит переносимые программы и конфигурацию, командная строка может выглядеть так:
HOME=/mnt/home/user LD_LIBRARY_PATH=/mnt/usr/lib /mnt/usr/bin/w3m www.example.com
Приложение Linux без необходимости взаимодействия с пользователем (например, адаптации сценария или переменной среды) с различными путями к каталогам может быть достигнуто с помощью опции GCC Linker,$ORIGIN
которая позволяет относительный путь поиска библиотеки. [5]
Не все программы соблюдают это - некоторые полностью игнорируют $ HOME и вместо этого выполняют поиск пользователя /etc/passwd
в домашнем каталоге, что препятствует переносимости.
Существуют также форматы пакетов для разных дистрибутивов, для запуска которых не требуются права администратора, такие как Autopackage , klik (теперь называемый AppImage) или CDE, но которые получили лишь ограниченное признание и поддержку в сообществе Linux в 2000-х годах. [6] [7] [8] Примерно в 2015 году идея переносимой и независимой от дистрибутива упаковки для экосистемы Linux стала более популярной, когда Линус Торвальдс обсудил эту тему на DebConf 2014 и позже поддержал AppImage для своего приложения для журнала погружений Subsurface . [9] [10] [11] Например, MuseScore и Kritaпоследовал в 2016 году и начал использовать сборки AppImage для развертывания программного обеспечения. [12] [13] RedHat выпустила в 2016 году систему Flatpak , которая является преемником блестящего проекта Александра Ларссона, вдохновленного klik (теперь AppImage). [14] Точно так же Canonical выпустила в 2016 году пакеты Snap для Ubuntu и многих других дистрибутивов Linux.
Многие приложения Mac, которые можно установить с помощью перетаскивания, по сути переносимы в виде пакетов приложений Mac. [15] Примеры включают Mozilla Firefox , Skype и Google Chrome, которые не требуют доступа администратора и не должны размещаться в центральной ограниченной области. Приложения, помещенные в /Users/username/Applications
( ~/Applications
), регистрируются в macOS LaunchServices таким же образом, как и приложения, помещенные в основную/Applications
папка. Например, щелкнув файл правой кнопкой мыши в Finder и выбрав «Открыть с помощью ...», вы увидите приложения, доступные как в / Applications, так и в ~ / Applications. Разработчики могут создавать установщики продуктов Mac, которые позволяют пользователю выполнить установку из домашнего каталога с пометкой «Установить только для меня» в пользовательском интерфейсе установщика. [16] Такая установка выполняется от имени пользователя.
См. Также [ править ]
- Загрузите привод
- Список портативного программного обеспечения
- WinPenPack
- Создатели портативных приложений
- LiberKey
- PortableApps.com
- U3
- Виртуализация приложений
- Турбо (программное обеспечение)
- VMware ThinApp
- Живой USB
- Ceedo
- Портативный VirtualBox
- Windows To Go
- Переносимость данных
- Совместимость
Ссылки [ править ]
- ^ «Технология преобразования портативных приложений» . Программное обеспечение Sphinx. Архивировано из оригинала 7 сентября 2010 года . Проверено 19 января 2012 года .
- ^ "Портативный реестр приложений" . ip.com . Проверено 19 января 2012 года .
- ^ Ионеску, Алекс. «Секреты базы данных совместимости приложений (SDB) - Часть 1» . Проверено 19 января 2012 года .
- ^ "Объезды" . Microsoft Research . Проверено 19 января 2012 года .
- ^ Hustvedt, Eskild (2009-02-08). «Наш новый способ познакомиться с LGPL» . Архивировано из оригинала на 2009-02-20 . Проверено 9 марта 2011 .
Вы можете использовать специальное ключевое слово $ ORIGIN, чтобы сказать «относительно фактического местоположения исполняемого файла». Внезапно мы обнаружили, что можем использовать -rpath $ ORIGIN / lib, и это сработало. Игра загружала правильные библиотеки, поэтому была стабильной и переносимой, но теперь она полностью соответствовала духу LGPL и букве!
- ^ Vining, Николай (2010-10-13). «Уважаемое сообщество Linux: нам нужно поговорить» . Gaslamp Games . Проверено 30 января 2011 .
Сообщество Linux в своей безграничной мудрости продолжает адски разжигать CDE. [...] «Нам всем следует просто использовать управление пакетами». Вот что я хочу сказать, и пусть мои слова будут унесены с гор, написанных на крошечных каменных табличках: Управление пакетами - не универсальная панацея.
- ^ Byfield, Брюс (2007-02-12). «Автопакет пытается получить признание» . linux.com. Архивировано из оригинала на 2008-03-31 . Проверено 21 января 2012 .
Если Хирн прав, настоящий урок Autopackage состоит не в том, как улучшить установку программного обеспечения, а в сложности - возможно, в невозможности - крупномасштабных изменений в архитектуре Linux на столь позднем этапе ее истории.
Это отрезвляющее и разочаровывающее завершение проекта, который когда-то казался таким многообещающим.
- ^ "AppImages" . Элементарный проект. Архивировано из оригинального 13 декабря 2010 года . Проверено 19 января 2012 года .
- ^ Линус Торвальдс (2014-08-29). «Вопросы и ответы с Линусом Торвальдсом» (видео) . DebConf 2014 Портленд . debian .net. 6:28 . Проверено 14 мая 2016 .
Я видел это на собственном опыте с другим проектом, в котором я участвую, - моим приложением для журнала погружений. Мы делаем двоичные файлы для Windows и OSX, но в основном не делаем двоичные файлы для Linux. Почему? Потому что создание двоичных файлов для настольных приложений Linux - это чертовски большая головная боль.
CS1 maint: использует параметр авторов ( ссылка ) - ^ Торвальдс, Линус . «Это просто очень круто» . Google+ .
Я наконец нашел время поиграть с версией + Subsurface "AppImage", и она действительно, кажется, "просто работает".
- ^ Хондел, Dirk (2015-11-25). «Это просто очень круто» . Google+ .
Я, как разработчик приложения, больше не хочу, чтобы мое приложение входило в состав дистрибутива. Слишком много боли при абсолютно нулевом выигрыше. Каждый раз, когда я получаю сообщение об ошибке, мой первый вопрос: «О, какая версия какого дистрибутива? Какая версия какой библиотеки? Какой набор безумных патчей был применен к этим библиотекам?». Нет, Windows и Mac понимают это правильно. Я контролирую библиотеки, с которыми работает мое приложение. [...] С помощью AppImage я могу дать им именно это. Что-то, что работает на их компьютере.
- ^ Вайс, Исаак. «Выпущен MuseScore 2.0.3» . MuseScore.org . MuseScore. Архивировано из оригинала на 2016-04-23 . Проверено 5 апреля 2016 .
- ^ «Выпущена Krita 3.0» . Krita.org . Крита. 2016-05-31.
- ^ Эксперименты с пакетами приложений вне времени выполнения Алекса Ларссона (2007)
- ^ «Распространение вашего приложения» . developer.apple.com . Проверено 23 мая 2017 .
- ^ "Справочник XML по распространению" . developer.apple.com . Проверено 23 мая 2017 .