Automating Windows Setup via Chocolatey

When you're a software professional, 1 thing you must've dreaded is setting up a new Windows machine (as in a development environment). This might be as the setup either needs downloading multiple .MSI / .EXE files of the required applications or using the Microsoft App Store to install (personally I believe it's a little off the mark compared to the Linux/MacOS).

It's also compounded by the fact Windows systems are regarded relatively volatile so we never re-touch/re-configure applications once installed. You also must've surely wondered why Windows trails Linux/Mac OS when it comes to Command Line. Agreed, PowerShell changes most of that but learning a new syntax can be a little harrowing.

What if I told you this could be solved permanently via CLI? Enter Chocolatey to the rescue.

Chocolatey is a package manager specifically designed to solve these very problems for Windows OS. Consider it equivalent to apt, dnf or brew that'll ease work considerably, so much that you might never go back to tedious manual methods again.

Prerequisites:

  • Understanding how Powershell policies work such as Set-ExecutionPolicy, here is an excellent page to get you started.
  • From the Chocolatey official page
    • Windows 7+ / Windows Server 2003+
    • PowerShell v2+ (Not PowerShell Core, minimum is v3)
    • .NET Framework 4+ (installation attempts to install .NET 4.0 if absent, minimum is v4.5 due to TLS v1.2)
  • Excitement to learn something new and preferably a cup of tea/coffee.

Steps:

  • Follow this link to install Chocolatey.
  • If you get the below error, then install PowerShell v7.3 using this and then repeat the previous step.
  • Once the install completes, you should be able to execute choco --version.

And that's all when you prefer the vanilla install but if you like to dive deeper, you'll quickly realize a few concerns.

  • How can we install specific versions of software as needed?
  • What if we wanted to install multiple applications in 1 go, uninterrupted?
  • Can we rollout to multiple machines? (Note: some features for this point may need Chocolatey enterprise, please read the documentation as per your use-cases)

Lets answer the 1st two questions.

Number 1 is pretty simple, you just execute choco install vlc={version} and relax. Number 2 can be a little bit tricky but a handy way is to use the Packages.config which is an XML file containing the list of applications we want to install.

Now the command becomes choco install {path-to-file.config} --yes

Result?

On a fresh Windows 10 machine before this, it took me 2-3 hours to download & install the exes with atleast 70+ clicks (mostly clicking Next on GUI installers😛)

Now it took me ~35 minutes, which could be even lesser once we've the .config files ready as mentioned above.

Hope this guide helps you save time/effort similarly.

What are the ways you use to setup Windows environments?

22