6 minute read

I installed all my Windows apps on my new computer with one line using WinGet.

It was simple. It was easy. Here’s what I did.

What is WinGet

WinGet is Microsoft’s native command line application installer, and it now comes pre-installed with Windows 10+. If you have Windows 7 or 8, you’ll need to manually install it via the App Installer app in the Microsoft Store.

You can think of WinGet like the Microsoft Store, but for the command line, and it actually has the apps you’re looking for. Not just UWP (Universal Windows Platform) apps like the Microsoft Store has, but the apps you’ve been installing for 2 decades. Apps installed via an .exe or .msi. Win32 apps.

Not only does it support every type of app that you could install manually, the app catalog is huge; currently over 3000 apps. There wasn’t a single app I wanted that I couldn’t find on WinGet.

Head to WinGet.run

Don’t believe me? Head over to WinGet.run and see for yourself.

Search the name of the app you’re looking for and see if it’s there.

Once you’ve found it, click the Copy command link and it will copy the WinGet command you can use to install that app from the command line.

WinGet.run website search screenshot

The command copied to your clipboard will look like:

winget install -e --id Spotify.Spotify

Installing apps with WinGet

Open a command prompt. You can use cmd, PowerShell, Windows Terminal, Bash, or whatever you prefer.

Paste the command you copied from WinGet.run into the command prompt, hit enter, and watch your app get installed.

WinGet install Spotify screenshot

You can see here that Spotify was downloaded and installed in 24 seconds. In this case, Spotify installed without prompting me for anything.

You may get prompted by Windows UAC to allow the app installer to run if it requires elevated privileges. This can be avoided by opening your command prompt as administrator.

Run command prompt as administrator

Some apps show the install wizard while it installs, others don’t. From my experience, most apps that do show the install wizard don’t prompt you to do anything; you can just see it working. If you like, you can provide the --silent parameter to suppress showing the installer and have it install with the default options, if the app’s installer supports it.

winget install -e --id Spotify.Spotify --silent

I keep a text file in my OneDrive of apps that I like to install anytime I wipe my computer. That text file now looks like this:

===========================================================
On WinGet: https://winget.run
===========================================================
winget install -e --id 7zip.7zip
winget install -e --id Audacity.Audacity
winget install -e --id Microsoft.AzureCLI
winget install -e --id Lexikos.AutoHotkey
winget install -e --id Google.Chrome
winget install -e --id Discord.Discord
winget install -e --id Ditto.Ditto
winget install -e --id Docker.DockerDesktop
winget install -e --id File-New-Project.EarTrumpet
winget install -e --id voidtools.Everything
winget install -e --id Telerik.Fiddler.Classic
winget install -e --id Mozilla.Firefox
winget install -e --id Git.Git
winget install -e --id GitExtensionsTeam.GitExtensions
winget install -e --id GoLang.Go
winget install -e --id StefanTools.grepWin
winget install -e --id HandBrake.HandBrake
winget install -e --id icsharpcode.ILSpy
winget install -e --id JoachimEibl.KDiff3
winget install -e --id Notepad++.Notepad++
winget install -e --id JanDeDobbeleer.OhMyPosh
winget install -e --id Postman.Postman
winget install -e --id Microsoft.PowerShell
winget install -e --id Microsoft.PowerToys
winget install -e --id Python.Python.3
winget install -e --id RubyInstallerTeam.RubyWithDevKit
winget install -e --id Spotify.Spotify (Cannot install when running as administrator)
winget install -e --id Microsoft.SQLServerManagementStudio
winget install -e --id Valve.Steam
winget install -e --id ShareX.ShareX
winget install -e --id Toggl.TogglDesktop
winget install -e --id TortoiseGit.TortoiseGit
winget install -e --id Microsoft.VisualStudio.2022.Enterprise (Will still need to select your specific workloads afterward)
winget install -e --id Microsoft.VisualStudioCode (Will not install the File Explorer context menu shortcuts by default; have to manually install to check those boxes in the installer)
winget install -e --id VideoLAN.VLC
winget install -e --id Radionomy.Winamp (Latest version does not allow queuing songs, so better to use 5.6 from https://archive.org/download/winamp5666_full_all_redux)
winget install -e --id Microsoft.WindowsTerminal
winget install -e --id AntibodySoftware.WizTree
winget install -e --id Zoom.Zoom

Here I’ve got each install command on a separate line, but you can combine them into a single line to copy-paste into the command prompt in one shot by separating them with a semicolon, like this:

winget install -e --id 7zip.7zip;winget install -e --id Lexikos.AutoHotkey;winget install -e --id Google.Chrome

WinGet installs apps one at a time, so if you give it a large number of apps to install or update, it may take a while depending on how long each app takes to download and install.

Updating apps

Keeping your apps up-to-date with WinGet is a breeze. Just use the winget upgrade command. If you don’t pass any parameters to it, it will scan your computer and tell you which apps can be updated.

WinGet upgrade command screenshot

Notice that there are apps in this list that I didn’t install with WinGet, such as “Microsoft Azure Storage Explorer”. That’s right, WinGet can even upgrade apps that it didn’t install!

From there you can upgrade a single app using the --id or --name parameter:

winget upgrade --id Git.Git
winget upgrade --name Git

Or you can easily upgrade every application using:

winget upgrade --all

WinGet upgrade all command screenshot

More commands

WinGet.run is handy for searching the app catalog, but you can also search right from the command line if you prefer using winget search <app name>

WinGet command line search screenshot

To see all of the commands check out the official MS documentation, or just type winget on the command line and you’ll get the full menu.

WinGet menu screenshot

You can also use the -? flag to get more information about how to use a command, such as:

winget upgrade -?

I already use Chocolatey / Scoop / etc

If you’re already using an alternate Windows package manager like Chocolatey or Scoop and are happy with it, stick with it. WinGet is still relatively new, so more mature alternatives may provide you with functionality that WinGet doesn’t have yet, or have a larger catalog with more obscure apps that you use. One feature I’m personally looking forward to is locking an app to a specific version so it doesn’t get updated when using the winget update --all command.

I enjoy that WinGet is already installed by default, has every app I’ve looked for, and that I can use it to update apps that I’ve manually installed too.

Conclusion

We’ve seen how easy it is to install apps using WinGet. Not only is it easy to install apps, but it’s also easy to update them, even if they weren’t installed by WinGet. The WinGet catalog is huge, so it likely has every app you want on it. And one of the best parts, it’s already pre-installed on Windows 10+, so there’s no setup required.

Aside

Microsoft is currently looking at allowing the Microsoft Store to install Win32 apps as well. Hopefully once that’s complete it will provide a similar experience to WinGet and pull apps from the same catalog. It would be great since the Microsoft Store apps not only auto-update by themselves, but also roam with your account, so once you log in on a computer it installs your apps with zero effort from you. Unfortunately that future is not a reality yet, and it’s too early to speculate what that user experience will be like, so in the meantime we can use WinGet to make our lives easier.

Happy installing!

Update: There is one app that I couldn’t find on WinGet yet, which is Paint.Net. There’s a request open for the app developer to considering putting it on WinGet.

Leave a Comment

Your email address will not be published. Required fields are marked *

Loading...