A Better Way of Installing and Updating Windows Packages

A guest editorial for Simple-Talk.

One of the most obvious drawbacks to Windows is the application update mechanism, or rather the lack of it. This is very likely to be remedied very soon. What is unusual about this is that Windows is likely to adopt a de-facto standard developed by the community, and based on NuGet.

There was a time when it didn’t much matter that the application update process was tedious. Spreadsheets and word processor software came out with a new version maybe once a year at best, and then on a CD-ROM or bundle of disks. Now, by contrast, even my Network-attached storage wants me to update it every few days, and many Windows applications beg to be updated every time I use them. New releases come rapidly but new features dribble out slowly. Continuous delivery doesn’t always suit the end-user when the update process is tediously manual.

The Windows ‘point-and-click’ corporate culture never appreciated the importance of package management tools, in much the way that it never understood shell scripting. It only understood the enterprise-wide solution based on group policy, and the clunky MSI, which is fine for large domains but not for the average user .

Apt-get, by contrast, is one of the simple pleasures of the Linux distributions, especially Debian and Ubuntu. Although the user is protected from the command-line interface by a cute UI, It takes just one command to upgrade any installed packages that need updating. Yum also provides a similar functionality.

Rob Reynolds, one of the instigators of NuGet, recognized the need for a windows-based package manager and packaging tool, and created Chocolatey written in PowerShell. It has developed over the years and is now well-used and highly regarded.

Chocolatey is an open-source community-developed system based on NuGet. It allows you to script the installation of applications with the very minimum of intervention. Even behemoths like Visual Studio can be installed this way. Once installed, you can run a job to update all applications that needs updating just by typing the command CUP ALL. It makes the installation and update process so easy. There is a kickstarter project underway to fund Chocolatey’s development.

The term ‘Chocolatey’ means both the application and the gallery of applications packaged up on a publicly-accessible site. Each package is moderated to ensure that it contains nothing beyond what is necessary to install the package itself. Chocolatey packages are largely created and maintained by the community and not the owners of the packaged software.

Now, the Microsoft PowerShell team have built a Chocolatey client called OneGet into the latest version of PowerShell so that the next version of Windows will talk to Chocolatey.

OneGet is already part of the latest version of PowerShell and it’s included by default in the Windows 10 Technical Preview. You can get it now as part of the Windows Management Framework 5.0 Preview for Windows 8.1. It isn’t so much an implementation of chocolatey, but a set of cmdlets to install/uninstall packages, add/remove/query package repositories, and query a system for the software installed. It is designed to work with a variety of package managers, but ships with an implementation of a package manager that can install existing Chocolatey packages.