Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Накопитель USB может нести портативные приложения

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

Портативные приложения могут храниться на любом устройстве хранения данных , включая внутреннее запоминающее устройство , файловое хранилище , облачное хранилище или внешнее хранилище, такое как 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
  • Переносимость данных
  • Совместимость

Ссылки [ править ]

  1. ^ «Технология преобразования портативных приложений» . Программное обеспечение Sphinx. Архивировано из оригинала 7 сентября 2010 года . Проверено 19 января 2012 года .
  2. ^ "Портативный реестр приложений" . ip.com . Проверено 19 января 2012 года .
  3. ^ Ионеску, Алекс. «Секреты базы данных совместимости приложений (SDB) - Часть 1» . Проверено 19 января 2012 года .
  4. ^ "Объезды" . Microsoft Research . Проверено 19 января 2012 года .
  5. ^ Hustvedt, Eskild (2009-02-08). «Наш новый способ познакомиться с LGPL» . Архивировано из оригинала на 2009-02-20 . Проверено 9 марта 2011 . Вы можете использовать специальное ключевое слово $ ORIGIN, чтобы сказать «относительно фактического местоположения исполняемого файла». Внезапно мы обнаружили, что можем использовать -rpath $ ORIGIN / lib, и это сработало. Игра загружала правильные библиотеки, поэтому была стабильной и переносимой, но теперь она полностью соответствовала духу LGPL и букве!
  6. ^ Vining, Николай (2010-10-13). «Уважаемое сообщество Linux: нам нужно поговорить» . Gaslamp Games . Проверено 30 января 2011 . Сообщество Linux в своей безграничной мудрости продолжает адски разжигать CDE. [...] «Нам всем следует просто использовать управление пакетами». Вот что я хочу сказать, и пусть мои слова будут унесены с гор, написанных на крошечных каменных табличках: Управление пакетами - не универсальная панацея.
  7. ^ Byfield, Брюс (2007-02-12). «Автопакет пытается получить признание» . linux.com. Архивировано из оригинала на 2008-03-31 . Проверено 21 января 2012 . Если Хирн прав, настоящий урок Autopackage состоит не в том, как улучшить установку программного обеспечения, а в сложности - возможно, в невозможности - крупномасштабных изменений в архитектуре Linux на столь позднем этапе ее истории. Это отрезвляющее и разочаровывающее завершение проекта, который когда-то казался таким многообещающим.
  8. ^ "AppImages" . Элементарный проект. Архивировано из оригинального 13 декабря 2010 года . Проверено 19 января 2012 года .
  9. ^ Линус Торвальдс (2014-08-29). «Вопросы и ответы с Линусом Торвальдсом» (видео) . DebConf 2014 Портленд . debian .net. 6:28 . Проверено 14 мая 2016 . Я видел это на собственном опыте с другим проектом, в котором я участвую, - моим приложением для журнала погружений. Мы делаем двоичные файлы для Windows и OSX, но в основном не делаем двоичные файлы для Linux. Почему? Потому что создание двоичных файлов для настольных приложений Linux - это чертовски большая головная боль. CS1 maint: использует параметр авторов ( ссылка )
  10. ^ Торвальдс, Линус . «Это просто очень круто» . Google+ . Я наконец нашел время поиграть с версией + Subsurface "AppImage", и она действительно, кажется, "просто работает".
  11. ^ Хондел, Dirk (2015-11-25). «Это просто очень круто» . Google+ . Я, как разработчик приложения, больше не хочу, чтобы мое приложение входило в состав дистрибутива. Слишком много боли при абсолютно нулевом выигрыше. Когда я получаю сообщение об ошибке, мой первый вопрос: «О, какая версия какого дистрибутива? Какая версия какой библиотеки? Какой набор безумных патчей был применен к этим библиотекам?». Нет, Windows и Mac понимают это правильно. Я контролирую библиотеки, с которыми работает мое приложение. [...] С помощью AppImage я могу дать им именно это. Что-то, что работает на их компьютере.
  12. ^ Вайс, Исаак. «Выпущен MuseScore 2.0.3» . MuseScore.org . MuseScore. Архивировано из оригинала на 2016-04-23 . Проверено 5 апреля 2016 .
  13. ^ «Выпущена Krita 3.0» . Krita.org . Крита. 2016-05-31.
  14. ^ Эксперименты с пакетами приложений вне времени выполнения Алекса Ларссона (2007)
  15. ^ «Распространение вашего приложения» . developer.apple.com . Проверено 23 мая 2017 .
  16. ^ "Справочник XML по распространению" . developer.apple.com . Проверено 23 мая 2017 .