Automatically install software on new Windows install

There are a many, many ways to automatically install software on Windows. Configuring them the way you want is a different matter, but doable depending on various factors.

There are popular applications like Ninite, AllMyApps, and others, which have a premade list of popular software applications. It will automatically download the latest versions and install them with a few clicks. As far as I know, these software installers will only install the software, not configure them for you.

If you are part of an Active Directory domain, Group Policy can automatically install applications. This does require the installers to be pre-downloaded.

There are numerous management apps that will push software as well. They are aimed more for the enterprise. However, many are free of cost. Just do a Google search.

Another method, although I have a feeling that it isnt what you are looking for, is disk imaging. Symantec Ghost and Clonezilla along with tools like Sysprep allow you to make an image of an existing machine and then create infinite amount of completely identical and configured machines in almost no time.

Pushing software is the easy part, its the configuration that is the hard part. The problem stems from the fact every application stores configuration settings differently. Some use registry settings, some use a text file, some may use a database, others may be server based or cloud based (internet) configurations, and even others may be something else or a combination of the previous methods. Some packages will let you create custom installers or push a config with its installers, other you can manually modify the installer itself, others you might have to write a script...

Personally, for home use, I just keep a copy of all the installers I download. I dont go through the trouble of building custom installers. If there is a text file config, then I just make a copy or just make notes or screen caps of configuration info and keep them in the cloud like in Evernote or DropBox for easy access.


I think Chocolatey should be a good fit for the application-management component of your problem. Here's an overview via Wikipedia:

Chocolatey is a machine-level, command-line package manager and installer for Windows software. It uses the NuGet packaging infrastructure and Windows PowerShell to simplify the process of downloading and installing software.

You can use Chocolatey to script repeatable installation of a wide range of applications. You can also run it via CLI from other configuration management tooling (such as Ansible) to completely automate your "rebuild a fresh machine" use-case.

Tool selection largely depends on your skillset (end user through to devops engineer), frequency of machine rebuilds, and scale (are you deploying to a single pet machine, or a fleet).

If you prefer a GUI, Ninite is still one of the simplest but has a much smaller set of available applications.