Windows Package Managers: A Detailed Comparison

Windows Package Managers A Detailed ComparisonWindows Package Managers A Detailed Comparison

When mass-deploying computers or operating systems, a system administrator might find themselves having to install the same software across all of them. This is a time-consuming task, which can be saved with the help of package managers.

A package manager’s job is to automate the handling of application packages that include different setup and configuration files. This includes installing, upgrading, or uninstalling them with minimal user input and is usually done through a command line interface (CLI). Package managers make installing and handling applications on computers a breeze, especially for mass deployment.

At the moment, there are many Windows package managers available. Some are free, and some can be purchased for enterprise use. I have tested out some package managers and given a verdict at the end of this post on which one I think is the most convenient to use overall.

What is a package manager?

A package manager is software that makes it simple to automate dependencies and third-party software installation, upgrades, and configurations. They also have an extensive software library from which you can select and install other software packages with a single command.

The purpose of package managers is to reduce the software deployment time and manage them better. Developers normally use these to meet the requirements for their projects by deploying the specific software that they need.

If you are or were a Linux user, then you would get the idea of handling packages from the command line, since these Windows package managers act similarly to the apt-get command on Linux. Now, when you install or manage applications using the Windows-native wizards and .EXE packages, you would know that they are relatively slower and require a lot of user input.

There are a ton of package managers that you can choose from for your Windows operating system. I have compared the most popular ones below.

Best Windows package managers

Windows Package Manager (WinGet)

Pros

  • Comes preinstalled in Windows 11
  • Easy to use
  • Open-source and free

Cons

  • Does not include a built-in method to view package names and information
  • Relatively new (released in 2020)

WinGet, or the Windows Package Manager is a command-line tool created by Microsoft itself but is open-source, and thus, also available on GitHub. It is free to use and comes preinstalled in Windows 11.

This tool can be used to perform a ton of functions and uses the same Microsoft app packages as the Microsoft Store. Except, with this tool, you can install an app by running a single command, as opposed to the excruciating process of navigating through the Microsoft Store, and then clicking some buttons to finally install it.

WinGet is usually the go-to package manager for most developers since it comes preinstalled, and thus doesn’t require any added deployment steps (on operating systems where it isn’t preinstalled, like Windows 10). Additionally, it is a Microsoft product, and therefore, completely compatible with all Microsoft app packages.

To check what commands WinGet supports, run the following command in either Command Prompt or PowerShell:

winget
See commands for WinGet
See commands for WinGet

To install a package using WinGet, use this command:

winget install [PackageName]

You can get the package names from Winget’s official repository. You can install a single application in a command, or select multiple apps and click “Generate Script.”

Install multiple apps with WinGet
Install multiple apps with WinGet

To check which packages have been installed, you can use the following command:

winget list
List all packages installed using WinGet
List all packages installed using WinGet

To learn more about how to use WinGet, refer to this dedicated guide post.

All-in-all, WinGet is an easier package manager to deploy, even if it does not come preinstalled on your operating system. Moreover, WinGet can be used to install multiple applications or uninstall them using a single command. This significantly reduces the time consumed as opposed to the conventional GUI-based Windows methods.

You can also use the -upgrade command to update specific applications or update all of them altogether. Using other third-party tools, you can automate the functions of WinGet to update apps after a certain time automatically, so user input will no longer be required.

WinGet is also open-source and free to use. Moreover, it has a vast catalog of over 5500 packages from which you can choose.

Chocolatey

Pros

  • Both free and paid versions are available
  • Larger package library
  • Ability to search for packages

Cons

  • Needs manual deployment

Chocolatey is another famous command-line package manager. It is also capable of automating the processes involved in installing, uninstalling, and upgrading applications on your computer. Not only that, but it can also obtain and perform many other functions using different parameters, like searching app names and information, which WinGet is not capable of doing at the moment.

However, unlike WinGet, Chocolatey needs to be deployed on a computer since it is a third-party software. It is free to install for regular consumers but is offered as a paid version for enterprise consumers with advanced features, and costs $15.60 per device per annum.

Chocolatey uses its own vast library of application packages that are modified NuGet packages to install and upgrade applications. Since it has its own library, the available packages can be browsed here. This package repository also gives the cmdlets needed to install, uninstall, or upgrade the different apps.

To deploy Chocolatey, use these steps:

  1. Press the Windows Key + R to open the Run Command box.

  2. Type in “cmd” and press CTRL + Shift + Enter to run an elevated Command Prompt.

  3. Now execute the following command to begin installing Chocolatey :

    @"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "[System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
    Install Chocolatey package manager from Command Prompt
    Install Chocolatey package manager from Command Prompt

Chocolatey will now be installed. You may then use the following command to check which commands and switches can be used with this package manager:

choco -?
Check supported commands of Chocolatey
Check the supported commands of Chocolatey

Alternative to the method above, you can also install Chocolatey from PowerShell with this command:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

This command first allows script execution in PowerShell and then continues to download and install the Chocolatey package.

Once Chocolatey is installed, you can install any package from its library using this command:

Choco install [PackageName]
Install package with Chocolatey package manager
Install package with Chocolatey package manager

To search for a package, use this command:

Choco search [AppName]
Search for app packages using Choco
Search for app packages using Choco

This command will list all packages that have your provided keyword. You can then use the correct package name to install your desired app.

Like WinGet, you can also update, or uninstall applications by running single commands. To update an app with Chocolatey, use the command “Choco upgrade [PackageName]“, and to uninstall an app, use the “Uninstall” switch instead, following by the package name.

Overall, I do not see much difference between WinGet and Chocolatey, in terms of functionality. However, exploring it further showed that Chocolatey supports more package types than WinGet, which is a point for the Chocolatey package manager. On the other hand, Chocolatey needs to be deployed on each PC, whereas WinGet comes preinstalled.

Ninite

Pros

  • GUI-based package manager
  • Provides small installation package with automatic downloads
  • No user input is required during the installation

Cons

  • Very limited app library
  • Free version does not offer to update or uninstall apps automatically

Ninite is a graphical user interface-based package manager that automates package installation only. It is offered as both free and paid versions, but the free version cannot update or uninstall applications. The paid version, which is the “Pro” version, allows administrators to patch and deploy apps right from their browser.

Additionally, the Pro version provides a centralized interface to manage applications across multiple devices, which means that it is designed for enterprise users. It is a subscription-based model and costs depend on the number of machines.

With Ninite (free), you select the applications that you want to install from their website, and then it creates a small, executable script designed to download and install those apps. However, the application library of Ninite is very small and limited and only includes the common ones.

With Ninite, you avoid downloading the apps individually and dealing with many installation wizards. Ninite also doesn’t ask you for additional input, like agreeing to terms and conditions, etc. It installs the latest versions of the applications to their default locations with minimal overhead files. Moreover, the apps are installed in your system’s default language.

If you prefer using the command-line-based package managers for more control and functions, then you may want to skip Ninite. For those eager to learn how to use it, this is how Ninite works:

  1. Open the Ninite website using a web browser.

  2. Select the apps that you want to install

    Select the apps to install with Ninite
    Select the apps to install with Ninite
  3. Scroll down and click “Get Your Ninite.”

    Download Ninite
    Download Ninite package
  4. Once downloaded, execute the Ninite package by double-clicking it.

    This will run the installer where no action is required from your end.

  5. Once all apps are installed, Close the installer.

    Close the Ninite installer
    Close the Ninite installer

After performing the steps above, the selected applications will be installed.

Many users may consider Ninite since it is a GUI-based package manager. However, it does not offer any additional functions other than installing apps automatically. Moreover, the package library for Ninite is very limited compared to the libraries of Chocolatey and WinGet.

Scoop

Pros

  • Free to use
  • Installs applications in an isolated, portable directory
  • Provide built-in package search

Cons

  • Not a friendly interface to use

Scoop is a Windows command-line package manager. You may install apps and terminal plugins using Scoop. Like Chocolatey, Scoop first needs to be deployed on a PC. It can be installed on Windows 7 and above using these steps:

  1. Run Windows PowerShell.

    Note: DO NOT run as an admin.

  2. Run the following command to allow script execution:

    Set-ExecutionPolicy RemoteSigned -scope CurrentUser
  3. Now, run the following command to install Scoop:

    iwr -useb get.scoop.sh | iex

    Note: “iwr” is short of “Invoke Web Request.”

    Install Scoop package manager
    Install Scoop package manager

Performing the steps above will install the Scoop packet manager.

Note that running PowerShell as an administrator and then trying to install Scoop will fail and cause an error. This is because, unlike Chocolatey, Scoop takes a restricted approach to the applications that you install.

Scoop installs software that is not manageable by the system or by the user. Instead, it installs it in a dedicated directory labeled “Scoop.” this way, even if you delete the entire directory later on, the rest of the system will be unaffected.

Once installed, you can search the Scoop repository for your app using the following syntax in PowerShell:

Scoop search [AppName]
Search for app packages using Scoop package manager
Search for app packages using the Scoop package manager

Once you have the name of the package that you want to install, you can use the following command to install it:

scoop install [PackageName]

Note: You can add more app names with a space in a single command to install multiple apps simultaneously.

Install app package with Scoop
Install the app package with Scoop

After having used Scoop, I found that it installs the applications in a portable directory, which is nice if you plan on moving complete installation files from one place to another. However, it would not be practical since it would cause a lot of errors if not done properly.

Moreover, I found the use of Scoop not very user-friendly, as compared to other package managers that we have discussed above. However, it still gets the job done and can be used to install multiple applications by running only a single command.

Honorable mentions

Other than these package managers, we would also like to mention a few others that are somewhat different. These are different because they offer either Intune integration, SCCM integration, or both. If you are a system administrator, then you might be interested in the following package managers for mass deployment and control:

  • Scappman – Cloud-based package manager that integrates seamlessly with Intune.
  • Intune Pckgr – Another cloud-based package manager which uses the same WinGet package library, but is designed for Intune integration.
  • PDQ Connect – This is a relatively newer package manager that does not integrate with Intune but rather runs its own agent.

Final Verdict

After having used these package managers myself, I believe that WinGet has a lot of potential for further improvement, but at the moment, it is not ready for enterprise use. Microsoft still needs to include certain features and support, like having the built-in ability to search for apps and packages. Although it is installed on Windows 11 by default, other Windows operating systems still lack this integration, which brings WinGet on the same page as most other package managers.

On the other hand, Chocolatey needs to be deployed manually across all computers that need package handling, but it still is considered a worthy package manager. This is because of the convenient interaction it offers its users. It can be deployed with a single command using either Command Prompt or PowerShell and can install multiple applications from a library of ample packages by running a single command, without the involvement of user interaction.

That said, if you want to avoid using the command line, then Ninite just might tickle your brain. You can select the applications that you want from the web, and it will create a custom package for you that will download the selected apps, without the involvement of any kind of command line. One caveat of Ninite is that its library is very small and restricted. Therefore, if you are a developer with very specific needs, then you may want to consider another package manager; one that involves the command line.

In my opinion, Chocolatey wins this round as the best package manager currently available in the market at the time of writing this post, because of its vast app library and micro controls for bulk application management. However, this may change in the future since WinGet can still be improved significantly, making it the runner-up.

If you liked this post, Share it on:

Get Updates in Your Inbox

Sign up for the regular updates and be the first to know about the latest tech information

Subhan Zafar is an established IT professional with interests in Windows and Server infrastructure testing and research, and is currently working with Itechtics as a research consultant. He has studied Electrical Engineering and is also certified by Huawei (HCNA & HCNP Routing and Switching).

Leave the first comment