Portable vs non portable applications


What makes an application able to be portable?
Additionally what is the difference between applications that require an installer and those that can be installed from an archive?

In: 1

They differ by the location where the program stores its configuration. “Portable” software saves to the directory where it is executed from. It may be copied to another computer and retain its settings. Other software writes to a directory that is chosen by the operating system for the currently active user. It is compatible with a setup where the installation directory is protected from writing and can be used by multiple user accounts each with its own settings.

Software distributed with an installer may depend on shared components copied to the system directory, it may rely on integration with other software allowing it to call this application in the background, or it may set up hidden copy protection. An installer may be provided for the convenience of novice users who are familiar with following a setup wizard but not with copying files by hand.

The definition may vary dependent upon what one’s point of view is.

From a hardware guy, a portable application is one which does not have code specific to the hardware on which it is run. It may assume that there are drivers to perform the function, but it shouldn’t make low level calls directly to a specific feature of the hardware.

For example, suppose you need to perform a number of fast multiplications. Some hardware may a special hardware multiplier in the ALU which can be accessed via a specific assembler command (normal multiplications will take multiple clock cycles to execute). If your code explicitly uses this assembler command (generally through a MACRO command) then it is NOT portable unless you specifically make a check if the hardware supports the command and uses an alternative compiler specified multiplication command if the hardware does not support the special command.