stringtranslate.com

Портативное приложение

USB-накопитель может переносить портативные приложения

Портативное приложение ( portable app ), иногда также называемое автономным программным обеспечением , представляет собой компьютерную программу, разработанную для работы без изменения других файлов или требующую установки другого программного обеспечения. Таким образом, его можно легко добавлять, запускать и удалять с любого совместимого компьютера без настройки или побочных эффектов. [1]

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

Портативные приложения могут храниться на любом устройстве хранения данных , включая внутреннее запоминающее устройство , файловый ресурс , облачное хранилище или внешнее хранилище, такое как USB-накопители , флэш-накопители [2] и дискеты — сохраняя свои программные файлы и любую информацию о конфигурации и данные только на носителе. Если информация о конфигурации не требуется, портативную программу можно запустить с хранилища только для чтения, такого как CD-ROM и DVD-ROM . Некоторые приложения доступны как в устанавливаемой , так и в портативной версии.

Некоторые приложения, которые не являются переносимыми по умолчанию, поддерживают дополнительную переносимость через другие механизмы, наиболее распространенными из которых являются аргументы командной строки . Примерами могут быть /portableпросто указание программе вести себя как переносимая программа или --cfg=/path/inifileуказание местоположения файла конфигурации.

Как и любое приложение, портативные приложения должны быть совместимы с аппаратным обеспечением и операционной системой компьютера .

В зависимости от операционной системы, переносимость может быть более или менее сложной в реализации; в таких операционных системах, как AmigaOS , все приложения по определению переносимы.

Портативные приложения Windows

Большинство переносимых приложений не оставляют файлы или настройки на хост-компьютере и не изменяют существующую систему и ее конфигурацию. Приложение может не записывать в реестр Windows [3] или не хранить свои файлы конфигурации (например, файл INI ) в профиле пользователя , но сегодня многие переносимые приложения делают это; многие, однако, по-прежнему хранят свои файлы конфигурации в переносимом каталоге. Другая возможность, поскольку пути к файлам часто будут отличаться при смене компьютеров из-за различий в назначении букв дисков , заключается в том, что переносимые приложения могут хранить их в относительном формате. Хотя некоторые приложения имеют параметры для поддержки такого поведения, многие программы не предназначены для этого. Распространенным приемом для таких программ является использование программы запуска для копирования необходимых настроек и файлов на хост-компьютер при запуске приложения и перемещения их обратно в каталог приложения при его закрытии.

Альтернативной стратегией достижения переносимости приложений в Windows, не требующей изменения исходного кода приложения, является виртуализация приложений : приложение «упорядочивается» или «упаковывается» в среде выполнения, которая прозрачно перехватывает его вызовы файловой системы и реестра, а затем перенаправляет их в другое постоянное хранилище без ведома приложения. Этот подход оставляет само приложение неизменным, но при этом переносимым.

Тот же подход используется для отдельных компонентов приложения: библиотек времени выполнения , компонентов COM или ActiveX , а не только для всего приложения. [4] В результате, когда отдельные компоненты переносятся таким образом, они могут быть: интегрированы в оригинальные переносимые приложения, многократно инстанцированы (виртуально установлены) с различными конфигурациями/настройками в одной и той же операционной системе (ОС) без взаимных конфликтов. Поскольку перенесенные компоненты не влияют на защищенные ОС связанные сущности (реестр и файлы), компонентам не потребуются административные привилегии для установки и управления.

Microsoft увидела необходимость в реестре, специфичном для приложений, для своей операционной системы Windows еще в 2005 году. [5] В конечном итоге она включила часть этой технологии, используя упомянутые выше методы, через свою базу данных совместимости приложений [6] с использованием своей библиотеки кода Detours [7] , в Windows XP. Она не сделала ни одну из этих технологий доступной через свои системные API .

Переносимость на Unix-подобные системы

Программы, написанные с учетом Unix-подобной базы, часто не делают никаких предположений. В то время как многие программы Windows предполагают, что пользователь является администратором — что было очень распространено во времена Windows 95 / 98 / ME (и в некоторой степени в Windows XP / 2000 , хотя не в Windows Vista или Windows 7 ) — это быстро приведет к ошибкам «Отказано в доступе» в 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 , которая позволяет использовать относительный путь поиска библиотек. [8]

Не все программы учитывают это — некоторые полностью игнорируют $HOME и вместо этого выполняют поиск пользователя, /etc/passwdчтобы найти домашний каталог, тем самым нарушая переносимость.

Существуют также кросс-дистрибутивные форматы пакетов, для запуска которых не требуются права администратора, такие как Autopackage , AppImage или CDE, но которые получили лишь ограниченное признание и поддержку в сообществе Linux в 2000-х годах. [9] [10] [11] Около 2015 года идея портативной и независимой от дистрибутива упаковки для экосистемы Linux получила большую популярность, когда Линус Торвальдс обсудил эту тему на DebConf 2014 и позже одобрил AppImage для своего приложения для ведения журнала погружений Subsurface . [12] [13] [14] Например, MuseScore и Krita последовали их примеру в 2016 году и начали использовать сборки AppImage для развертывания программного обеспечения. [15] [16] В 2016 году RedHat выпустила систему Flatpak , которая является преемницей проекта Александра Ларссона glick , вдохновленного klik (теперь AppImage). [17] Аналогичным образом Canonical выпустила в 2016 году пакеты Snap для Ubuntu и многих других дистрибутивов Linux.

Многие приложения Mac, которые можно установить методом перетаскивания, по своей сути являются переносимыми как пакеты приложений Mac. [18] Примерами служат Mozilla Firefox , Skype и Google Chrome, которым не требуется доступ администратора и которые не нужно помещать в центральную ограниченную область. Приложения, помещенные в /Users/username/Applications( ~/Applications), регистрируются в macOS LaunchServices таким же образом, как и приложения, помещенные в основную /Applicationsпапку. Например, щелчок правой кнопкой мыши по файлу в Finder и последующий выбор «Открыть с помощью...» покажет приложения, доступные как из /Applications, так и из ~/Applications. Разработчики могут создавать установщики продуктов Mac, которые позволяют пользователю выполнять установку в домашний каталог, помеченную как «Установить только для меня» в пользовательском интерфейсе установщика. [19] Такая установка выполняется от имени пользователя.

Смотрите также

Ссылки

  1. ^ ab "Что такое портативное приложение?". PortableApps.com. Определение . Получено 15.11.2022 .
  2. ^ "Бесплатные портативные приложения и игры для USB ▷ Pendrive Software". pendriveapps.com . 2007-01-08 . Получено 2024-06-17 .
  3. ^ ""Что такое портативное приложение?"". PortableApps.com. Руководство . Получено 15.11.2022 .
  4. ^ "Portable Application Conversion Technology". Sphinx Software. Архивировано из оригинала 7 сентября 2010 г. Получено 19 января 2012 г.
  5. ^ "Portable Application Registry". ip.com . Получено 19 января 2012 г. .
  6. ^ Ионеску, Алекс. "Секреты базы данных совместимости приложений (SDB) – Часть 1" . Получено 19 января 2012 г.
  7. ^ "Detours". Microsoft Research . Получено 19 января 2012 г.
  8. ^ Hustvedt, Eskild (2009-02-08). "Наш новый способ соответствовать LGPL". Архивировано из оригинала 2009-02-20 . Получено 09.03.2011 . Вы можете использовать специальное ключевое слово $ORIGIN, чтобы сказать "относительно фактического расположения исполняемого файла". Внезапно мы обнаружили, что можем использовать -rpath $ORIGIN/lib, и это сработало. Игра загружала правильные библиотеки, поэтому была стабильной и переносимой, но также теперь полностью соответствовала духу LGPL, а также букве!
  9. ^ Вининг, Николас (13.10.2010). «Дорогое сообщество Linux: нам нужно поговорить». Gaslamp Games . Получено 30.01.2011 . Сообщество Linux в своей бесконечной мудрости продолжает ругать CDE. [...] «Мы все должны просто использовать управление пакетами». Вот что я хочу сказать, и пусть мои слова будут донесены с вершин гор, записанные на маленьких каменных табличках: Управление пакетами — не универсальная панацея.
  10. ^ Байфилд, Брюс (2007-02-12). "Autopackage борется за признание". linux.com. Архивировано из оригинала 2008-03-31 . Получено 2012-01-21 . Если Хирн прав, настоящий урок Autopackage заключается не в том, как улучшить установку программного обеспечения, а в сложности — возможно, невозможности — крупномасштабных изменений в архитектуре Linux на столь позднем этапе ее истории. Это отрезвляющий, разочаровывающий вывод для проекта, который когда-то казался таким многообещающим.
  11. ^ "AppImages". Elementary Project. Архивировано из оригинала 13 декабря 2010 г. Получено 19 января 2012 г.
  12. ^ Линус Торвальдс (2014-08-29). "Вопросы и ответы с Линусом Торвальдсом" (видео) . DebConf 2014 Portland . Debian .net. 6:28 . Получено 2016-05-14 . Я видел это своими глазами на примере другого проекта, в котором я участвую, а именно моего приложения для дайв-логов. Мы делаем двоичные файлы для Windows и OSX, но в основном не делаем двоичные файлы для Linux. Почему? Потому что создание двоичных файлов для настольных приложений Linux — это чертовски муторно.
  13. ^ Торвальдс, Линус . "Это просто очень круто". Google+ . Я наконец-то добрался до версии +Subsurface "AppImage", и она действительно, похоже, "просто работает".
  14. ^ Hohndel, Dirk (2015-11-25). "Это просто очень круто". Google+ . Я, как сопровождающий приложения, больше не хочу, чтобы мое приложение было включено в дистрибутив. Слишком много боли за абсолютно нулевую выгоду. Когда я получаю отчет об ошибке, мой первый вопрос: "О, какая версия какого дистрибутива? Какая версия какой библиотеки? Какой набор безумных исправлений был применен к этим библиотекам?". Нет, Windows и Mac справляются с этим правильно. Я контролирую библиотеки, с которыми работает мое приложение. [...] С AppImage я могу дать им именно это. Что-то, что работает на их компьютере.
  15. ^ Вайс, Айзек. "MuseScore 2.0.3 выпущен". MuseScore.org . MuseScore. Архивировано из оригинала 2016-04-23 . Получено 2016-04-05 .
  16. ^ «Выпущена Krita 3.0» . Крита.орг . Крита. 31 мая 2016 г.
  17. ^ Эксперименты с пакетами приложений, не требующими времени выполнения, Алекс Ларссон (2007)
  18. ^ "Распространение вашего приложения". developer.apple.com . Получено 2017-05-23 .
  19. ^ "Справочник XML по дистрибуции". developer.apple.com . Получено 2017-05-23 .