Portable application
From Wikipedia, the free encyclopedia
A portable application, or portable app for short, is a software program that does not require any kind of formal installation onto a computer's permanent storage device to be executed, and can be stored on a removable storage device such as a CD-ROM, USB flash drive, flash card, or even a floppy disk, enabling it to be used on multiple computers. This does not mean that it can be taken and used on a different operating system, processing platform, or another computer with completely different hardware (i.e., those that are not compatible with the software as stated by its requirements), so it is not to be confused with the concept of software portability, which is the ability for software to be run or compiled with little modification on diverse computing platforms. Ideally it can be configured to read its configuration files from the same storage location as the software program files.
Another term sometimes used for portable applications is standalone.
Contents |
[edit] Portable Windows applications
Most software for Microsoft Windows is not designed to be portable. The Windows registry, the way that .dll libraries are managed, and the structure of the Windows Installer all tend to make application installation a one-way event. Mainstream applications like Adobe Photoshop and Microsoft Word, for example, use the registry intensively, and store state information all over the file system, although software authoring guidelines suggest using the registry for settings and the user's profile (in the "My Documents" or "Documents and Settings" folders) for larger files dependent on a specific installation or the user's habits.
In order to make portable applications, software developers must make their software applications leave the computer they run on completely "clean". This means that the application cannot use the registry, nor store its files anywhere on the machine other than in the application's installation directory. When installed to removable media, a program would need to store settings in an INI file (or similar configuration file) rather than in the registry.
One alternative strategy that exists for achieving application portability within Windows, without requiring application source code changes, is called virtualization. By using virtualization, an application can be "buffered" with DLLs that would intercept all file system and registry calls. This virtualization layer would intercept all non-portable calls, and would direct output to files located in the application's installation directory. This approach would leave the application unchanged, yet portable.
[edit] Portable Macintosh applications
Many programs for Mac OS X have an inherent degree of portability as they are packaged as "drag-install" application bundles, rather than as Installer packages. However, many applications bundles are not truly portable as they store their preferences in files on the local disk where the OS is installed. Macintosh applications which are designed to be portable store their preferences in the drive they are being run from.
[edit] Portability on UNIX-based 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/98/ME (and to some degree in Windows XP/2000 - though not in Windows Vista) — 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 around using the HOME
environment variable to store settings (e.g. $HOME/.w3m
for the w3m browser). The dynamic linker also provides an environment variable LD_LIBRARY_PATH
so that libraries can be looked up in non-standard directories. This makes it particularly easy (from a technical point of view) to run a program off another spot. 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 en.wikipedia.org
Not all programs honor this however — some completely ignore $HOME and instead do a user lookup in /etc/passwd
to find the home directory, therefore thwarting portability.
[edit] Double portability
There is a very restricted category of software that can support a sort of double portability, being both stand alone and cross-platform compatible, able to run on different hardware with little or no modifications, perhaps with minor restrictions. One such software is SymbOS, whose main modules can in their present form be executed on both Amstrad CPC and MSX machines without modification. Only some of its bundled applications are hardware-dependent. To a much lesser extent, Macintosh fat binary applications could be considered as cross-platform, but not always truly portable.