Chocolatey is a package manager for Windows, like the built-in package managers on Linux, and third-party ones on macOS like Homebrew and MacPorts.
The idea is this: when you’re setting up a machine, you don’t want to have to think about which applications you need installed to get up and running. This could be a server or a development workstation, possibly even a gaming rig. Chocolatey provides an easy way to get a machine configured the way you want it, and fast too.
For example, on my development machine I have the following Chocolatey packages installed (using the command
choco list -localonly). While this seems like A Lot™ — as the kids say — a fair number of these packages are dependencies which are installed automatically. The KB (short for Microsoft Knowledge Base) packages are a great example of this.
- 7zip 21.7
- 7zip.install 21.7
- adobereader 2022.001.20085
- autohotkey.portable 126.96.36.199
- choco-cleaner 0.0.8.4
- chocolatey 1.1.0
- chocolatey-core.extension 188.8.131.52
- chocolatey-dotnetfx.extension 1.0.1
- chocolatey-visualstudio.extension 1.10.0
- chocolatey-windowsupdate.extension 1.0.4
- chocolateygui 1.0.0
- curl 7.82.0
- dotnet-5.0-sdk-1xx 5.0.104
- dotnet-5.0-sdk-2xx 5.0.212
- dotnet-6.0-sdk 6.0.201
- dotnet-6.0-sdk-1xx 6.0.103
- dotnet-6.0-sdk-2xx 6.0.201
- dotnet-sdk 6.0.201
- DotNet4.5.2 184.108.40.20640902
- DotNet4.6.1 4.6.01055.20170308
- dotnet4.7.1 4.7.2558.20190226
- dotnet4.7.2 220.127.116.1110903
- dotnetcore-3.1-sdk 3.1.417
- dotnetcore-3.1-sdk-4xx 3.1.417
- dotnetcore-sdk 3.1.417
- dotnetfx 18.104.22.16890930
- git 22.214.171.124
- git-fork 1.71.0
- git.install 126.96.36.199
- github-desktop 2.9.12
- gittfs 0.32.0
- hxd 188.8.131.52
- KB2533623 2.0.0
- KB2919355 1.0.20160915
- KB2919442 1.0.20160915
- KB2999226 1.0.20181019
- KB3033929 1.0.5
- KB3035131 1.0.3
- KB3063858 1.0.0
- KB3118401 1.0.5
- microsoft-windows-terminal 1.12.10732.0
- netfx-4.7.2 184.108.40.206
- notepadplusplus 8.3.3
- notepadplusplus.install 8.3.3
- nuget.commandline 6.1.0
- powershell-core 7.2.2
- pwsh 7.2.2
- resharper-platform 213.0.20220322.123209
- sql-server-management-studio 15.0.18410.0
- sysinternals 2022.2.16
- totalcommander 10.0.0.20210903
- vcredist140 14.31.31103.20220402
- vcredist2015 14.0.24215.20170201
- visualstudio-installer 2.0.2
- visualstudio2019enterprise 220.127.116.11
- vscode 1.66.0
- vscode.install 1.66.0
- windirstat 18.104.22.16861210
- wireshark 3.6.3
But, yes, that is a lot of packages, and just thinking about running regular updates is a headache. If these were installed manually, I’d have to go off to each vendor’s website and get updates manually. Luckily, and really the entire point of this, Chocolatey has a very cool feature which I call “upgrade y’all,” where you tell it to upgrade any outdated packages (from an elevated command prompt):
choco upgrade -y all
If I wanted to back up this configuration and deploy it to another machine, I would need to drop the list into a text file somehow, and once Chocolatey is installed on the new machine, tell it to install the things from the text file. Fortunately, Erik Hougaard has written a nifty script to do that for you, leveraging the amazing PowerShell.
Side note: if you want to know the best way to administer SQL Server, check out dbatools.io, a collection of hundreds of free PowerShell commandlets that make your life as a data professional easy, from database migrations to setting up availability groups.
Share your favourite Chocolatey recipes in the comments below and let us know how you jump-start your installs.
- Check out Boxstarter for automated Chocolatey-based Windows installs.
- You may not have heard of WinGet (styled
winget), which is a similar package manager for Windows 11. Jérémie Bertrand has a great article on switching from Chocolatey to WinGet if you’re interested.
The Chocolatey logo is copyright (c) 2022 Chocolatey Software, Inc.
Chocolatey is awesome and wonderful and I use it all the time, I would add sometimes there are additional install arguments that you might want to use.
My current updated list that I use is here. This enables me to set up a new Azure VM for example and quickly have it up and running with the tools I would like to be comfortable 🙂
But how many clever puns can I write about the additional installation options, Rob? ☺️