Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Тип компьютерной программы
Type of computer program
Портативное приложение (portable app), иногда также называемое автономным, — это программа, разработанная для работы без изменения других файлов или необходимости установки дополнительного программного обеспечения. Таким образом, его можно легко добавлять, запускать и удалять с любого совместимого компьютера без установки или побочных эффектов. На практике портативное приложение часто хранит созданные пользователем данные и настройки конфигурации в той же директории, где и находится само приложение. Это упрощает перенос программы с пользовательскими предпочтениями и данными между разными компьютерами. Программа, не имеющая параметров конфигурации, также может быть портативным приложением, или хранить свои файлы конфигурации (например, INI-файл) в профиле пользователя, но сегодня многие портативные приложения это делают; однако многие по-прежнему хранят файлы конфигурации в портативной директории. Другой вариант, поскольку пути к файлам часто отличаются на разных компьютерах из-за различий в назначении букв дисков, заключается в том, что портативные приложения могут хранить их в относительном формате. Хотя некоторые приложения предоставляют опции для поддержки такого поведения, многие программы не предназначены для этого. Распространенным методом для таких программ является использование программы-запуска, которая копирует необходимые настройки и файлы на хост-компьютер при запуске приложения и возвращает их обратно в директорию приложения при закрытии. Альтернативной стратегией для обеспечения переносимости приложений в Windows, не требующей изменений в исходном коде приложения, является виртуализация приложения: приложение "секвенируется" или "упаковывается" относительно уровня выполнения, который прозрачно перехватывает его обращения к файловой системе и реестру, а затем перенаправляет их в другое постоянное хранилище без ведома приложения. Такой подход оставляет приложение неизменным, но делает его переносимым. Тот же подход используется для отдельных компонентов приложения: библиотек времени выполнения, COM-компонентов или ActiveX, а не только для всего приложения. В результате, когда отдельные компоненты переносятся таким образом, они могут быть: интегрированы в оригинальные портативные приложения, многократно инстанцированы (виртуально установлены) с различными конфигурациями/настройками на одной операционной системе (ОС) без взаимных конфликтов. Поскольку переносимые компоненты не влияют на защищенные сущности ОС (реестр и файлы), для их установки и управления не требуются административные привилегии. Microsoft осознала необходимость в специализированном реестре приложений для своей операционной системы Windows еще в 2005 году. В конечном итоге она включила часть этой технологии, используя вышеупомянутые методы через свою базу данных совместимости приложений с использованием библиотеки кода Detours в Windows XP. Однако она не предоставила доступ к этим технологиям через свои системные API.
A portable application (portable app), sometimes also called standalone, is a program designed to operate without changing other files or requiring other software to be installed. In this way, it can be easily added to, run, and removed from any compatible computer without setup or side effects. In practical terms, a portable application often stores user created data and configuration settings in the same directory it resides in. This makes it easier to transfer the program with the user's preferences and data between different computers. A program that doesn't have any configuration options can also be a portable application. or store its configuration files (such as an INI file) in the user's profile, but today, many portables do; many, however, still store their configuration files in the portable directory. Another possibility, since file paths will often differ on changing computers due to variation in drive letter assignments, is that portable applications may store them in a relative format. While some applications have options to support this behavior, many programs are not designed to do this. A common technique for such programs is the use of a launcher program to copy necessary settings and files to the host computer when the application starts and move them back to the application's directory when it closes. An alternative strategy for achieving application portability within Windows, without requiring application source code changes, is application virtualization: An application is "sequenced" or "packaged" against a runtime layer that transparently intercepts its file system and registry calls, then redirects these to other persistent storage without the application's knowledge. This approach leaves the application itself unchanged, yet portable. The same approach is used for individual application components: run time libraries, COM components or ActiveX, not only for the entire application. As a result, when individual components are ported in such manner they are able to be: integrated into original portable applications, repeatedly instantiated (virtually installed) with different configurations/settings on the same operating system (OS) without mutual conflicts. As the ported components do not affect the OS protected related entities (registry and files), the components will not require administrative privileges for installation and management. Microsoft saw the need for an application specific registry for its Windows operating system as far back as 2005. It eventually incorporated some of this technology, using the techniques mentioned above, via its Application Compatibility Database using its Detours code library, into Windows XP. It did not make any of this technology available via its system APIs.
Переносимость на Unix-подобных системах
Программы, написанные с учетом принципов Unix, часто не делают никаких предположений. В то время как многие программы Windows предполагают, что пользователь является администратором — что было очень распространено в эпоху Windows 95/98/ME (и в некоторой степени в Windows XP/2000, хотя не в Windows Vista или Windows 7) — это быстро приводило бы к ошибкам "Отказано в доступе" в Unix-подобных средах, поскольку пользователи чаще оказываются в непривилегированном состоянии. Поэтому программы обычно разрабатываются с использованием переменной окружения HOME для хранения настроек (например, $HOME/.w3m для браузера w3m). Динамический компоновщик предоставляет переменную окружения LD_LIBRARY_PATH, которую программы могут использовать для загрузки библиотек из нестандартных каталогов. Если предположить, что /mnt содержит переносимые программы и конфигурацию, командная строка может выглядеть так:
Programs written with a Unix like base in mind often do not make any assumptions. Whereas many Windows programs assume the user is an administrator—something very prevalent in the days of Windows 95/98/ME (and to some degree in Windows XP/2000, though not in Windows Vista or Windows 7)—such would quickly result in "Permission denied" errors in Unix like environments since users will be in an unprivileged state much more often. Programs are therefore generally designed to use the HOME environment variable to store settings (e. g. $HOME/. w3m for the w3m browser). The dynamic linker provides an environment variable LD LIBRARY PATH that programs can use to load libraries from non standard directories. Assuming /mnt contains the portable programs and configuration, a command line may look like:
HOME=/mnt/home/user LD LIBRARY PATH=/mnt/usr/lib /mnt/usr/bin/w3m www. example. com
Linux-приложение, не требующее взаимодействия с пользователем (например, адаптации скрипта или переменной окружения) в зависимости от различных путей к каталогам, можно реализовать с помощью опции GCC Linker $ORIGIN, которая позволяет использовать относительный путь поиска библиотек. Однако не все программы поддерживают эту функцию — некоторые полностью игнорируют $HOME и вместо этого выполняют поиск пользователя в /etc/passwd для определения домашнего каталога, что препятствует переносимости. Существуют также кросс-дистрибутивные форматы пакетов, не требующие прав администратора для запуска, такие как Autopackage, klik (теперь известный как AppImage) или CDE, но они получили лишь ограниченное признание и поддержку в сообществе Linux в 2000-х годах. Около 2015 года идея портативной и независимой от дистрибутива упаковки для экосистемы Linux получила большее распространение, когда Линус Торвальдс обсудил эту тему на DebConf 2014 и позже одобрил AppImage для своего приложения для ведения журнала погружений Subsurface. Например, MuseScore и Krita последовали этому примеру в 2016 году и начали использовать сборки AppImage для распространения программного обеспечения. Red Hat выпустила в 2016 году систему Flatpak, которая является преемником проекта glick Александра Ларссона, вдохновленного klik (теперь AppImage). Аналогично, Canonical выпустила в 2016 году пакеты Snap для Ubuntu и многих других дистрибутивов Linux. Многие приложения для macOS, которые можно установить простым перетаскиванием, по своей сути являются переносимыми, поскольку представляют собой пакеты приложений macOS. Примеры включают Mozilla Firefox, Skype и Google Chrome, которым не требуется доступ администратора и которые не нужно помещать в центральную, защищенную область. Приложения, помещенные в папку /Users/username/Applications (~/Applications), регистрируются в macOS LaunchServices так же, как и приложения, помещенные в основную папку /Applications. Например, щелкнув правой кнопкой мыши на файле в Finder и выбрав "Открыть с помощью", будут показаны приложения, доступные как из /Applications, так и из ~/Applications. Разработчики могут создавать установщики для macOS, которые позволяют пользователю выполнить установку в домашний каталог, обозначенную как "Установить только для меня" в пользовательском интерфейсе установщика. Такая установка выполняется от имени пользователя.
A Linux application without need for a user interaction (e. g. adapting a script or environment variable) on varying directory paths can be achieved with the GCC Linker option $ORIGIN which allows a relative library search path. Not all programs honor this—some completely ignore $HOME and instead do a user look up in /etc/passwd to find the home directory, therefore thwarting portability. There are also cross distro package formats that do not require admin rights to run, like Autopackage, klik (now called AppImage), or CDE, but which gained only limited acceptance and support in the Linux community in the 2000s. Around 2015 the idea of portable and distro independent packing for the Linux ecosystem got more traction when Linus Torvalds discussed this topic on the DebConf 2014 and endorsed later AppImage for his dive log application Subsurface. For instance, MuseScore and Krita followed in 2016 and started to use AppImage builds for software deployment. RedHat released in 2016 the Flatpak system, which is a successor of Alexander Larsson's glick project which was inspired by klik (now AppImage). Similarly, Canonical released in 2016 Snap packages for Ubuntu and many other Linux distros. Many Mac applications that can be installed by drag and drop are inherently portable as Mac application bundles. Examples include Mozilla Firefox, Skype and Google Chrome which do not require admin access and do not need to be placed into a central, restricted area. Applications placed into /Users/username/Applications (~/Applications) are registered with macOS LaunchServices in the same way as applications placed into the main /Applications folder. For example, right clicking a file in Finder and then selecting "Open With " will show applications available from both /Applications and ~/Applications. Developers can create Mac product installers which allow the user to perform a home directory install, labelled "Install for me only" in the Installer user interface. Such an installation is performed as the user.