A portable application (portable app), sometimes also called
standalone software, is a
computer program
A computer program is a sequence or set of instructions in a programming language for a computer to Execution (computing), execute. It is one component of software, which also includes software documentation, documentation and other intangibl ...
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.
Portable applications can be stored on any
data storage device
Data ( , ) are a collection of discrete or continuous values that convey information, describing the quantity, quality, fact, statistics, other basic units of meaning, or simply sequences of symbols that may be further interpreted form ...
, including internal
mass storage
In computing, mass storage refers to the storage of large amounts of data in a persisting and machine-readable fashion. In general, the term ''mass'' in ''mass storage'' is used to mean ''large'' in relation to contemporaneous hard disk drive ...
, a
file share,
cloud storage
Cloud storage is a model of computer data storage in which data, said to be on "the cloud", is stored remotely in logical pools and is accessible to users over a network, typically the Internet. The physical storage spans multiple servers (so ...
or external storage such as
USB drives, pen drives and
floppy disk
A floppy disk or floppy diskette (casually referred to as a floppy, a diskette, or a disk) is a type of disk storage composed of a thin and flexible disk of a magnetic storage medium in a square or nearly square plastic enclosure lined with a ...
s—storing its program files and any configuration information and data on the storage medium alone. If no configuration information is required a portable program can be run from
read-only storage such as
CD-ROM
A CD-ROM (, compact disc read-only memory) is a type of read-only memory consisting of a pre-pressed optical compact disc that contains computer data storage, data computers can read, but not write or erase. Some CDs, called enhanced CDs, hold b ...
s and
DVD-ROMs. Some applications are available in both
installable and portable versions.
Some applications which are not portable by default do support optional portability through other mechanisms, the most common being
command-line arguments. Examples might include
/portable
to simply instruct the program to behave as a portable program, or
--cfg=/path/inifile
to specify the configuration file location.
Like any application, portable applications must be compatible with the computer system hardware and
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
.
Depending on the operating system, ''portability'' is more or less complex to implement; to operating systems such as
AmigaOS
AmigaOS is a family of proprietary native operating systems of the Amiga and AmigaOne personal computers. It was developed first by Commodore International and introduced with the launch of the first Amiga, the Amiga 1000, in 1985. Early versions ...
, all applications are by definition portable.
Portable Windows applications
Most portable applications do not leave files or settings on the host computer or modify the existing system and its configuration. The application may not write to the
Windows registry
The Windows Registry is a hierarchical database that stores low-level settings for the Microsoft Windows operating system and for applications that opt to use the registry. The kernel, device drivers, services, Security Accounts Manager, a ...
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
Application virtualization is a software technology that encapsulates computer programs from the underlying operating system on which they are executed. A fully virtualized application is not installed in the traditional sense, although it is sti ...
: 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
ActiveX is a deprecated software framework created by Microsoft that adapts its earlier Component Object Model (COM) and Object Linking and Embedding (OLE) technologies for content downloaded from a network, particularly from the World Wide W ...
, 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
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
(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
API
An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
s.
Portability on Unix-like systems
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
Windows 95 is a consumer-oriented operating system developed by Microsoft and the first of its Windows 9x family of operating systems, released to manufacturing on July 14, 1995, and generally to retail on August 24, 1995. Windows 95 merged ...
/
98/
ME (and to some degree in
Windows XP
Windows XP is a major release of Microsoft's Windows NT operating system. It was released to manufacturing on August 24, 2001, and later to retail on October 25, 2001. It is a direct successor to Windows 2000 for high-end and business users a ...
/
2000
2000 was designated as the International Year for the Culture of Peace and the World Mathematics, Mathematical Year.
Popular culture holds the year 2000 as the first year of the 21st century and the 3rd millennium, because of a tende ...
, though not in
Windows Vista
Windows Vista is a major release of the Windows NT operating system developed by Microsoft. It was the direct successor to Windows XP, released five years earlier, which was then the longest time span between successive releases of Microsoft W ...
or
Windows 7
Windows 7 is a major release of the Windows NT operating system developed by Microsoft. It was Software release life cycle#Release to manufacturing (RTM), released to manufacturing on July 22, 2009, and became generally available on October 22, ...
)—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
A home, or domicile, is a space used as a permanent or semi-permanent residence for one or more human occupants, and sometimes various companion animals. Homes provide sheltered spaces, for instance rooms, where domestic activity can be p ...
environment variable
An environment variable is a user-definable value that can affect the way running processes will behave on a computer. Environment variables are part of the environment in which a process runs. For example, a running process can query the va ...
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
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
Linker or linkers may refer to:
Computing
* Linker (computing), a computer program that takes one or more object files generated by a compiler or generated by an assembler and links them with libraries, generating an executable program or shar ...
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,
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
Linus Benedict Torvalds ( , ; born 28 December 1969) is a Finnish software engineer who is the creator and lead developer of the Linux kernel. He also created the distributed version control system Git.
He was honored, along with Shinya Yam ...
discussed this topic on the
DebConf 2014 and endorsed later
AppImage for his
dive log application
Subsurface.
For instance,
MuseScore
MuseScore Studio (branded as MuseScore before 2024) is a Free and open-source software, free and open-source music notation program for Microsoft Windows, Windows, macOS, and Linux under the Muse Group, which owns the associated online score-s ...
and
Krita
Krita ( ) is a free and open-source software, free and open-source raster graphics editor designed primarily for digital art and 2D animation. Originally created for Linux, the software also runs on Windows, macOS, Haiku (operating system), Hai ...
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 called AppImage). Similarly,
Canonical released in 2016
Snap packages for
Ubuntu
Ubuntu ( ) is a Linux distribution based on Debian and composed primarily of free and open-source software. Developed by the British company Canonical (company), Canonical and a community of contributors under a Meritocracy, meritocratic gover ...
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
Mozilla Firefox, or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. It uses the Gecko rendering engine to display web pages, which implements curren ...
,
Skype
Skype () was a proprietary telecommunications application operated by Skype Technologies, a division of Microsoft, best known for IP-based videotelephony, videoconferencing and voice calls. It also had instant messaging, file transfer, ...
and
Google Chrome
Google Chrome is a web browser developed by Google. It was first released in 2008 for Microsoft Windows, built with free software components from Apple WebKit and Mozilla Firefox. Versions were later released for Linux, macOS, iOS, iPadOS, an ...
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.
See also
*
Load drive
*
List of portable software
**
WinPenPack
*
Portable application creators
**
PortableApps.com
**
U3
*
Application virtualization
Application virtualization is a software technology that encapsulates computer programs from the underlying operating system on which they are executed. A fully virtualized application is not installed in the traditional sense, although it is sti ...
**
Turbo (software)
**
VMware ThinApp
*
Live USB
**
Ceedo
**
Portable-VirtualBox
Oracle VirtualBox (formerly Sun VirtualBox, Sun xVM VirtualBox and InnoTek VirtualBox) is a hosted hypervisor for x86 virtualization developed by Oracle Corporation. VirtualBox was originally created by InnoTek Systemberatung GmbH, which was ac ...
**
Windows To Go
Windows To Go was a feature in Windows 8 Enterprise, Windows 8.1 Enterprise, Windows 10 Education Windows 10 Enterprise and Windows 11 versions prior to the May 2020 update, that allows the system to boot and run from certain USB mass storag ...
*
Data portability
*
Interoperability
Interoperability is a characteristic of a product or system to work with other products or systems. While the term was initially defined for information technology or systems engineering services to allow for information exchange, a broader de ...
References
{{Reflist