A little more than a year ago, with very little fanfare, Microsoft sneaked a very cool, very powerful little utility into Windows. It's called the Windows Package Manager or
winget for short.
winget is Microsoft's answer to
yum (or other) application package managers on Linux or
HomeBrewon the Mac.
winget lets you easily install, update, and remove Windows applications from a DOS command line. Not only is this a great way to install apps on Windows, it allows easy scripting so that you can easily spin up a new machine with your favorite apps.
winget was introduced with Windows 1709 (The 2020 Fall Creators Update). If you've been updating your PC regularly
winget is probably on your PC. Open a command line and type
winget to see if it's installed. If it is, you'll see a screen like Figure 1 below:
winget is installed
If you get an error, first use
winver from a command line to make sure you have version 1709 or higher as shown in Figure 2 below:
Figure 2. Using WinVer to see what version of Windows you have installed
winget without command line arguments shows
winget's available commands:
install Installs the given package show Shows information about a package source Manage sources of packages search Find and show basic info of packages list Display installed packages upgrade Upgrades the given package uninstall Uninstalls the given package hash Helper to hash installer files validate Validates a manifest file settings Open settings or set administrator settings features Shows the status of experimental features export Exports a list of the installed packages import Installs all the packages in a file
To get a sense of the software that
winget provides, use the search command without any arguments:
You can also use the winget.run site to search for
In mid-November, 2021, more than 2900 software packages are available through
winget. Many are free, or at least "freemium" packages, but some need to be licensed, so after installing you may need to acquire a license.
winget's philosophy is that you generally know what you're looking for. Therefore, if you are unfamiliar with a package you see listed, it's prudent to research with Google before installing it. That said, if you're using it to set up a PC with your favorite utilities, you probably already know what you want.
Let's assume you want to install the Firefox Developer Edition browser. First, search for Firefox with this command:
winget search firefox
winget responds with the packages that reference 'firefox'
Figure 3. Using winget's search command
We want to install the product in the red box, so type
winget install "Firefox Developer Edition"
on the command line and press enter. In less than a minute, Firefox Developer Edition is installed for you.
If, like me, you use MS Edge exclusively as downloader for Firefox Developer Edition or Chrome, rejoice that with
wingetyou don't need MS Edge for anything!
Some products have multiple source entries in the
winget product repository. Let's say you want to download 7-Zip, the popular zip utility. When you search for 7-Zip,
Figure 4. winget showing multiple app sources
This means there is more than one source in the
winget repository that provides the download you requested. I didn't like the sound of "Unofficial" so I downloaded 7-Zip from the
winget source by using the
winget install 7-Zip -s winget
With virtual machines so easily available now it's not uncommon for me to need to spin three or four VMs per month. I have a text file named
winget-install.txt with the following contents:
winget install "Firefox Developer Edition" winget install "Visual Studio Professional 2019" winget install "Microsoft SQL Server 2019 Developer" winget install "Microsoft SQL Server Management Studio" winget install "Microsoft Visual Studio Code" winget install winmerge winget install Notepad++ -s winget winget install 7zip -s msstore winget install everything -s winget winget install fileseek winget install "Docker Desktop" winget install "Python 3.9" winget install sharex -s winget winget install COM-SQLite winget install "DB Browser for SQLite"
winget's Import command installs all of those applications with a single command:
winget import -i winget-install.txt
In just a few minutes, most of the applications needed are ready to go. ASNA products (and a few others) need to be installed manually but
winget provides a huge head start for setting up a developer's PC.