Chocolatey For Windows

5/23/2019by admin

You can just call me choco.

Aug 4, 2014 - Most Windows users don't pay much attention to how desktop programs are installed on their system. For years we've been trained to seek out.

  • Information
  • Committers
    • Compiling / Building Source
      • Other Platforms

Build Status

TeamCityAppVeyorTravis

Chat Room

Come join in the conversation about Chocolatey in our Gitter Chat Room.

Or, you can find us in IRC at #chocolatey on freenode. IRC is not as often checked by committers, so it is recommended you stick to Gitter if you need more timely assistance.

Please make sure you've read over and agree with the etiquette regarding communication.

Support Chocolatey!

  • Purchase Chocolatey Pro / Chocolatey for Business

See Chocolatey In Action

Chocolatey FOSS install showing tab completion and refreshenv (a way to update environment variables without restarting your shell):

Chocolatey Pro showing private CDN download cache and virus scan protection:

Etiquette Regarding Communication

If you are an open source user requesting support, please remember that most folks in the Chocolatey community are volunteers that have lives outside of open source and are not paid to ensure things work for you, so please be considerate of others' time when you are asking for things. Many of us have families that also need time as well and only have so much time to give on a daily basis. A little consideration and patience can go a long way. After all, you are using a pretty good tool without cost. It may not be perfect (yet), and we know that.

If you are using a commercial edition of Chocolatey, you have different terms! Please see support.

Information

  • Mailing List / Release Announcements Only Mailing List / Build Status Mailing List
  • Twitter / Facebook / Github
  • Blog / Newsletter
  • Documentation / Support

Documentation

Please see the docs

Give choco.exe -? a shot (or choco.exe -h). For specific commands, add the command and then the help switch e.g. choco.exe install -h.

Requirements

  • .NET Framework 4.0+
  • PowerShell 2.0+
  • Windows Server 2003+ / Windows 7+

License / Credits

Apache 2.0 - see LICENSE and NOTICE files.

Submitting Issues

  • If you are having issue with a package, please see Request Package Fixes or Updates / Become a maintainer of an existing package.
  • If you are looking for packages to be added to the community feed (aka https://chocolatey.org/packages), please see Package Requests.
  1. Start with Troubleshooting and the FAQ to see if your question or issue already has an answer.
  2. If not found or resolved, please follow one of the following avenues:
    • If you are a licensed customer, please see support. You can also log an issue to Licensed Issues and we will submit issues to all other places on your behalf. Another avenue is to use email support to have us submit tickets and other avenues on your behalf (allowing you to maintain privacy).
    • If it is an enhancement request or issue with the website (the community package repository aka https://chocolatey.org), please submit the issue to the Chocolatey.org repo.
    • If you have found an issue with the GUI (Chocolatey GUI) or you want to submit an enhancement, please see the ChocolateyGUI repository.
    • If you have found an issue with the client (choco.exe), you are in the right place. Keep reading below.

Observe the following help for submitting an issue:

Prerequisites:

  • The issue has to do with choco itself and is not a package or website issue.
  • Please check to see if your issue already exists with a quick search of the issues. Start with one relevant term and then add if you get too many results.
  • You are not submitting an 'Enhancement'. Enhancements should observe CONTRIBUTING guidelines.
  • You are not submitting a question - questions are better served as emails or gitter chat questions.
  • Please make sure you've read over and agree with the etiquette regarding communication.

Submitting a ticket:

  • We'll need debug and verbose output, so please run and capture the log with -dv or --debug --verbose. You can submit that with the issue or create a gist and link it.
  • Please note that the debug/verbose output for some commands may have sensitive data (passwords or apiKeys) related to Chocolatey, so please remove those if they are there prior to submitting the issue.
  • choco.exe logs to a file in $env:ChocolateyInstalllog. You can grab the specific log output from there so you don't have to capture or redirect screen output. Please limit the amount included to just the command run (the log is appended to with every command).
  • Please save the log output in a gist (save the file as log.sh) and link to the gist from the issue. Feel free to create it as secret so it doesn't fill up against your public gists. Anyone with a direct link can still get to secret gists. If you accidentally include secret information in your gist, please delete it and create a new one (gist history can be seen by anyone) and update the link in the ticket (issue history is not retained except by email - deleting the gist ensures that no one can get to it). Using gists this way also keeps accidental secrets from being shared in the ticket in the first place as well.
  • We'll need the entire log output from the run, so please don't limit it down to areas you feel are relevant. You may miss some important details we'll need to know. This will help expedite issue triage.
  • It's helpful to include the version of choco, the version of the OS, and the version of PowerShell (Posh) - the debug script should capture all of those pieces of information.
  • Include screenshots and/or animated gifs whenever possible, they help show us exactly what the problem is.

Contributing

If you would like to contribute code or help squash a bug or two, that's awesome. Please familiarize yourself with CONTRIBUTING.

Committers

Committers, you should be very familiar with COMMITTERS.

Compiling / Building Source

There is a build.bat/build.sh file that creates a necessary generated file named SolutionVersion.cs. It must be run at least once before Visual Studio will build.

Windows

Prerequisites:

  • .NET Framework 3.5 (This is a windows feature installation).
  • .NET Framework 4+
  • Visual Studio is helpful for working on source.
  • ReSharper is immensely helpful (and there is a .sln.DotSettings file to help with code conventions).

Build Process:

  • Run build.bat.

Running the build on Windows should produce an artifact that is tested and ready to be used.

Other Platforms

Prerequisites:
  • Install and configure Mono 3.12.0 (3.8.0 should also work).
  • Xamarin Studio is helpful for working on source.
  • Consider adding the following to your ~/.profile (or other relevant dot source file):
  • Set your permissions correctly:
Build Process:
  • Run ./build.sh.

Running the build on Mono produces an artifact similar to Windows but may have more rough edges. You may get a failure or two in the build script that can be safely ignored.

Credits

Chocolatey is brought to you by quite a few people and frameworks. See CREDITS (just LEGAL/Credits.md in the zip folder).

I’ve administered both Windows and Linux systems for close to two decades now. Honestly, while Linux is a fantastic operating system and very appropriate in many respects for many applications, I’ve long preferred Windows for its generally better ease of use and polish.

But that doesn’t mean I haven’t pined for certain Linux features when using Windows — and a package management system is one of them. Luckily, there are a couple of package management tools for Windows, and best of all, both are open source and free.

The premise behind package management systems

Linux distributions have had package management options for a while. You probably have heard of Red Hat’s RPM (Red Hat Package Management) format, Debian Linux’s apt-get, and the new yum package manager that seems to be infiltrating a lot of distributions these days. At their core, these package management systems seek to achieve the same objective: to automate the installation, configuration, ongoing management and uninstallation of software packages. This includes analyzing a system; determining what packages are necessary to run whatever software you want; finding the latest compatible version of all of the packages; and installing them in the correct order, ensuring they get laid down on the system successfully and that, after the 117 dependencies install, the software is ready to run on the target system. I kid, but only a little bit.

Imagine bringing this automation over to Windows. Say you are moving to a new system and setting it up properly, exactly how you like it. In the process, you are trying to find the latest version of Google Chrome, for example, or any other reasonably popular utility. The procedure you’d likely use is to Google the product name, find the download link, skip past all of the “featured offers” and near malware that most sites like to bundle with their downloads, and then run the installer. After that, you might even discover you downloaded a 64-bit version when you’re working on a machine with a 32-bit version of Windows installed. Or maybe you found an old download link, and there are two newer versions out there. That whole sequence is not exactly taxing, but it is trying.

Imagine, instead, that you could simply say

choco install googlechrome

from a PowerShell command prompt and you would get:

...which would be followed by a completely functional installation of Google Chrome. That would save a lot of time, right?

And what if you had software like Google Chrome installed and then wanted to upgrade it? What if you could use a command like

choco upgrade googlechrome

...and get an instant upgrade?

That is the power of package management, and that is what the Chocolatey package manager brings to Windows: a large and expanding selection of carefully curated and maintained software packages that can be brought down and installed on your system with a simple three-word command.

To continue reading this article register now

Learn More Existing Users Sign In