Monday, October 14, 2013


When I am using Linux and I want to install some additional software, I use the distro's package manager first.  The version might be a bit behind the latest, but I know that it will install and be setup in a manner that is consistent with the distro.  Sometimes, the hardest part is figuring out what the name of the package is.

Package managers for Linux have been around for years.  There are a ton of them, and overall, they work pretty much the same.

Windows is more difficult.  You have to find an installer, download it, and go through one of many different installation processes - from wizards to stand-alone unzip into a directory.  In addition, it is even more difficult to perform silent command line installations.

Uninstalling becomes another difficult factor - do you still have the MSI in a place where you can /x if it supports it, or use the UI Add/Remove Programs.

The most difficult and inconsistent is updating software.  How do you know if there is an update?  Where did you go to download it?  Do you first have to remove the current version, or does it upgrade over it?

Deploying custom software adds more complexities.  Do you use Wix to create the MSI, or one of the Visual Studio installer projects that seem to keep becoming obsolete?

Thankfully, the community is working to solve this issue.  Chocolatey is a package manager for Windows.  It provides a consistent interface for adding, removing, and updating programs.  It uses NuGet packages, so the barrier to entry is small as it will integrate with your existing build process and NuGet infrastructure.

I highly recommend you stop the manual process of finding, downloading, installing, and maintaining software and let Chocolatey do that for you.

In addition, I recommend you use Chocolatey as the installation package for your custom applications and websites.  It integrates well enough with Chef and will only get better over time.