Andy Crouch - Code, Technology & Obfuscation ...

Windows Package Management With Chocolatey

Coffee Beans And Dark Chocolate Chuncks

Photo: Unsplash

Package managers are awesome. They blew my mind when I first encountered them and they have only got better over the intervening years.

Package managers also suck! Or more to the point it sucks that there is not a single package manager. While trying not to start a hate campaign, think how awesome a package manager we’d have if all of the developers worked together on one?

Anyway, this post is not about Linux package managers it is about Chocolatey. Chocolatey is a package manager for Windows. Surprised? I was when I first read about it a few years ago. I meant to use it when I last set up a Windows laptop and forgot all about it. With a new laptop on order, I thought now was a good time to look at it.

So what is Chocolatey? According to the website:

Chocolatey is a global PowerShell execution engine using the NuGet packaging infrastructure. Think of it as the ultimate automation tool for Windows. Chocolatey is a package manager that can also embed/wrap native installers and has functions for downloading and checksumming resources from the internet - useful for when you have public packages, but don’t have distribution rights for the underlying software that packages represent (seen all the time with publicly available packages on the community repository).

Installing it is very easy. Open a Powershell with administrative privileges and enter:

PS> iwr https://chocolatey.org/install.ps1 -UseBasicParsing | iex

(Further details should you need them are here.)

For Chocolatey to work once installed you will need to ensure you have set your Powershell script Execution Policy. Full details can be found here. I use RemoteSigned on my machine.

Once installed you can install a package by using the install command:

PS> choco install packagename args 

For example:

PS> choco install sysinternals

Chocolatey has all the commands you would expect for a package manager and they are documented here here.

The great thing is Chocolatey is powered by Powershell. You can create scripts to initialise your machines should you use VM’s or switch machines often. This is exactly what I have done. Passing the -y argument will progress the installation without asking for your permission.

The only drawback I can find right now is the speed that packages are created. For example, there is no package that I can find for Visual Studio 2017 right now. You can look through the available packages here.

On the whole, so far it seems quite good. The speed of installations depends on the applications installation method. The only thing I would like is an update notifier which I have not found yet. I may create one in the next few weeks so keep an eye out.