chocolatey / choco

Chocolatey - the package manager for Windows
https://chocolatey.org
Other
10.38k stars 904 forks source link
c-sharp chocolatey hacktoberfest package-management package-manager package-manager-tool powershell software software-management softwareautomation windows windows-server

Chocolatey - like yum or apt-get, but for Windows

You can just call me choco.

Chocolatey Logo

Docker Image Version (latest semver) Project Stats Coverage Status

Build Status

GitHub Action
GitHub Workflow Status (branch)

Chat Room

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

Discord

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

Support Chocolatey!

See Chocolatey In Action

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

install

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

install w/pro

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

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

License / Credits

Apache 2.0 - see LICENSE and NOTICE files.

Submitting Issues

submitting issues

Observe the following help for submitting an issue:

Prerequisites:

Submitting a ticket:

Contributing

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

This project uses an .editorconfig file in order to help maintain consistency of code. Errors and warnings produced by not following these defined conventions will in future be enforced at build time, so ensure your contributions adhere to the rules defined in it and produce no warnings or errors in Visual Studio.

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:

The following are a minimum set of requirements to successfully complete the build process:

There is a setup.ps1 file at the root of this repository, which can be used to install all of the above.

Build Process:

[!IMPORTANT] It is assumed that Chocolatey CLI is installed on the machine where you are running the build, as this is required to generate the final Chocolatey package. If required, you can skip the creation of the Chocolatey packages using the --shouldRunChocolatey option, i.e. .\build.bat --shouldRunChocolatey=false

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

Other Platforms

Prerequisites:
Before building:
# Mono
# http://www.michaelruck.de/2010/03/solving-pkg-config-and-mono-35-profile.html
# https://cloudgen.wordpress.com/2013/03/06/configure-nant-to-run-under-mono-3-06-beta-for-mac-osx/
export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig:/Library/Frameworks/Mono.framework/Versions/Current/lib/pkgconfig:$PKG_CONFIG_PATH
chmod +x *.sh
Build Process:

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.

Testing

The Chocolatey CLI codebase contains a number of different tests, including unit, integration, and end-to-end tests. These are all documented in the TESTING.md file.

The unit and integration tests are NUnit tests, which can be executed directly within Visual Studio, or as part of the build process.

The end-to-end tests use Pester as the test framework. Since these tests have the potential to actually make changes to your system, we recommend using the provided Vagrant file to run these tests in a dedicated virtual machine.

Installing on Other Platforms:

  1. Get a copy of the source code and build.
  2. Copy (or link) the contents of ./code_drop/temp/_PublishedApps/choco to your preferred install directory. On Linux, the preferred directory is /opt/chocolatey
  3. Export the ChocolateyInstall environment variable, pointing to the install directory the build output was copied too.
  4. Copy ./docker/choco_wrapper to a directory on the $PATH, rename to choco, and if the install directory is something else than /opt/chocolatey, then edit it to point to the correct path.

Credits

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