Chocolatey vs. Scoop vs. Winget: Package Managers for Windows
Jonathan Bowman Created: July 28, 2020 Updated: July 04, 2023 [Windows] #windows #commandlineCollect them all! Install Winget, Chocolatey and Scoop. (I just put the βvs.β in there as clickbait.) They make installing and managing software on Windows so much easier. They are different tools, though, and I suggest that their usage depends on the scenario.
In the Linux world, there are apt
, yum
, dnf
, pacman
, and many others. In Mac and Linux, there is brew
. For Windows, there are three: winget
, choco
and scoop
. They manage software from the PowerShell command-line.
πWinget: the command-line version of the Microsoft Store
Winget serves similar functions as Scoop or Chocolatey, but the catalog of packages is a bit different. It has a winget-specific community repository as do Scoop and Chocolatey. But it also has the Microsoft Store. Any free and βEβ for everyone package should be installable via a simple winget install packagename
(in some cases, you may want to be more specific with the package id. This can be obtained using winget search
.
πChocolatey: conventional install locations, as Admin
Chocolatey can install from a community repository with thousands of packages. In general, installing one of these packages, such as Google Chrome, will require elevated Admin privileges, and will install it where you would expect (likely C:\Program Files\
or C:\Program Files (x86)\
). The applications will have shortcuts in your start menu, and possibly on your desktop.
Chocolateyβs repository is huge and mature. If winget is unable to install your app, try to choco install
it β you might be pleasantly surprised.
πScoop: non-Admin by default, installs in user directory
Scoop is designed for developers who have an affinity for Unix. By default, it installs packages to ~/scoop/
and this is both a strength and a confusion point. Apps will not by default show in the start menu, and if plugins or addons expect to find the installation in a certain directory (looking at you, OBS Studio!), there will be some inconvenience and tedious setup.
If you do not have Admin access to your system (for instance, this is a shared server with Remote Desktop access), then Scoop is the right choice.
Scoop also seems natural for installing command-line tools that you might miss from Unix-like systems, such as Linux or Mac. While some of these tools may be available through Chocolatey or even winget, the Scoop ecosystem is designed with such tools in mind.
The Scoop wiki has a nice write-up discussing Scoop and Chocolatey and Winget.
πInstallation of each tool
πPrerequisite for Scoop and Chocolatey: Enable execution of PowerShell scripts
For both Scoop and Chocolatey, you will need to set the PowerShell Execution Policy to something more permissive than βRestricted.β Here is my suggestion: be strict with the scope of LocalMachine, and only slightly more permissive with the CurrentUser scope. So, first launch PowerShell as Admin (I use β-x then select βWindows PowerShell (Admin)β) and run
Set-ExecutionPolicy AllSigned
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
The first line means that all scripts and configuration files on this computer must be signed by a trusted publisher, even if you write them yourself. This is pretty strict.
The second line means that all scripts and configuration files downloaded from the Internet must be signed by a trusted publisher, but scripts you write yourself will work, for the current user. This policy will βwinβ when you are logged in.
πWinget installation
The easiest way to install Winget is through the Microsoft Store, installing the App Installer package.
The Winget repo also has instructions for manually updating Winget.
πChocolatey installation
In an Admin-level PowerShell window, the following should work, provided you have set the ExecutionPolicy as above:
iwr -useb chocolatey.org/install.ps1 | iex
See the detailed installation docs if you have issues with the above.
πScoop installation
In any PowerShell window, no Admin necessary, the following will install Scoop, provided you have set the ExecutionPolicy as detailed at the beginning of the article:
iwr -useb get.scoop.sh | iex
See the detailed installation docs for more info.
πScoop buckets
I often install the extras bucket immediately:
scoop bucket add extras
A bucket is a set of apps that can be searched and installed. To see all the known community buckets:
scoop bucket known
Then add the ones you like!
πUsage of the various tools
πChocolatey search
choco search ditto
πChocolatey install package
choco install ditto
πChocolatey upgrade all currently installed packages
choco upgrade all
πChocolatey help
choco -help
πScoop search
scoop search sudo
πScoop install package
scoop install sudo
πScoop upgrade all currently installed packages
scoop update *
πScoop help
scoop help
πWinget search
winget search filezilla
πWinget install package
winget install filezilla
πWinget upgrade all currently installed packages
winget upgrade --all
πWinget help
winget -?
Enjoy and experiment!