What is Chocolatey?

The Package Manager for Windows!

Paul Broadwith
  • Paul Broadwith, Glasgow, Scotland
  • 30 years in IT in financial, government, manufacturing and services sectors
  • Technical Engineering Manager at Chocolatey Software, Inc.
  • Lead Engineer on Boxstarter and cChoco DSC Resource

MVP Logo
Chocolatey Logo
Microsoft Certified Trainer Logo
 
  • High level overview of Chocolatey

  • Understand what Chocolatey is

  • Learn why Chocolatey was created - what pain points does it solve?

  • Learn what the Chocolatey Community Repository is and when you should, and should not, use it

  • Understand the process when you submit a package to the Chocolatey Community Repository

The world of package managers

A sad and brief comparison

To install PowerShell Core on Linux:

apt install -y powershell
yum install -y powershell
pacman -S powershell

To install PowerShell Core on Mac:

brew cask install powershell

To install PowerShell Core on Windows:

Next, Next, Next

Why Chocolatey?

  • Chocolatey is the package manager for Windows

  • Created by Rob Reynolds (@ferventcoder)

  • First version released on 23 March 2011

  • Chocolatey is almost 11 years old!

  • Latest version is 0.11.3

  • Version 1.0 released soon - watch this space!

Through Chocolatey, now Windows can install PowerShell Core:

choco install powershell-core -y

Chocolatey Logo

Chocolatey Prerequisites

  • Windows 8.1 / Server 2008R2 in Azure

  • Older Operating Systems may work with some hoop jumping

  • Windows PowerShell 2

  • .NET 4 (TLS 1.2 requires .NET 4.5)

Fundamental Tenet Of Chocolatey

Chocolatey manages packages. Packages manage installers.

Chocolatey does not manage installers.

What Is A Chocolatey Package?

What is a Chocolatey package:

  • Special Zip file with a .nupkg extension

  • Commonly called ‘nupkeg’ or ‘noo package’ due to file extension

  • It contains metadata, PowerShell scripts and sometimes other files

  • Builds on NuGet package framework while remaining compatible with v2 repositories

packagename.nuspec


chocolateyInstall.ps1


googlechrome.msi

What can a Chocolatey package do:

  • Chocolatey PowerShell

  • PowerShell scripts install, upgrade and uninstall software

  • Almost anything you can do in PowerShell you can do with a Chocolatey package

chocolateyInstall.ps1


chocolateyBeforeModify.ps1


chocolateyUninstall.ps1

Demo 1

Lets look at a Chocolatey package

Chocolatey Community Repository

Everything you wanted to know but were afraid to ask.

  • Community Repository is at https://community.chocolatey.org hosted by Chocolatey

  • Chocolatey uses it as the default ‘chocolatey’ package source

  • The repository is an OData Nuget v2 feed

  • Vast majority of packages created by volunteer maintainers

  • Some vendors maintain their own packages

  • Repository is for the many and not the few - use is monitored

  • Licensing is important - does not have redistribution rights

Monthly website stats as of November 2021:

  • 2.92B requests

  • 226.35TB of data

  • 11.81M visitors

Push
choco push mypackage.1.0.0.nupkg
  --api-key="'123456'"

Received
  • Package Validator
  • Package Verifier
  • Package Scanner
  • Human Moderator

Approved Monthly Package Verifier

Demo 2

Manage Chocolatey packages

Summary

  • We know what Chocolatey is

  • We know what pain point it solves

  • We learned what the Chocolatey Community Repository is

  • We followed the process when you submit a package to the Chocolatey Community Repository

blog.pauby.com
Paul Broadwith
@pauby
github.com/pauby
pau.by/linkedin

pau.by/talks