Chocolatey is a package manager for Windows (like apt-get but for Windows). It was designed to be a decentralized framework for quickly installing applications and tools that you need. It is built on the NuGet infrastructure currently using PowerShell as its focus for delivering packages from the distros to your door, err computer.
Chocolatey is brought to you by the work and inspiration of the community, the work and thankless nights of the [Chocolatey Team](https://github.com/orgs/chocolatey/members), with Rob heading up the direction.
You can host your own sources and add them to Chocolatey, you can extend Chocolatey's capabilities, and folks, it's only going to get better.
There are quite a few commands you can call - you should check out the [command reference](https://github.com/chocolatey/choco/wiki/CommandsReference). Here are the most common:
* Search - choco search something
* List - choco list -lo
* Install - choco install baretail
* Pin - choco pin windirstat
* Upgrade - choco upgrade baretail
* Uninstall - choco uninstall baretail
Alternative installation sources (TEMPORARILY DISABLED IN 0.9.9):
* Install ruby gem - choco install compass -source ruby
* Install python egg - choco install sphynx -source python
* Install windows feature - choco install IIS -source windowsfeatures
* Install webpi feature - choco install IIS7.5Express -source webpi
For more advanced commands and switches, use `choco -?` or `choco command -h`. You can also look at the [command reference](https://github.com/chocolatey/choco/wiki/CommandsReference), including how you can force a package to install the x86 version of a package.
### Create Packages?
We have some great guidance on how to do that. Where? I'll give you a hint, it rhymes with sticky! [Wiki!](https://github.com/chocolatey/choco/wiki/CreatePackages)
In that mess there is a link to the [Helper Reference](https://github.com/chocolatey/choco/wiki/HelpersReference).
See the version list below for details.
Install-Package chocolatey -Version 0.9.9.8
dotnet add package chocolatey --version 0.9.9.8
<PackageReference Include="chocolatey" Version="0.9.9.8" />
paket add chocolatey --version 0.9.9.8
See all - https://github.com/chocolatey/choco/blob/master/CHANGELOG.md
### BUG FIXES
* Fix: choco install -y C: deletes all files - see [#341](https://github.com/chocolatey/choco/issues/341)
* Fix: Read-Host halts scripts rather than prompt for input - see [#219](https://github.com/chocolatey/choco/issues/219)
* Download Progress Bar is Missing - see [#56](https://github.com/chocolatey/choco/issues/56)
"Fix Everything. Fix All The Things" - There have been some things bugging us for a long time related to limitations with NuGet, so we decided to fix that. Like [nuspec enhancements](https://github.com/chocolatey/choco/issues/205), that crazy [content folder restriction](https://github.com/chocolatey/choco/issues/290) has been removed (I know, right?!), and we're working around [badly](https://github.com/chocolatey/choco/issues/316) [behaved](https://github.com/chocolatey/choco/issues/326) packages quite a bit more to bring you more feature parity.
Let's talk about a couple of big, like really big, BIG features just added with this release. No more packages rebooting Windows. We fixed ([#304](https://github.com/chocolatey/choco/issues/304) / [#323](https://github.com/chocolatey/choco/issues/323)) and [enhanced](https://github.com/chocolatey/choco/issues/305) up the Auto Uninstaller Service quite a bit to ensure things are working like you would expect (It goes on by default in 0.9.10 - we'll start documenting more about it soon). But wait, there's more! I haven't even told you about the big features yet
The first big feature is enhancing the nuspec. I mentioned this I know, but *now* you can use `packageSourceUrl` in the nuspec to tell folks where you are storing the source for the package! We also added `projectSourceUrl`, `docsUrl`, `mailingListUrl`, and `bugTrackerUrl`. What's even better is that the community feed has already been enhanced to look for these values. So have the templates from `choco new`. And it's backwards compatible, meaning you can still install packages that have these added nuspec enhancements without issue (but we will need to provide a fix for Nuget Package Explorer).
The second is Xml Document Transformations (XDT), which I think many folks are aware of but may not realize what it can provide. [NuGet has allowed transformations for quite awhile](https://docs.nuget.org/Create/Configuration-File-and-Source-Code-Transformations) to allow you to make changes to an `app.config`/`web.config` on install/uninstall. We are following in similar footsteps to allow you to do similar when installing/upgrading packages. We will look for `*.install.xdt` files in the package (doesn't matter where) and they will apply to configuration files with the same name in the package. This means that during upgrades we won't overwrite configuration files during upgrades that have opted into this feature. It allows you to give users a better experience during upgrades because they won't need to keep making the same changes to the xml config files each time they upgrade your package.
* Allow XDT Configuration Transforms - see [#331](https://github.com/chocolatey/choco/issues/331)
* Prevent reboots - see [#316](https://github.com/chocolatey/choco/issues/316)
* Enhance the nuspec - first wave - see [#205](https://github.com/chocolatey/choco/issues/205)
* Uninstaller Service Enhancements - see [#305](https://github.com/chocolatey/choco/issues/305)
### BUG FIXES
* When uninstall fails, do not continue removing files - see [#315](https://github.com/chocolatey/choco/issues/315)
* Do not run autouninstaller if the package result is already a failure - see [#323](https://github.com/chocolatey/choco/issues/323)
* Fix - Auto Uninstaller can fail if chocolateyUninstall.ps1 uninstalls prior to it running - see [#304](https://github.com/chocolatey/choco/issues/304)
* Fix - Packages with content folders cannot have a dependency without also having a content folder - see [#290](https://github.com/chocolatey/choco/issues/290)
* Remove ShimGen director files on upgrade/uninstall - see [#326](https://github.com/chocolatey/choco/issues/326)
* If feature doesn't exist, throw an error - see [#317](https://github.com/chocolatey/choco/issues/317)
* Fix - The operation completed successfully on stderr - see [#249](https://github.com/chocolatey/choco/issues/249)
* Fix - When specific nuget version is needed by a package it is the chocolatey version that is used - see [#194](https://github.com/chocolatey/choco/issues/194)
* When installing with *.nupkg, need to get package name from package, not file name - see [#90](https://github.com/chocolatey/choco/issues/90)
* Fix - Choco pin list is not returning a list - see [#302](https://github.com/chocolatey/choco/issues/302)
* Fix - A pin is not created for existing installations (prior to new choco) - see [#60](https://github.com/chocolatey/choco/issues/60)
* Allow upgrade to always install missing packages - see [#300](https://github.com/chocolatey/choco/issues/300)
* Enhance Templates - see [#296](https://github.com/chocolatey/choco/issues/296)
* Always log debug output to the log file - see [#319](https://github.com/chocolatey/choco/issues/319)
* Warn when unable to snapshot locked files - see [#313](https://github.com/chocolatey/choco/issues/313)
* Use %systemroot% in place of %windir%. PATH exceed 2048 breaks choco - see [#252](https://github.com/chocolatey/choco/issues/252)
Some really large fixes this release, especially removing all files that are installed to the package directory if they haven't changed, including ensuring that the nupkg file is always removed on successful uninstalls. The really big add some folks are going to like is the new outdated command. Some more variables that were misused have been brought back, which allows some packages (like Atom) to be installed again without issue. If you can believe some people never read these, we decided to add a note to the installer prompt to let people know about -y.
* Outdated Command - Use `choco outdated` to see outdated packages - see [#170](https://github.com/chocolatey/choco/issues/170)
### BUG FIXES
* Fix - NotSilent Switch Not Working - see [#281](https://github.com/chocolatey/choco/issues/281)
* Fix - Silent installation of choco without admin is not possible - see [#274](https://github.com/chocolatey/choco/issues/274)
* Fix - Package resolves to latest version from any source - see [#279](https://github.com/chocolatey/choco/issues/279)
* Fix - Install fails when shortcut creation fails - see [#264](https://github.com/chocolatey/choco/issues/264)
* Fix - Error deserializing response of type Registry - see [#257](https://github.com/chocolatey/choco/issues/257)
* Fix - Auto uninstaller should not depend on optional InstallLocation value - see [#255](https://github.com/chocolatey/choco/issues/255)
* Fix - Nupkg is left but reported as successfully uninstalled by NuGet - see [#254](https://github.com/chocolatey/choco/issues/254)
* Fix - SHA1 checksum compared as MD5 for Install-ChocolateyZipPackage - see [#253](https://github.com/chocolatey/choco/issues/253)
* Fix - Auto uninstaller strips off "/" and "-" in arguments - see [#212](https://github.com/chocolatey/choco/issues/212)
* Uninstall removes all installed files if unchanged - see [#121](https://github.com/chocolatey/choco/issues/121)
* Auto uninstaller should convert /I to /X for Msi Uninstalls - see [#271](https://github.com/chocolatey/choco/issues/271)
* Bring back more variables for feature parity - see [#267](https://github.com/chocolatey/choco/issues/267)
* Mention -y in the prompt - see [#265](https://github.com/chocolatey/choco/issues/265)
### BREAKING CHANGES
* Renamed short option `p` to `i` for list --include-programs so that `p` could be ubiquitous for password across commands that optionally can pass a password - see [#240](https://github.com/chocolatey/choco/issues/240)
### BUG FIXES
* Fix - Secure Sources Not Working - see [#240](https://github.com/chocolatey/choco/issues/240)
* Fix - Generate-BinFile / Remove-BinFile - see [#230](https://github.com/chocolatey/choco/issues/230)
* Fix - cpack should only include files from nuspec - see [#232](https://github.com/chocolatey/choco/issues/232)
* Fix - cpack should leave nupkg in current directory - see [#231](https://github.com/chocolatey/choco/issues/231)
* Fix - Install-PowerShellCommand uses incorrect path - see [#241](https://github.com/chocolatey/choco/issues/241)
* Fix - choco list source with redirects does not resolve - see [#171](https://github.com/chocolatey/choco/issues/171)
* Fix - choco tried to resolve disabled repo - see [#169](https://github.com/chocolatey/choco/issues/169)
* Fix - cpack nuspec results in "The path is not of a legal form" - see [#164](https://github.com/chocolatey/choco/issues/164)
* Fix - cpack hangs on security related issue - see [#160](https://github.com/chocolatey/choco/issues/160)
* Fix - spelling error in "package has been upgradeed successfully" - see [#64](https://github.com/chocolatey/choco/issues/64)
* Api Key and Source matching could be more intuitive - see [#228](https://github.com/chocolatey/choco/issues/238)
* Remove warning about allowGlobalConfirmation being enabled - see [#237](https://github.com/chocolatey/choco/issues/237)
* Include log file path when saying 'See the log for details' - see [#187](https://github.com/chocolatey/choco/issues/187)
* Uninstall prompts for version when there is only one installed - see [#186](https://github.com/chocolatey/choco/issues/186)
* Do not offer a default option when prompting for a user choice - see [#185](https://github.com/chocolatey/choco/issues/185)
* Remove the warning note about skipping, and instead show the warning when selecting skip - see [#183](https://github.com/chocolatey/choco/issues/183)
* Do not print PowerShell install/update scripts by default - see [#182](https://github.com/chocolatey/choco/issues/182)
### BUG FIXES
* Fix - The term 'false' is not recognized as the name of a cmdlet - see [#215](https://github.com/chocolatey/choco/issues/215)
* Some packages use non-API variables like $installArguments - see [#207](https://github.com/chocolatey/choco/issues/207)
### BUG FIXES
* Fix - Install .NET Framework immediately during install - see [#168](https://github.com/chocolatey/choco/issues/168)
* Fix - Do not error on Set-Acl during install/upgrade - see [#163](https://github.com/chocolatey/choco/issues/163)
* Fix - Do not escape curly braces in powershell script - see [#208](https://github.com/chocolatey/choco/issues/208)
* Fix - Formatting issues on --noop command logging - see [#202](https://github.com/chocolatey/choco/issues/202)
* Fix - Uninstaller check doesn't find 32-bit registry keys - see [#197](https://github.com/chocolatey/choco/issues/197)
* Fix - Uninstaller errors on short path to msiexec - see [#211](https://github.com/chocolatey/choco/issues/211)
* Some packages use non-API variables like $installArguments - see [#207](https://github.com/chocolatey/choco/issues/207)
* Add Generate-BinFile to Helpers (widely used but never part of API) - see [#145](https://github.com/chocolatey/choco/issues/145)
* Add Remove-BinFile to Helpers - see [#195](https://github.com/chocolatey/choco/issues/195)
* Get-ChocolateyWebFile should create path if it doesn't exist - see [#167](https://github.com/chocolatey/choco/issues/167)
### BUG FIXES
* Fix - Allow passing install arguments again (regression in 0.9.9 series) - see [#150](https://github.com/chocolatey/choco/issues/150)
* Fix - Allow apostrophes to be used as quotes - quoting style that worked with previous client - see [#141](https://github.com/chocolatey/choco/issues/141)
* Fix - Shims write errors to stderr - see [#142](https://github.com/chocolatey/choco/issues/142) and [ShimGen #14](https://github.com/chocolatey/shimgen/issues/14)
* Upgrade `-r` should always return a value - see [#153](https://github.com/chocolatey/choco/issues/153)
### BUG FIXES
* Fix - Get-BinRoot broken - see [#144](https://github.com/chocolatey/choco/issues/144)
This also includes issues that were being tracked in the old Chocolatey repository: [Chocolatey 0.9.9](https://github.com/chocolatey/chocolatey/issues?q=is:closed+label:v0.9.9).
The two links above will not capture everything that has changed, since this is a complete rewrite. We broke everything. If this were a v1+, it would be a major release. But we are less than v1, so 0.9.9 it is! ;)
Okay, so we didn't really break everything. We have maintained nearly full compatibility with how you pass options into choco, although the output may be a bit different (but better, we hope) and in at least one case, additional switches (or a feature setting) is/are required - we limited this to security related changes only.
We also fixed and improved a bunch of things, so we feel the trade off is well worth the changes.
We'll try to capture everything here that you should know about. Please call `choco -?` or `choco.exe -h` to get started.
### KNOWN ISSUES
* [Known Issues](https://github.com/chocolatey/choco/labels/Bug)
* TEMPORARY `install all` is missing - this is expected to be back in 0.9.10 - see [#23](https://github.com/chocolatey/choco/issues/23)
* Alternative sources (`webpi`,`ruby`,`python`,`cygwin`, `windowsfeature`) do not work yet. This is expected to be fixed in 0.9.10 - see [#14](https://github.com/chocolatey/choco/issues/14)
* Progress bar is missing when downloading until we are using internal posh components for Packages - see [#56](https://github.com/chocolatey/choco/issues/56)
* See [Feature Parity](https://github.com/chocolatey/choco/labels/FeatureParity) for items not yet reimplemented from older PowerShell Chocolatey client (v0.9.8.32 and below).
### BREAKING CHANGES
* [Security] **Prompt for confirmation**: For security reasons, we now stop for confirmation before changing the state of the system on most commands. You can pass `-y` to confirm any prompts or set a value in the config that will globally confirm - see [#52](https://github.com/chocolatey/choco/issues/52) (**NOTE**: This is one of those additional switches we were talking about)
* [Security] If your default installation is still at `c:\Chocolatey`, this version will force a move to ProgramData and update the environment settings - see [#7](https://github.com/chocolatey/choco/issues/7)
* **Configuration Breaking Changes:**
1. You now have one config file to interact with in %ChocolateyInstall%\config - your user config is no longer valid and can be removed once you migrate settings to the config.
2. The config will no longer be overwritten on upgrade.
3. Choco no longer interacts with NuGet's config file at all. You will need to reset all of your apiKeys (see features for `apikey`). On the plus side, the keys will work for all users of the machine, unlike NuGet's apiKeys (only work for the user that sets them).
4. This also means you can no longer use `useNugetForSources`. It has been removed as a config setting.
* **Packaging Changes:**
1. Choco now installs packages without version numbers on folders. This means quite a few things...
2. Upgrading packages doesn't install a new version next to an old version, it actually upgrades.
3. Dependencies resolve at highest available version, not the minimum version as before - see [Chocolatey #415](https://github.com/chocolatey/chocolatey/issues/415)
* **Package Maintenance Changes**:
1. Read the above about apikey changes
2. Read above about dependency resolution changes.
* **Deprecated/Removed Commands:**
1. `installmissing` has been removed. It was deprecated awhile ago, so this should not be a surprise.
2. `choco version` has been deprecated and will be removed in v1. Use `choco upgrade pkgName --noop` or `choco upgrade pkgName -whatif` instead.
3. `Write-ChocolateySuccess`, `Write-ChocolateyFailure` have been deprecated.
4. `update` is now `upgrade`. `update` has been deprecated and will be removed/replaced in v1. Update will be reincarnated later for a different purpose. **Hint**: It rhymes with smackage pindexes.
* In app documentation! Use `choco -?`, `choco -h` or `choco commandName -?` to learn about each command, complete with examples!
* WhatIf/Noop mode for all commands (`--noop` can also be specified as `-whatif`) - see [Chocolatey #263](https://github.com/chocolatey/chocolatey/issues/263) and [Default Options and Switches](https://github.com/chocolatey/choco/wiki/CommandsReference#default-options-and-switches)
* Performs like a package manager, expect to see queries failing because of unmet dependency issues.
* **New Commands:**
1. `pin` - Suppress upgrades. This allows you to 'pin' an install to a particular version - see [#1](https://github.com/chocolatey/choco/issues/1), [Chocolatey #5](https://github.com/chocolatey/chocolatey/issues/5) and [Pin Command](https://github.com/chocolatey/choco/wiki/CommandsPin)
2. `apikey` - see [ApiKey Command](https://github.com/chocolatey/choco/wiki/CommandsApiKey)
3. `new` - see [New Command](https://github.com/chocolatey/choco/wiki/CommandsNew) and [Chocolatey #157](https://github.com/chocolatey/chocolatey/issues/157)
* New ways to pass arguments! See [How to Pass Options/Switches](https://github.com/chocolatey/choco/wiki/CommandsReference#how-to-pass-options--switches)
* Did we mention there is a help menu that is actually helpful now? Shiny!
* AutoUninstaller!!!! But it is not enabled by default this version. See [#15](https://github.com/chocolatey/choco/issues/15), [#9](https://github.com/chocolatey/choco/issues/9) and [Chocolatey #6](https://github.com/chocolatey/chocolatey/issues/6)
* **New Helpers:**
1. `Install-ChocolateyShortcut` - see [Chocolatey #238](https://github.com/chocolatey/chocolatey/pull/238), [Chocolatey #235](https://github.com/chocolatey/chocolatey/issues/235) and [Chocolatey #218](https://github.com/chocolatey/chocolatey/issues/218)
### BUG FIXES
Probably a lot of bug fixes that may not make it here, but here are the ones we know about.
* Fix - Cannot upgrade from prerelease to same version released - see [Chocolatey #122](https://github.com/chocolatey/chocolatey/issues/122)
* Fix - install `--force` should not use cache - see [Chocolatey #199](https://github.com/chocolatey/chocolatey/issues/199)
* Fix - force dependencies as well - see [--force-dependencies](https://github.com/chocolatey/choco/wiki/CommandsInstall) and [Chocolatey #199](https://github.com/chocolatey/chocolatey/issues/199)
* Fix - Chocolatey should not stop on error - see [Chocolatey #192](https://github.com/chocolatey/chocolatey/issues/192)
* Fix - Upgrading does not remove previous version - see [Chocolatey #259](https://github.com/chocolatey/chocolatey/issues/259)
* Fix - Non-elevated shell message spills errors - see [Chocolatey #540](https://github.com/chocolatey/chocolatey/issues/540)
* Fix - Package names are case sensitive for some sources - see [Chocolatey #589](https://github.com/chocolatey/chocolatey/issues/589)
* Fix - Install-ChocolateyVsixPackage doesn't check for correct VS 2012 path - see [Chocolatey #601](https://github.com/chocolatey/chocolatey/issues/601)
* Fix - Chocolatey behaves strangely after ctrl+c - see [Chocolatey #608](https://github.com/chocolatey/chocolatey/issues/608)
* Fix - Uninstall doesn't respect version setting - see [Chocolatey #612](https://github.com/chocolatey/chocolatey/issues/612)
* Fix - No update after download error - see [Chocolatey #637](https://github.com/chocolatey/chocolatey/issues/637)
* Fix - cup ends silently on error - see [Chocolatey #312](https://github.com/chocolatey/chocolatey/issues/312)
* Fix - cpack silently fails when dependency .NET 4.0+ is not met - see [Chocolatey #270](https://github.com/chocolatey/chocolatey/issues/270)
* Fix - Regression in cver all in 0.9.8.27 - see [Chocolatey #530](https://github.com/chocolatey/chocolatey/issues/530)
* Fix - Certain installs and updates fail with a "process with an Id of xxxx is not running" error - see [Chocolatey #603](https://github.com/chocolatey/chocolatey/issues/603)
* [Security] Allow keeping `c:\chocolatey` install directory with environment variable - see [#17](https://github.com/chocolatey/choco/issues/17)
* [Security] Require switch on unofficial build - see [#36](https://github.com/chocolatey/choco/issues/36)
* Install script updates - see [#7](https://github.com/chocolatey/choco/issues/7)
* Ensure Chocolatey pkg is installed properly in lib folder - This means you can take a dependency on a minimum version of Chocolatey (we didn't like that before) - see [#19](https://github.com/chocolatey/choco/issues/19)
* Uninstall - allow abort - see [#43](https://github.com/chocolatey/choco/issues/43)
* Support for HTTPS basic authorization - see [Chocolatey #128](https://github.com/chocolatey/chocolatey/issues/128)
* Smooth out success/failure logging - see [Chocolatey #154](https://github.com/chocolatey/chocolatey/issues/154)
* Add $env:CHOCOLATEY_VERSION - see [Chocolatey #251](https://github.com/chocolatey/chocolatey/issues/251)
* Replace ascii cue with visual cues - see [Chocolatey #376](https://github.com/chocolatey/chocolatey/pull/376)
* Uninstall all versions of an app - see [Chocolatey #389](https://github.com/chocolatey/chocolatey/issues/389)
* Add parameters in packages.config files - see [Packages.config](https://github.com/chocolatey/choco/wiki/CommandsInstall#packagesconfig), [Chocolatey #472](https://github.com/chocolatey/chocolatey/issues/472), and [#10](https://github.com/chocolatey/choco/issues/10)
* Choco pack should support `-version` - see [Chocolatey #526](https://github.com/chocolatey/chocolatey/issues/526)
* Enhancements to Start-ChocolateyProcessAsAdmin - see [Chocolatey #564](https://github.com/chocolatey/chocolatey/pull/564)
* Install-ChocolateyFileAssociation - add label to new file types - see [Chocolatey #564](https://github.com/chocolatey/chocolatey/pull/564)
* Clean up the verobsity of Chocolatey - see [Chocolatey #374](https://github.com/chocolatey/chocolatey/issues/374)
* Compact choco upgrade --noop option - see [Chocolatey #414](https://github.com/chocolatey/chocolatey/issues/414)
* Remove references to the Chocolatey gods - see [Chocolatey #669](https://github.com/chocolatey/chocolatey/issues/669)
* Shims now have noop (`--shimgen-noop`) and help (`--shimgen-help`) switches - see [ShimGen #8](https://github.com/chocolatey/shimgen/issues/8) and [ShimGen #10](https://github.com/chocolatey/shimgen/issues/10)
* Shims will terminate underlying process on termination signal - see [ShimGen #11](https://github.com/chocolatey/shimgen/issues/11)
* Shims now have gui (`--shimgen-gui`) and exit (`--shimgen-exit`) switches - see [ShimGen #13](https://github.com/chocolatey/shimgen/issues/13) and [ShimGen #12](https://github.com/chocolatey/shimgen/issues/12)
* Dat help menu tho. I mean srsly guise - see [Chocolatey #641](https://github.com/chocolatey/chocolatey/issues/641)
This package has no dependencies.
Showing the top 4 GitHub repositories that depend on chocolatey:
A code coverage tool for .NET 2 and above (WINDOWS OS only), support for 32 and 64 processes with both branch and sequence points
ReportGenerator converts coverage reports generated by OpenCover, dotCover, Visual Studio, NCover, Cobertura, JaCoCo, Clover, gcov or lcov into human readable reports in various formats.
Windows tail program and log file analyzer.
Azure DevOps Migration Tools allow you to migrate Teams, Backlogs, Tasks, Test Cases, and Plans & Suits from one Project to another in Azure DevOps / TFS both within the same Organisation, and between Organisations.
Read more about the GitHub Usage information on our documentation.