Automating Windows Setup via Chocolatey
Vinay Hegde

Vinay Hegde @vinayhegde1990

About: Senior DevOps Engineer with 10+ years of experience. Otherwise an avid artist, reader, cinephile & football fan. Looking forward to connecting with everyone :)

Location:
Mumbai, India
Joined:
Feb 16, 2018

Automating Windows Setup via Chocolatey

Publish Date: Jul 25 '21
39 26

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.

Get-Execution error

  • 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

Here is a sample that you can use or create one/more referring it as per your requirements. You can also keep it under version control to have an audit for changes.

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?

Comments 26 total

  • djibe
    djibeJul 25, 2021

    Hi,
    I did the same performance with Winget recently.
    And Winstall (winstall.app/) is awesome for this.

    • jonjpbm
      jonjpbmJul 26, 2021

      "The winget tool is currently a preview, so not all planned functionality is available at this time."

      docs.microsoft.com/en-us/windows/p...

      • Vinay Hegde
        Vinay HegdeJul 26, 2021

        Yes I remember winget isn't live yet so it won't be usable for all. Also chocolatey is relatively evolved and supports more functions along with a super helpful community.

        Thanks for the ideas @jonjpbm and @djibe

    • jonjpbm
      jonjpbmJul 26, 2021

      Also

      "The winget tool requires Windows 10, version 1809 (10.0.17763), or a later version of Windows 10."

      Which might be limiting.

  • Jon Randy 🎖️
    Jon Randy 🎖️Jul 26, 2021

    The steps I usually use are:

    1) Download the iso image for Ubuntu
    2) Make a bootable USB drive
    3) Wipe Windows with Ubuntu
    4) Proceed from there

    • Vinay Hegde
      Vinay HegdeJul 26, 2021

      @jonrandy +1 if that's sarcasm but you could lessen effort even further by not installing Windows at all

      • Jon Randy 🎖️
        Jon Randy 🎖️Jul 26, 2021

        I didn't. Damn near impossible to get a machine with Ubuntu pre-installed here in Thailand

        • Vinay Hegde
          Vinay HegdeJul 26, 2021

          Hard luck there! It can be skipped if an assembled PC is available but a laptop will surely come with Windows pre-installed so now I know why step 3 is needed.

  • Vinay Hegde
    Vinay HegdeJul 31, 2021

    @sharpninja what exactly do you mean by this?

  • Vinay Hegde
    Vinay HegdeJul 31, 2021

    Looks interesting but any specific reason one should prefer Freshbuild over any of the above installers?

  • Vinay Hegde
    Vinay HegdeJul 31, 2021

    I agree, but from observation people don't do it proactively for Windows

  • Vinay Hegde
    Vinay HegdeJul 31, 2021

    Useful feature but multiple managers could mess up app installs or cause interference with one another.

  • Vinay Hegde
    Vinay HegdeAug 1, 2021

    Scoop has more dev tools + an extras bucket for non-dev stuff (Skype, Slack etc..) but some apps are either missing or a bit dated.

    Overall very promising, thanks for the info

  • Vinay Hegde
    Vinay HegdeAug 2, 2021

    That's because of a handshake between Microsoft's arcane documentation and burnt child dreads the fire experiences people have had when tinkering with Windows until now. But it does seem Windows 11 will change that perception for the better.

  • Vinay Hegde
    Vinay HegdeAug 3, 2021

    When it's Windows, people aren't intentionally uninformed but rather due to unawareness or little/no choice/lack of alternatives.

  • Vinay Hegde
    Vinay HegdeAug 4, 2021

    Please re-read my previous comments, I already have.

  • Vinay Hegde
    Vinay HegdeAug 4, 2021

    Unsure how you interpeted circular logic out of those 2 comments, let me make it easier

    Tweaking Windows to one's preferences is difficult as Microsoft doesn't permit changes to the OS or any components in it. They also have a history of botched OTA updates.

    This then leads people to stay away from customisations & ignore future updates willfully as they don't want to tamper a working environment & impact their daily work.

Add comment