Chocolatey Packages
What is a Chocolatey Package?
Chocolatey packages are known as nupkg files, which is a compiled NuSpec or a fancy zip file that knows about package metadata (including dependencies and versioning). These packages are enhanced NuGet packages; they have additional metadata that is specific to Chocolatey. Chocolatey is also compatible with vanilla NuGet packages. A Chocolatey package can contain embedded software and/or automation scripts.
Chocolatey packages are not just something fancy on top of MSI/EXE installers. Chocolatey supports that avenue and, with the addition of unzipping archives, it is the most widely used aspect of Chocolatey especially in regards to the packages on the Chocolatey Community Repository (CCR). Chocolatey’s core function is package management and it works best when those packages contain all the software it needs, instead of reaching out to external resources or the internet for the software those packages represent. The CCR is a single representation of how packages can be built driven by distribution rights that govern when packages can redistribute software. Distribution rights do not govern private or internal packages, so packages internal to organizations can accomplish more. For example, you can create software-embedded packages where the executables are automatically added to the path (a process called shimming). You can create PowerShell automation scripts that do almost anything you want, including running native installers that may be embedded or downloaded as part of the automation script (another aspect widely used by the community).
Packages with everything embedded are more deterministic and repeatable; aspects that are valued and in most cases required by businesses. This won’t be seen as often with community packages due to the aforementioned distribution rights.
The closer the underlying software a package represents is to the package itself (meaning the executables and files are included in the package), the more Chocolatey behaves like a package manager.