If you didn't know already, Windows has a native command line package manager called
Linux users will likely not find this as exciting news, since they've had tools like
apt-get, and so on.
Also, some Windows users may be saying "We've been having it", with tools like Chocolatey.
But for one to be built in with Windows and supported by Microsoft going forward is quite important I believe regarding adoption of the tooling.
For those that aren't sure what a package manager is, well,
winget can be used to automatically install some of the apps you would manually install in the past.
For example if you would like to install the Sysinternals Suite, you can run the below from a command line:
winget install sysinternals --accept-package-agreements
The above will also accept the end user license agreements, instead of prompting the user to do so.
sysinternals argument above is actually a general query, so it's likely better to make use of a specific package id to avoid
any abuse by malicious package authors. Or maybe I'm just paranoid, but an example when installing 7zip with the id is below:
winget install --id 7zip.7zip
Sometimes these ids can be a bit strange, for example the id for sysinternals is
9P7KNL5RWT25 which seems a bit random and made me
wonder if its a legit package:
C:\>winget search sysinternals Name Id Version Source -------------------------------------------------------------------------- Sysinternals Suite 9P7KNL5RWT25 Unknown msstore Process Monitor Microsoft.Sysinternals.ProcessMonitor 3.91 winget Autoruns Microsoft.Sysinternals.Autoruns 14.09 winget Process Explorer Microsoft.Sysinternals.ProcessExplorer 16.43 winget
You can also list what's currently installed:
Or if you want to check details of a specific package you can also provide its id (notice how its not case sensitive):
C:\>winget list --id notepad++.notepad++ Name Id Version Available Source ------------------------------------------------------------------- Notepad++ (64-bit x64) Notepad++.Notepad++ 8.4.3 8.4.4 winget
In the example above, we can see there's a newer version of Notepad++ to the one that's installed. You can also show more details about a specific package:
C:\>winget show --id notepad++.notepad++ Found Notepad++ [Notepad++.Notepad++] Version: 8.4.4 Publisher: Notepad++ Team Publisher Url: https://notepad-plus-plus.org Publisher Support Url: https://notepad-plus-plus.org/online-help Author: Don Ho Moniker: notepad++ Description: Notepad++ is a free (as in “free speech” and also as in “free beer”) source code editor and Notepad replacement that supports several languages. Running in the MS Windows environment, its use is governed by GNU General Public License. Homepage: https://notepad-plus-plus.org License: GPL-3.0-or-later License Url: https://raw.githubusercontent.com/notepad-plus-plus/notepad-plus-plus/master/LICENSE Copyright: Copyright (C)2021 Don HO <email@example.com>. Copyright Url: https://raw.githubusercontent.com/notepad-plus-plus/notepad-plus-plus/master/LICENSE Installer: Type: nullsoft Download Url: https://github.com/notepad-plus-plus/notepad-plus-plus/releases/download/v8.4.4/npp.8.4.4.Installer.x64.exe SHA256: 638bd860149703820bf605e1098d9fa158982281cc7cfda788416c1fd3093931
And also show the available versions:
C:\>winget show --id notepad++.notepad++ --versions Found Notepad++ [Notepad++.Notepad++] Version ------- 8.4.4 8.4.3 8.4.2 8.4.1 8.4 8.3.3 8.3.1 8.2.1 8.2 184.108.40.206 220.127.116.11 8.1.5 8.1.4 8.1.3 8.1.2 8.1.1 8.1 8.0 7.9.5 7.9.4 7.9.3 7.9.2 7.9.1 7.9 7.8.9 7.8.8 7.8.7 7.8.6
In this case you can then just run the
winget upgrade notepad++
Finally, there's also a website where you can go to find more information on packages, for those that do like a bit of a GUI:
I really enjoy this
winget App Installer experience, although I still sometimes feel like I'd have more control
over how my applications are installed, what options are set, which location its installed to.
Maybe I am just too used to the way I used to do things, and should just get used to this more modern, easier way.
Of course, in future, it may just be that I need to set specific command line switches or update configuration files to get it to my liking. I only see this as a positive for the future of Windows.
Especially for example working as a software developer in a team, being able to automate the installation of an environment is crucial for repeatability and consistent experiences.