Installation (computer programs)
Installation (or setup) of a computer program (including device drivers and plugins), is the act of making the program ready for execution. Installation refers to the particular configuration of a software or hardware with a view to making it usable with the computer. A soft or digital copy of the piece of software (program) is needed to install it. There are different processes of installing a piece of software (program). Because the process varies for each program and each computer, programs (including operating systems) often come with an installer, a specialised program responsible for doing whatever is needed (see below) for the installation.  Installation may be part of a larger software deployment process.

Installation typically involves code (program) being copied/generated from the installation files to new files on the local computer for easier access by the operating system, creating necessary directories, registering environment variables, providing separate program for un-installation etc. Because code is generally copied/generated in multiple locations, uninstallation usually involves more than just erasing the program folder. For example, registry files and other system code may need to be modified or deleted for a complete uninstallation.

Overview
Some computer programs can be executed by simply copying them into a folder stored on a computer and executing them. Other programs are supplied in a form unsuitable for immediate execution and therefore need an installation procedure. Once installed, the program can be executed again and again, without the need to reinstall before each execution.

Common operations performed during software installations include:
 Making sure that necessary system requirements are met
 Checking for existing versions of the software
 Creating or updating program files and folders
 Adding configuration data such as configuration files, Windows registry entries or environment variables
 Making the software accessible to the user, for instance by creating links, shortcuts or bookmarks
 Configuring components that run automatically, such as daemons or Windows services
 Performing product activation
 Updating the software versions
These operations may require some charges or be free of charge. In case of payment, installation costs means the costs connected and relevant to or incurred as a result of installing the drivers or the equipment in the customers' premises.

Some installers may attempt to trick users into installing junkware such as various forms of adware, toolbars, trialware or software of partnering companies. To prevent this, extra caution on what exactly is being asked to be installed is needed. The installation of additional software then can simply be skipped or unchecked (this may require the user to use the "custom", "detailed" or "expert" version of the installation procedure).Such malicious conduct is not necessarily a decision by the software developers or their company but can also be an issue of external installers such as the Download.com installer by CNET.

Necessity
As mentioned earlier, some computer programs need no installation. This was once usual for many programs which run on DOS, Mac OS, Atari TOS and AmigaOS. As computing environments grew more complex and fixed hard drives replaced floppy disks, the need for tangible installation presented itself. For example Commodore released the Installer for Amiga.

A class of modern applications that do not need installation are known as portable applications, as they may be roamed around onto different computers and run. Similarly, there are live operating systems, which do not need installation and can be run directly from a bootable CD, DVD, USB flash drive or loaded over the network as with thin clients. Examples are AmigaOS 4.0, various Linux distributions, MorphOS or Mac OS versions 1.0 through 9.0. (See live CD and live USB.) Finally, web applications, which run inside a web browser, do not need installation.

Types

Attended installation 
On Windows systems, this is the most common form of installation. An installation process usually needs a user who attends it to make choices, such as accepting or declining an end-user license agreement (EULA), specifying preferences such as the installation location, supplying passwords or assisting in product activation. In graphical environments, installers that offer a wizard-based interface are common. Attended installers may ask users to help mitigate the errors. For instance, if the disk in which the computer program is being installed was full, the installer may ask the user to specify another target path or clear enough space in the disk. A common misconception is unarchivation, which is not considered an installation action because it does not include user choices, such as accepting or declining EULA.

Silent installation 
Installation that does not display messages or windows during its progress. "Silent installation" is not the same as "unattended installation" (see below): All silent installations are unattended but not all unattended installations are silent. The reason behind a silent installation may be convenience or subterfuge. Malware is almost always installed silently.
For normal users silent installation is of not much use , but in bigger organizations where thousands of users work, deploying the applications becomes a typical task and for that reason silent installation is performed so that the application is installed in background without affecting the work of user.
Silent parameters can vary from software to software, if a software/application has silent parameters , it can be checked by " <software.exe> /? " or " <software.exe> /help " or " <software.exe> -help ".

Unattended installation 
Installation that is performed without user interaction during its progress or with no user present at all. One of the reasons to use this approach is to automate the installation of a large number of systems. An unattended installation either does not require the user to supply anything or has received all necessary input prior to the start of installation. Such input may be in the form of command line switches or an answer file, a file that contains all the necessary parameters. Windows XP and most Linux distributions are examples of operating systems that can be installed with an answer file. In unattended installation, it is assumed that there is no user to help mitigate errors. For instance, if the installation medium was faulty, the installer should fail the installation, as there is no user to fix the fault or replace the medium. Unattended installers may record errors in a computer log for later review.

Headless installation 
Installation performed without using a computer monitor connected. In attended forms of headless installation, another machine connects to the target machine (for instance, via a local area network) and takes over the display output. Since a headless installation does not need a user at the location of the target computer, unattended headless installers may be used to install a program on multiple machines at the same time.

Scheduled or automated installation 
An installation process that runs on a preset time or when a predefined condition transpires, as opposed to an installation process that starts explicitly on a user's command. For instance, a system administrator willing to install a later version of a computer program that is being used can schedule that installation to occur when that program is not running. An operating system may automatically install a device driver for a device that the user connects. (See plug and play.) Malware may also be installed automatically. For example, the infamous Conficker was installed when the user plugged an infected device to their computer.

Clean installation 
A clean installation is one that is done in the absence of any interfering elements such as old versions of the computer program being installed or leftovers from a previous installation. In particular, the clean installation of an operating system is an installation in which the target disk partition is erased before installation. Since the interfering elements are absent, a clean installation may succeed where an unclean installation may fail or may take significantly longer.

Network installation 

Network installation, shortened netinstall, is an installation of a program from a shared network resource that may be done by installing a minimal system before proceeding to download further packages over the network. This may simply be a copy of the original media but software publishers which offer site licenses for institutional customers may provide a version intended for installation over a network.

Installer

An installation program or installer is a computer program that installs files, such as applications, drivers, or other software, onto a computer.  Some installers are specifically made to install the files they contain; other installers are general-purpose and work by reading the contents of the software package to be installed.

They exist both as "standalone installer" (or "offline installer") and "web installer" (or "online installer"), where the former allows for offline installation as it contains all installation files, whereas the latter needs to download files necessary for installation from the web at the time of installation.

The differences between a package management system and an installer are:

Bootstrapper 
During an installation of a computer program, it is sometimes necessary to update the installer or package manager itself. To make this possible, a technique called bootstrapping is used. The common pattern for this is to use small executable files which update the installer and starts the real installation after the update. This small executable is called bootstrapper. Sometimes the bootstrapper installs other prerequisites for the software during the bootstrapping process too.

Common types

Cross-platform installer builders produce installers that run on Windows, macOS and Linux. An example is InstallAnywhere by Flexera Software.

Windows NT family includes an installation API and an associated service called Windows Installer. Microsoft provides a minimum level of tools required to create installers using Windows Installer in the freely available Windows SDK, instead focusing on the API to allow developers and third parties to leverage it in creating custom installers. Third party tools may supporting create installers using this API to speed the process. Examples include InstallShield (Flexera Software) and WiX (Outercurve Foundation). Installation authoring tools that do not rely on Windows Installer include Wise Installation Studio (Wise Solutions, Inc.), Installer VISE (MindVision Software), Visual Installer (SamLogic), NSIS, Clickteam, InnoSetup and InstallSimple.

macOS includes Installer, a native package manager. macOS also includes a separate software updating application, Software Update but only supports Apple and system software. Included in the dock as of 10.6.6, the Mac App Store shares many attributes with the successful App Store for iOS devices, such as a similar app approval process, the use of Apple ID for purchases, and automatic installation and updating. Although this is Apple's preferred delivery method for macOS, previously purchased licenses can not be transferred to the Mac App Store for downloading or automatic updating. Commercial applications for macOS may also use a third-party installer, such as Mac version of Installer VISE (MindVision Software) or InstallerMaker (StuffIt).

System installer 
A system installer is the software that is used to set up and install an operating system onto a device. Examples of system installers on Linux are Ubiquity and Wubi for Ubuntu, Anaconda for CentOS and Fedora, Debian-Installer for Debian-based versions of Linux, and YaST for SUSE-based projects. Another example is found in the Haiku operating system, which uses a utility called Haiku Installer to install itself onto a device after booting from a live CD or live USB.

See also
 Application streaming
 Application virtualization
 Pre-installed software
 Self-extractable archive
 Software distribution
 Uninstaller

References