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 apt
or yum
(or other) application package managers on Linux orHomeBrew
on 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:
Figure 1. 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
If you don't have winget
installed but do have Windows version 1709 or later, use these directions to install it or install it manually from this site.
Using winget
Typing 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:
winget search
You can also use the winget.run site to search for winget
packages.
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
winget
you 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, winget
displays:
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 -s
flag:
winget install 7-Zip -s winget
Scriptable installs
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.
For quickly spinning up a new developer PC, winget
is highly recommended. Read more about it here and/or watch this YouTube video.