The first time I turn on a new computer or boot up my PC after reinstalling Windows, I’m faced with the mammoth task of finding and reinstalling all the software that I like. This list is pretty long, so finding and installing everything can take some time.
Other times, I need to install software on a virtual machine, or a computer may require some software as a build-time requirement. In these cases, I can’t install the software by clicking “next” on an install wizard. I have to install the software in a “headless” manner — that is, without a UI to interact with.
While Windows has been fairly slow in the package management space, the same can’t be said of Linux distributions. Commands like apt-get
can find and install software packages and dependencies, as well as warn you of possible conflicts.
These days, package management has well and truly come to Windows, with quite a few good options to choose from. So what are those options, and what are their pros and cons? Let’s explore them in this article.
Jump ahead:
- Winget
- Chocolatey
- Scoop
- Ninite
- Options beyond Windows package managers
- macOS — Homebrew
- Cross-platform — npm
- How should you manage your packages?
Winget
The first package manager worth mentioning is the package manager you have installed right now, which is Winget. It ships with Windows 11 and was added to Windows 10 via an update. You can test it out by typing winget
at the command line:
Installing packages through Winget is about as simple as you can imagine! Simply type the following:
winget install packagename
Because it’s a standard tool on Windows, running winget list
shows all packages that have been installed through Winget as well as through the Microsoft Store.
Using Winget to find packages to install
You can use Winget itself to search for packages. For example, if you want to install the LLVM compiler, you can just type winget search llvm
and you’ll receive results like the below:
C:\>winget search llvm Name Id Version Match Source ----------------------------------------------- LLVM LLVM.LLVM 16.0.4 winget Spice ChilliBits.Spice 0.16.1 Tag: llvm winget
Technically, it’s a response. But it’s pretty light on details. Who authors this package? Where does it come from? Fortunately, you can use the winget.run site to search for packages and their details. In our case, searching for LLVM and clicking the first result yields these results:
It’s a lot more informative, and a lot more useful. So how does Winget stack up?
- ✅ Comes with Windows
- ✅ Easy to use
- ❌ Doesn’t have a built-in way to view packages — have to use winget.run, which appears to be community-supported and may not be around forever
Chocolatey
Before Winget was around, package management on Windows was still something that people needed. In those times, and to this day, Chocolatey answered that need.
In concept, Chocolatey is largely the same as Winget, as far as finding and installing packages go. However, Chocolatey is a more refined solution, as it began development in 2011.
Because package installers can run PowerShell scripts, pretty much any administrative task relating to package installations can be carried out with Chocolatey.
The package specification is also largely compatible with the much-used Nuget package spec, so developers who want to create their own package can do so without learning too much new technology.
Installing Chocolatey is very simple — just copy the command from the installation page and paste it into PowerShell. The most recent version of the command as of this article’s writing is copied below, but be sure to get the most up-to-date version directly from the Chocolatey website:
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 allows the PowerShell installer script to run, before downloading and executing the installer script. After this, you’re good to call the choco
command. For example, let’s run choco find llvm
, which yields this output:
PS C:> choco find llvm Chocolatey v2.0.0 2 validations performed. 1 success(es), 1 warning(s), and 0 error(s). Validation Warnings: - A pending system reboot request has been detected, however, this is being ignored due to the current command being used 'find'. It is recommended that you reboot at your earliest convenience. ccls 0.20220729.0 [Approved] dotnetcoresdk 1.0.1 [Approved] Downloads cached for licensed users - Possibly broken for FOSS users (due to original download location changes by vendor) ghc 9.6.1 [Approved] ldc 1.32.2 [Approved] Downloads cached for licensed users llvm 16.0.5 [Approved] Downloads cached for licensed users winlibs 10.11.8 [Approved] Downloads cached for licensed users winlibs-llvm-free 10.11.0 [Approved] Downloads cached for licensed users 7 packages found.
Again, we see our LLVM compiler available. Interestingly, Winget only reported having v15.0.7 available at the time of writing, whereas Chocolatey has v16.0.5 available. It’s just one package, but in this particular case, it seems that Chocolatey has the more up-to-date package.
Another nice thing about Chocolatey is that the package explorer seems to be first-party to Chocolatey itself, so one could reasonably assume that it will be around for as long as Chocolatey is. It’s quite a bit more detailed than its Winget counterpart, too:
Also, users can post questions and answers on individual packages, which can help when considering how to automate the installation of a given package:
The only mild-to-moderate downside of Chocolatey is that installing packages usually requires administrator rights to do so. So, how does Chocolatey compare?
- ✅ Free, easy-to-use package manager
- ✅ Has a long history (since 2011) so is definitely reliable by now
- ✅ Package searching function is first-party to Chocolatey itself
- ❌ Doesn’t ship with Windows, requires a modicum of effort to install
If you’d like to jump right into using this package manager, check out this tutorial on using Node on Windows with Chocolatey.
Scoop
Scoop bills itself as a command-line installer for Windows. However, it still offers a slightly different take on package installation and management when compared to Winget or Chocolatey.
Package managers like Chocolatey require administrator privileges to install an app somewhere like Program Files, whereas Scoop takes a more restricted approach to permissions for the apps you install.
Take, for example, installing a tool like VS Code. Normally, if you were installing it yourself, or if you used a tool like Chocolatey, it might install in your program files, your AppData
profile on your computer, or somewhere similar.
While this usually doesn’t present issues, having things installed in places on your computer that are modifiable by you, the system, and other installers can — at times — cause conflicts.
To understand what makes Scoop different, let’s see the output of installing VS Code via Scoop:
In this case, we first add the third-party “extras” bucket. Then, we issue the scoop install vscode
command to begin the installation.
Instead of the installation package for VS Code coming in, a compressed package has been downloaded. Next, it’s extracted to the scoop
directory within our home drive.
Finally, a “shim” is used that points to this installation instance of VS Code. The benefit of this approach is that you could pretty much delete the entire scoop
directory, and the rest of your system would be unaffected.
Searching for VS Code on the Scoop webpage returns a list of packages that match what we’re after. Clicking into a specific package’s details gives some basic details regarding its version and when the package was last updated:
There’s not a lot else here — no comments on the packages themselves or descriptions of how this package is installed.
Clicking on the version links to a GitHub page that contains a lot of detail about how this package is installed. This is good because you can see precisely what an installation package is doing and that it’s not interacting with other files or folders outside of the main Scoop directory. Neat!
Ninite
Up until now in this article, all of the tools that we’ve covered have been heavily focused on using the command prompt to install tools. For most people, this will work just fine, but others prefer a UI tool to view and manage software updates.
In these cases, Ninite is a great option:
There’s a very extensive list of apps available, and all of the installers have been automated. Ninite also claims to only install the minimum, and not install needless cruft like toolbars and the like:
You just tick the apps you want, and then press the “Get Your Ninite” button:
A very small 500kb executable is downloaded, which will retrieve and install the most up-to-date versions of the apps available. Easy.
Options beyond Windows package managers
In a perfect world, all of the above options would be more than adequate. However, there are quite a few choices when it comes to operating systems, and you may want to manage packages on your computer, which could run Linux or macOS.
Fortunately, these operating systems have been around as long as Windows, and while they see less use, the requirement to easily manage packages exists in their realms also. So what should you use if you are managing a non-Windows machine?
macOS — Homebrew
If you’re not on Windows, but instead use macOS, Homebrew offers the best solution here:
Installation is carried out by a simple command executed in the terminal, like this:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Search functionality is built into the website itself, but the information retrieved on packages can be a little austere:
But still, with a link to the GitHub repository present, it’s easy enough to get the information that you’re after.
Cross-platform — npm
Many tasks that you wish to undertake could possibly also be provided by a package from the npm repository:
Access to npm is provided by installing Node.js, then using the following command:
npm install -g package-name
As an added option, you can also use npx
to install and subsequently execute the package you are after.
Packages can be searched for on the npm website, and results are very informative. See the following example of this package that lets you find and remove node_modules
from a directory to save space:
How should you manage your packages?
There are quite a few options, so if you need to make a quick choice, take a glance at the below.
No matter what package management solution you use, one thing we can be sure of is that package managers save us from a lot of button-clicking on installers. They also make it a lot easier to configure a build machine or build environment to build a specific app.
Whichever package manager you choose, you’ll no doubt save some time, so enjoy!
200’s only Monitor failed and slow network requests in production
Deploying a Node-based web app or website is the easy part. Making sure your Node instance continues to serve resources to your app is where things get tougher. If you’re interested in ensuring requests to the backend or third party services are successful, try LogRocket. https://logrocket.com/signup/
LogRocket is like a DVR for web and mobile apps, recording literally everything that happens while a user interacts with your app. Instead of guessing why problems happen, you can aggregate and report on problematic network requests to quickly understand the root cause.
LogRocket instruments your app to record baseline performance timings such as page load time, time to first byte, slow network requests, and also logs Redux, NgRx, and Vuex actions/state. Start monitoring for free.
Пакетный менеджер — хорошо знакомый любому Linux администратору вид ПО, который позволяет централизованно управлять программным обеспечением в системе и легко автоматизировать этот процесс. Пользователи Windows долгое время были лишены подобного инструмента, собственно, как вообще какого-то централизованного подхода к управлению ПО, но затем в Windows появился Магазин, а затем и менеджер пакетов, названный просто — Windows Package Manager или WinGet. В данной статье мы рассмотрим его особенности и примеры работы с ним.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
В целом, если вы имеете опыт работы с любым пакетным менеджером, то начать работу с WinGet будет несложно, но есть определенные отличия. Начнем с того, что в Linux системах репозиторий является доверенным источником приложений, который связан либо с дистрибутивом, либо с разработчиком ПО и мы всегда понимаем из какого источника мы получаем тот или иной пакет.
В WinGet имеется два источника пакетов: магазин Windows и собственный репозиторий, поддерживаемый Microsoft. Но данный репозиторий является лишь одним из каналов распространения ПО независимыми поставщиками. Грубо говоря репозиторий WinGet является просто каталогом ссылок на скачивание инсталляторов того или иного ПО из различных источников, предлагаемых их разработчиками.
Это, конечно же лучше, чем искать и скачивать пакеты в интернет, но серьезно отличается от принятой в Linux модели: если там, скачивая пакет из репозитория дистрибутива мы можем быть уверены, что пакет протестирован именно под вашу версию дистрибутива, то здесь все вопросы к разработчику, если пакет нестабильно работает или не работает под вашу версию ОС, то WinGet ничем вам тут не поможет.
Равно как вопрос доверия к дистрибутиву и репозиторию как единому целому меняется на вопрос доверия к каждой отдельной программе, поэтому будьте внимательны и осмотрительны в выборе ПО при использовании пакетного менеджера Windows.
Возможности WinGet доступны начиная с Windows 10 1709 и во всех актуальных выпусках он предустановлен по умолчанию, в противном случае его можно получить в Магазине Windows под названием App Installer:
Либо скачать с официальной страницы на Github:
microsoft/winget-cli
Начнем же работу с ним с получения списка уже установленных приложений:
winget list
Следует отметить, что WinGet поддерживает работу и с приложениями, установленными вручную или из магазина, поэтому вы всегда можете комбинировать подходы, это удобно и полностью оправдано в принятой в Windows модели управления ПО. Давайте рассмотрим вывод команды подробнее:
Колонка Имя содержит понятное пользователю имя приложения на языке локализации системы, ИД (ID) — его идентификатор, уникальный для каждого приложения, колонки Версия и Доступно показывают установленную версию и последнюю доступную в репозиториях. И наконец колонка Источник показывает на репозиторий в котором доступен пакет. Посмотреть список подключенных репозиториев можно командой:
winget source list
Как мы уже говорили выше, по умолчанию подключено два репозитория: Магазин Windows и WinGet.
Отсутствие репозитория в колонке источник означает, что пакета нет в репозиториях WinGet, но вы можете управлять им с его помощью, хотя список доступных возможностей здесь невелик и сводится к удалению пакета, это может быть удобно в сценариях, когда вы хотите автоматически удалить часть предустановленного ПО. Например, мы можем легко удалить Яндекс.Музыку командой:
winget uninstall Яндекс.Музыка
Но установить назад мы ее уже не сможем, так как программы нет в доступных источниках пакетов.
Для установки ПО нам потребуется указать название пакета или его идентификатор, чтобы найти их следует использовать команду поиска, например:
winget search office
В результате получим все возможные варианты, найденные по заданной строке:
Если не указан фильтр, то поиск производится по всем доступным полям: имя, идентификатор, тег и моникер (прозвище), последний параметр представляет короткое имя, связанное именно с этим пакетом, если строка запроса содержит пробелы, то ее нужно обернуть в кавычки. Также мы можем указать источник, в котором производим поиск. Например, выполним поиск по прозвищу «office» в репозитории Winget:
winget search --moniker office -s winget
Результат показывает все пакеты, моникер которых содержит искомое вхождение:
Если нам нужно строгое вхождение, то к строке запроса нужно добавить ключ -e, в этом случае будет искаться полное совпадение с учетом регистра. Например, команда:
winget search --moniker office -s winget -e
Вернет только первую строку, так как она единственная полностью подходит под запрос.
Всего мы можем использовать следующие фильтры:
- —name — имя пакета
- —id — идентификатор пакета
- —tag — тег пакета
- —moniker — прозвище пакета
Если вы забыли какие-то ключи или опции команды не беда, просто запустите ее без аргументов и вы получите короткую справку по команде.
После того, как мы нашли интересующий нас пакет, мы можем посмотреть информацию о нем, например:
winget show "WPS Office"
Если под запрос попадают сразу несколько пакетов, то пакетный менеджер попросит нас уточнить запрос:
В большинстве случаев будет достаточно добавить ключ -e для строгого совпадения, но не в этот раз, потому что китайская и международная версия имеют одинаковое имя, поэтому в данном случае правильно будет использовать идентификатор:
winget show Kingsoft.WPSOffice
После чего мы получим всю информацию о пакете, включая теги и прозвище, если есть.
Для получения списка версий доступных в репозитории выполните:
winget show Kingsoft.WPSOffice --versions
Теперь можно установить пакет, для это используется команда install и она точно также производит поиск по строке запроса. Будет установлено самое точное вхождение, при нахождении нескольких результатов вас попросят уточнить запрос.
winget install Kingsoft.WPSOffice
Мы также можем добавить фильтр поиска, скажем, только по ID:
winget install --id Kingsoft.WPSOffice
После чего пакетный менеджер скачает и запустит инсталлятор, при этом пользователь будет видеть ход установки, но его участие в ней не потребуется, а само приложение будет установлено с параметрами по умолчанию.
Есть два способа изменить это поведение, для того чтобы полностью скрыть процесс установки используйте ключ:
-h, --silent
А для запуска установки в интерактивном режиме, когда вам, как обычно, придется отвечать на вопросы и выбирать варианты, добавьте ключ:
-i, --interactive
Чтобы установить пакет нужной версии используйте ключ:
-v, --version
Альтернативой установке может быть действие download, которое просто скачает в папку Загрузки инсталлятор пакета. Для обоих действий можно явно указать архитектуру при помощи ключа:
-a, --architecture
Доступными являются значения: X86 и X64.
А если пакет поддерживает разделение на языковые версии, то также можно указать нужный язык при помощи ключа:
--locale
Значение языка следует указывать в формате BCP47, для русского это будет ru-RU, а для английского en-US. По умолчанию скачивается пакет с локалью и разрядностью совпадающей с параметрами системы. Например, команда:
winget download RARLab.WinRAR
Скачает русскую 64-разрядную версию приложения, а для скачивания 32-разрядной английской нам потребуется указать:
winget download RARLab.WinRAR --locale en-US -a X86
С установкой и скачиванием понятно, но одно из самых ценных умений пакетного менеджера — это обновление системы и именно этого сильно не хватало пользователям и администраторам Windows. Чтобы обновить отдельный пакет используйте:
winget upgrade Microsoft.VCRedist.2015+.x64
В данном случае мы обновим распространяемый пакет Microsoft Visual C++ Redistributable
Для того, чтобы обновить все пакеты, имеющие доступные обновления, используйте:
winget upgrade --all
С обновлением пакета тесно связано еще одно действие — закрепление, которое позволяет зафиксировать текущую версию пакета и сделать его недоступным для обновления. В самом простом случае для закрепления используйте:
winget pin add RARLab.WinRAR
После чего пакет не будет обновлен при использовании команды upgrade —all, но может быть обновлен командой обновления пакета или добавлением к upgrade —all ключа —include-pinned.
Чтобы полностью заблокировать обновление пакета следует добавить дополнительный ключ:
winget pin add RARLab.WinRAR --blocking
Еще один вариант закрепления, это закрепление пакета в рамках определенной версии, например:
winget pin add LibreOffice --version 7.4.*
Для просмотра закрепленных пакетов используйте
winget pin list
А для удаления закрепления:
winget pin remove LibreOffice
Чтобы удалить установленную программу используйте действие uninstall:
winget uninstall LibreOffice
Но на этом возможности пакетного менеджера не заканчиваются, вы можете экспортировать список установленного ПО командой:
winget export -o C:\ADM\myapp.json
Если требуется указать конкретные версии ПО, то добавьте ключ:
--include-versions
После чего в указанный файл будет выгружен список всего установленного на ПК ПО, которое есть в репозиториях, неважно как оно было установлено, через WinGet или вручную.
Для автоматической установки ПО из указанного списка используйте команду импорта:
winget import -i C:\ADM\myapp.json
Это позволяет быстро восстановить набор ПО после переустановки ОС или перенести его на другой ПК, а также развернуть нужный набор программ на партию компьютеров.
Если вы запускаете команду импорта на новом ПК, то добавьте ключ:
--accept-source-agreements
Который подавляет запрос на принятие исходного лицензионного соглашения на использование источника пакетов. Также можно добавить:
--accept-package-agreements
Для автоматического принятия лицензионного соглашения, которое может потребоваться для некоторых пакетов.
Чтобы избежать появления ошибок в случае недоступности пакета в источнике используйте:
--ignore-unavailable
Если в файле экспорта указаны определенные версии пакетов, то вы можете проигнорировать их ключом:
--ignore-versions
При его использовании будут установлены самые последние доступные версии пакетов.
Также, если вы не хотите обновлять уже существующие пакеты добавьте ключ:
--no-upgrade
В итоге команда импорта на новом ПК может выглядеть так:
winget import -i C:\ADM\myapp.json --accept-source-agreements --accept-package-agreements --ignore-unavailable --no-upgrade
Конечно, WinGet — молодой продукт и его возможности во многом уступают возможностям пакетных менеджеров Linux, также есть неразрешенные проблемы и неоднозначное поведение менеджера при попытках обновления уже запущенного приложения, если сам инсталлятор не умеет корректно обрабатывать данную ситуацию. Но он развивается и предлагает администратору простой, но в тоже время мощный инструмент для управления программным обеспечением с широкими возможностями автоматизации.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Windows Package Manager 1.7.2782-preview
This is the fourth development build after the Windows Package Manager 1.6 build for Windows 10 (1809+) and Windows 11. This build will be released to Windows Insider Dev builds and Windows Package Manager Insiders.
Experimental features are enabled in this release. Run winget features
to see which experimental features are enabled or disabled. Add the following to your settings (winget settings
) file to enable the experimental features.
"experimentalFeatures": { "directMSI": true "windowsFeature": true },
Windows Package Manager also includes Winget configuration, which automatically handles the setup and configuration requirements for an ideal development environment on your Windows machine. WinGet configuration file helps with installing and managing software packages, applications, programming languages, frameworks, tools, or settings necessary for a project.
Check out our session at Microsoft Build to learn how to get your machine to a ready-to-code state.
A prerelease version of the Microsoft.WinGet.Client PowerShell module has been published to the PowerShell Gallery and will no longer be included as a release asset. To install the latest version of the PowerShell module, run the following command in PowerShell 7+.
Install-Module -Name Microsoft.WinGet.Client
The PowerShell module requires App Installer (winget) to be installed. The
Repair-WinGetPackageManager
cmdlet (work in progress) is designed to install or repair App Installer.
What’s Changed
- Platform source should not be blocked by policy check by @yao-msft in #3725
- Update docs for upgrade command by @KK-Designs in #3639
- Honor 429 Retry-After by @msftrubengu in #3718
New Contributors
- @KK-Designs made their first contribution in #3639
Full Changelog: v1.7.2722-preview…v1.7.2782-preview
Windows Package Manager 1.6.2771
This release is the fourth stable release of Windows Package Manager 1.6 for Windows 10 (1809+) and Windows 11. Experimental features have been disabled in this release.
The winget configure
command is now a stable feature and can be used to automatically handle the setup and configuration requirements for an ideal development environment on your Windows machine. Applying a WinGet configuration file helps with installing and managing software packages, applications, programming languages, frameworks, tools, or settings necessary for a project.
Support for package dependencies is also included in this stable release. You can also use the winget download
command to download a package installer to your local machine.
What’s Changed
- Platform source should not be blocked by policy check by @yao-msft in #3725
- Honor 429 Retry-After by @msftrubengu in #3718
Full Changelog: v1.6.2721…v1.6.2771
Windows Package Manager 1.7.2722-preview
This is the third development build after the Windows Package Manager 1.6 build for Windows 10 (1809+) and Windows 11. This build will be released to Windows Insider Dev builds and Windows Package Manager Insiders.
Experimental features are enabled in this release. Run winget features
to see which experimental features are enabled or disabled. Add the following to your settings (winget settings
) file to enable the experimental features.
"experimentalFeatures": { "directMSI": true "windowsFeature": true },
Windows Package Manager also includes Winget configuration, which automatically handles the setup and configuration requirements for an ideal development environment on your Windows machine. WinGet configuration file helps with installing and managing software packages, applications, programming languages, frameworks, tools, or settings necessary for a project.
Check out our session at Microsoft Build to learn how to get your machine to a ready-to-code state.
A prerelease version of the Microsoft.WinGet.Client PowerShell module has been published to the PowerShell Gallery and will no longer be included as a release asset. To install the latest version of the PowerShell module, run the following command in PowerShell 7+.
Install-Module -Name Microsoft.WinGet.Client
The PowerShell module requires App Installer (winget) to be installed. The
Repair-WinGetPackageManager
cmdlet (work in progress) is designed to install or repair App Installer.
What’s Changed
- Enable COM API access to correlate with the tracking database only by @JohnMcPMS in #3703
- Use correct caller name in Com startup telemetry event by @yao-msft in #3711
Full Changelog: v1.7.2711-preview…v1.7.2722-preview
Windows Package Manager 1.6.2721
This release is the third stable release of Windows Package Manager 1.6 for Windows 10 (1809+) and Windows 11. Experimental features have been disabled in this release.
The winget configure
command is now a stable feature and can be used to automatically handle the setup and configuration requirements for an ideal development environment on your Windows machine. Applying a WinGet configuration file helps with installing and managing software packages, applications, programming languages, frameworks, tools, or settings necessary for a project.
Support for package dependencies is also included in this stable release. You can also use the winget download
command to download a package installer to your local machine.
What’s Changed
- Enable COM API access to correlate with the tracking database only by @JohnMcPMS in #3703
- Use correct caller name in Com startup telemetry event by @yao-msft in #3711
Full Changelog: v1.6.2701…v1.6.2721
Windows Package Manager 1.7.2711-preview
This is the second development build after the Windows Package Manager 1.6 build for Windows 10 (1809+) and Windows 11. This build will be released to Windows Insider Dev builds and Windows Package Manager Insiders.
Experimental features are enabled in this release. Run winget features
to see which experimental features are enabled or disabled. Add the following to your settings (winget settings
) file to enable the experimental features.
"experimentalFeatures": { "directMSI": true "windowsFeature": true },
Windows Package Manager also includes Winget configuration, which automatically handles the setup and configuration requirements for an ideal development environment on your Windows machine. WinGet configuration file helps with installing and managing software packages, applications, programming languages, frameworks, tools, or settings necessary for a project.
Check out our session at Microsoft Build to learn how to get your machine to a ready-to-code state.
A prerelease version of the Microsoft.WinGet.Client PowerShell module has been published to the PowerShell Gallery and will no longer be included as a release asset. To install the latest version of the PowerShell module, run the following command in PowerShell 7+.
Install-Module -Name Microsoft.WinGet.Client
The PowerShell module requires App Installer (winget) to be installed. The
Repair-WinGetPackageManager
cmdlet (work in progress) is designed to install or repair App Installer.
What’s Changed
- Update SECURITY.md from 0.0.2 to 0.0.9 by @Aaron-Junker in #3600
- Microsoft.WinGet.Configuration E2E Pester tests by @msftrubengu in #3605
- SourceAutoUpdateInterval — Group Policy Description update. by @Madhusudhan-MSFT in #3621
- Make windows feature experimental by @ryfu-msft in #3620
- Rework the error list and add a command to get error information by @JohnMcPMS in #3615
- Add new cmdlets and cancellation support for Microsoft.WinGet.Configuration by @msftrubengu in #3614
- Make DSC resource name check case insentive by @msftrubengu in #3632
- Add try/catch when reading upgrade codes by @JohnMcPMS in #3637
- Add norestart to msi uninstall args by @yao-msft in #3638
- Read registry value data on demand by @JohnMcPMS in #3642
- Change alternate url by @JohnMcPMS in #3646
- Set default user agent for http range requests by @yao-msft in #3645
- Remove Invoke-CommandInDesktopPackage use by @JohnMcPMS in #3658
- Improve packaged source updating by @JohnMcPMS in #3657
- Add a bit of randomness to the wait time after source update failure by @JohnMcPMS in #3661
- Reduce the size of the index by @JohnMcPMS in #3666
- Log Com invocation startup telemetry and delay auto update time when invoked from explorer by @yao-msft in #3665
- Enable COM API access to correlate with the tracking database only by @JohnMcPMS in #3670
- Fix localized strings output by @mdanish-kh in #3673
- Improve the version header detection and logging by @JohnMcPMS in #3680
- Revert 3670 by @JohnMcPMS in #3700
New Contributors
- @Aaron-Junker made their first contribution in #3600
Full Changelog: v1.7.2491-preview…v1.7.2711-preview
Windows Package Manager 1.6.2701
This release is the second stable release of Windows Package Manager 1.6 for Windows 10 (1809+) and Windows 11. Experimental features have been disabled in this release.
The winget configure
command is now a stable feature and can be used to automatically handle the setup and configuration requirements for an ideal development environment on your Windows machine. Applying a WinGet configuration file helps with installing and managing software packages, applications, programming languages, frameworks, tools, or settings necessary for a project.
Support for package dependencies is also included in this stable release. You can also use the winget download
command to download a package installer to your local machine.
What’s Changed
- Set default user agent for http range requests by @yao-msft in #3645
- Change alternate url by @JohnMcPMS in #3646
- Improve packaged source updating by @JohnMcPMS in #3657
- Add a bit of randomness to the wait time after source update failure by @JohnMcPMS in #3661
- Log Com invocation startup telemetry and delay auto update time when invoked from explorer by @yaomsftin #3665
- Fix localized strings output by @mdanish-kh in #3673
- Improve the version header detection and logging by @JohnMcPMS in #3680
Full Changelog: release-v1.6.2631…release-v1.6.2701
Windows Package Manager 1.6.2631
This release is the first stable release of Windows Package Manager 1.6 for Windows 10 (1809+), and Windows 11. Experimental features have been disabled in this release.
The winget configure
command is now a stable feature and can be used to automatically handle the setup and configuration requirements for an ideal development environment on your Windows machine. Applying a WinGet configuration file helps with installing and managing software packages, applications, programming languages, frameworks, tools, or settings necessary for a project.
Support for package dependencies is also included in this stable release. You can also use the winget download
command to download a package installer to your local machine.
Features
- WinGet configure #2845
- Support for package dependencies #163
winget download
#658- Specify InstallerType #1166
Bugs
- Symlinks are not created for portable installations #3498
What’s Changed
- Bump version from 1.5 to 1.6 by @ryfu-msft in #3317
- Create SUPPORT.md by @denelon in #3340
- Update README.md by @denelon in #3341
- Update README.md by @mdanish-kh in #3342
- Fix for onboarding to GitOps.ResourceManagement by @Trenly in #3350
- Onboarding to GitOps.ResourceManagement by @microsoft-github-policy-service in #3347
- #2874: Fix for error git submodule status: fatal no submodule mapping… by @gigi81 in #3305
- Move GitOps rules to their own files by @Trenly in #3352
- Fix Component Governance alerts by @msftrubengu in #3355
- Add Breaking-Change label to comment triggers by @Trenly in #3357
- Respect Group Policies for sources by @florelis in #3367
- Stub upgrade self by @msftrubengu in #3299
- Refresh process path variable when installing package dependencies by @ryfu-msft in #3296
- Network troubleshooting by @denelon in #3389
- Microsoft.WinGet.Configuration samples by @msftrubengu in #3369
- Support for out of process configuration clients by @JohnMcPMS in #3363
- Force close sandbox server upon timeout by @yao-msft in #3392
- Relax InstallationNotes max length by @yao-msft in #3397
- Fix wingetutil nuget publish pipeline by @yao-msft in #3396
- Improve packaged test log collection and fix crash by @JohnMcPMS in #3395
- Do not attempt post install ARP correlation if PackageFamilyName is provided and present for the user by @JohnMcPMS in #3391
- Support winget installing AppInstaller by @msftrubengu in #3377
- configure test command «implemented» by @JohnMcPMS in #3414
- Disable RTTI by @JohnMcPMS in #3422
- Explicitly close file stream on FileLogger destruction by @yao-msft in #3424
- Add configuration binaries to binskim scan and fix issues by @yao-msft in #3426
- Build fixes by @msftrubengu in #3433
- Fix using expired cert in tests by @msftrubengu in #3435
- Repair-WinGetPackageManager improvements by @msftrubengu in #3423
- Download command by @ryfu-msft in #3376
- Add initial version of yaml manifest 1.6 by @yao-msft in #3449
- Configure validate command by @JohnMcPMS in #3441
- Add missing definitions to release builds by @msftrubengu in #3450
- Populate missing ManifestVersion for manifest from rest source and make PackageFamilyName and installer type manifest validation warning by @yao-msft in #3460
- Add file logger to the statics object creation by @JohnMcPMS in #3451
- Skip stub packages for msix installer validation by @yao-msft in #3468
- Upgrade 1.6 schema to 2020-12 by @Trenly in #3478
- Allow
--include-unknown
in list--upgrade-available
by @florelis in #3473 - Simplify creating local index by @msftrubengu in #3445
- Move functions to cmdlets for Microsoft.WinGet.Client by @msftrubengu in #3469
- Generate manifest for Winget Download by @ryfu-msft in #3448
- Implement DownloadCommandProhibited by @yao-msft in #3487
- Fix Component Governace issue with System.Security.Cryptography.Xml by @yao-msft in #3495
- Revert «Down sampling (#2950)» by @JohnMcPMS in #3511
- Move Microsoft.WinGet.Client E2E test to Pester framework by @msftrubengu in #3503
- Don’t copy processor’s output binaries by @msftrubengu in #3526
- Attempt to prevent crash in
TelemetryTraceLogger::InitializeInternal()
by @florelis in #3527 - PowerShellGet by @msftrubengu in #3521
- Introducing new Group Policy EnableWindowsPackageManagerCommandLineInterfaces for Intune by @Madhusudhan-MSFT in #3524
- Remove CrossProcessReaderWriteLock by @JohnMcPMS in #3549
- Guard WinRT InProc Window Package Manager Deployment APIs by EnableAp… by @Madhusudhan-MSFT in #3537
- Replace download cancelled message with a localized message by @chausner in #3559
- Add ability to specify where to save modules for configuration by @msftrubengu in #3536
- Make dependencies, windows feature, and download experimental features stable by @ryfu-msft in #3545
- Rename file in single portable installs by @Trenly in #3439
- Add UpgradeBehavior deny by @Trenly in #3512
- Improve rest client manifest parsing for upgrade behavior deny by @yao-msft in #3570
- Add support for
--Installer-Type
argument for commands by @ryfu-msft in #3516 - Enable configuration via IConfigurationStatics by @msftrubengu in #3576
- Apply loc update patch by @JohnMcPMS in #3594
- Give System and Admins full access to state folders by @yao-msft in #3471
- Update configuration interface for future design changes by @JohnMcPMS in #3584
- Make config not experimental and add GP to control it by @JohnMcPMS in #3585
- Disable build, and build configuration in shared lib by @msftrubengu in #3595
- Bump client version from 1.6 to 1.7 by @ryfu-msft in #3599
- Add argument for ignoring warnings by @Trenly in #3572
- Update SECURITY.md from 0.0.2 to 0.0.9 by @Aaron-Junker in #3600
- Microsoft.WinGet.Configuration E2E Pester tests by @msftrubengu in #3605
- SourceAutoUpdateInterval — Group Policy Description update. by @Madhusudhan-MSFT in #3621
- Make windows feature experimental by @ryfu-msft in #3620
- Rework the error list and add a command to get error information by @JohnMcPMS in #3615
- Add new cmdlets and cancellation support for Microsoft.WinGet.Configuration by @msftrubengu in #3614
- Make DSC resource name check case insentive by @msftrubengu in #3632
- Add try/catch when reading upgrade codes by @JohnMcPMS in #3637
- Add norestart to msi uninstall args by @yao-msft in #3638
- Read registry value data on demand by @JohnMcPMS in #3642
- Change alternate url by @JohnMcPMS in #3646
- Set default user agent for http range requests by @yao-msft …
Windows Package Manager 1.6.2561
This release represents our second Windows Package Manager 1.6 release candidate build for Windows 10 (1809+), and Windows 11. Experimental features have been disabled in this release.
The winget configure
command is now a stable feature and can be used to automatically handle the setup and configuration requirements for an ideal development environment on your Windows machine. Applying a WinGet configuration file helps with installing and managing software packages, applications, programming languages, frameworks, tools, or settings necessary for a project.
You can also use the winget download
command to download a package installer to your local machine. Support for package dependencies and enabling Windows Features are also included in this stable release.
Features
- WinGet configure #2845
- Support for package dependencies #163
winget download
#658- Specify InstallerType #1166
- Windows Features (WSL) #3320
Bugs
- Symlinks are not created for portable installations #3498
What’s Changed
- Bump version from 1.5 to 1.6 by @ryfu-msft in #3317
- Create SUPPORT.md by @denelon in #3340
- Update README.md by @denelon in #3341
- Update README.md by @mdanish-kh in #3342
- Fix for onboarding to GitOps.ResourceManagement by @Trenly in #3350
- Onboarding to GitOps.ResourceManagement by @microsoft-github-policy-service in #3347
- #2874: Fix for error git submodule status: fatal no submodule mapping… by @gigi81 in #3305
- Move GitOps rules to their own files by @Trenly in #3352
- Fix Component Governance alerts by @msftrubengu in #3355
- Add Breaking-Change label to comment triggers by @Trenly in #3357
- Respect Group Policies for sources by @florelis in #3367
- Stub upgrade self by @msftrubengu in #3299
- Refresh process path variable when installing package dependencies by @ryfu-msft in #3296
- Network troubleshooting by @denelon in #3389
- Microsoft.WinGet.Configuration samples by @msftrubengu in #3369
- Support for out of process configuration clients by @JohnMcPMS in #3363
- Force close sandbox server upon timeout by @yao-msft in #3392
- Relax InstallationNotes max length by @yao-msft in #3397
- Fix wingetutil nuget publish pipeline by @yao-msft in #3396
- Improve packaged test log collection and fix crash by @JohnMcPMS in #3395
- Do not attempt post install ARP correlation if PackageFamilyName is provided and present for the user by @JohnMcPMS in #3391
- Support winget installing AppInstaller by @msftrubengu in #3377
- configure test command «implemented» by @JohnMcPMS in #3414
- Disable RTTI by @JohnMcPMS in #3422
- Explicitly close file stream on FileLogger destruction by @yao-msft in #3424
- Add configuration binaries to binskim scan and fix issues by @yao-msft in #3426
- Build fixes by @msftrubengu in #3433
- Fix using expired cert in tests by @msftrubengu in #3435
- Repair-WinGetPackageManager improvements by @msftrubengu in #3423
- Download command by @ryfu-msft in #3376
- Add initial version of yaml manifest 1.6 by @yao-msft in #3449
- Configure validate command by @JohnMcPMS in #3441
- Add missing definitions to release builds by @msftrubengu in #3450
- Populate missing ManifestVersion for manifest from rest source and make PackageFamilyName and installer type manifest validation warning by @yao-msft in #3460
- Add file logger to the statics object creation by @JohnMcPMS in #3451
- Skip stub packages for msix installer validation by @yao-msft in #3468
- Upgrade 1.6 schema to 2020-12 by @Trenly in #3478
- Allow
--include-unknown
in list--upgrade-available
by @florelis in #3473 - Simplify creating local index by @msftrubengu in #3445
- Move functions to cmdlets for Microsoft.WinGet.Client by @msftrubengu in #3469
- Generate manifest for Winget Download by @ryfu-msft in #3448
- Implement DownloadCommandProhibited by @yao-msft in #3487
- Fix Component Governace issue with System.Security.Cryptography.Xml by @yao-msft in #3495
- Revert «Down sampling (#2950)» by @JohnMcPMS in #3511
- Move Microsoft.WinGet.Client E2E test to Pester framework by @msftrubengu in #3503
- Don’t copy processor’s output binaries by @msftrubengu in #3526
- Attempt to prevent crash in
TelemetryTraceLogger::InitializeInternal()
by @florelis in #3527 - PowerShellGet by @msftrubengu in #3521
- Introducing new Group Policy EnableWindowsPackageManagerCommandLineInterfaces for Intune by @Madhusudhan-MSFT in #3524
- Remove CrossProcessReaderWriteLock by @JohnMcPMS in #3549
- Guard WinRT InProc Window Package Manager Deployment APIs by EnableAp… by @Madhusudhan-MSFT in #3537
- Replace download cancelled message with a localized message by @chausner in #3559
- Add ability to specify where to save modules for configuration by @msftrubengu in #3536
- Make dependencies, windows feature, and download experimental features stable by @ryfu-msft in #3545
- Rename file in single portable installs by @Trenly in #3439
- Add UpgradeBehavior deny by @Trenly in #3512
- Improve rest client manifest parsing for upgrade behavior deny by @yao-msft in #3570
- Add support for
--Installer-Type
argument for commands by @ryfu-msft in #3516 - Enable configuration via IConfigurationStatics by @msftrubengu in #3576
- Apply loc update patch by @JohnMcPMS in #3594
- Give System and Admins full access to state folders by @yao-msft in #3471
- Update configuration interface for future design changes by @JohnMcPMS in #3584
- Make config not experimental and add GP to control it by @JohnMcPMS in #3585
- make windows feature experimental by @ryfu-msft in #3620
New Contributors
- @microsoft-github-policy-service made their first contribution in #3347
- @gigi81 made their first contribution in #3305
Full Changelog: v1.5.2201…v1.6.2561
Windows Package Manager 1.7.2491-preview
This is the first development build after the Windows Package Manager 1.6 build for Windows 10 (1809+) and Windows 11. This build will be released to Windows Insider Dev builds and Windows Package Manager Insiders.
Experimental features are enabled in this release. Run winget features
to see which experimental features are enabled or disabled. Add the following to your settings (winget settings
) file to enable the experimental features.
"experimentalFeatures": { "directMSI": true },
Windows Package Manager also includes Winget configuration, which automatically handles the setup and configuration requirements for an ideal development environment on your Windows machine. WinGet configuration file helps with installing and managing software packages, applications, programming languages, frameworks, tools, or settings necessary for a project.
Check out our session at Microsoft Build to learn how to get your machine to a ready-to-code state.
A prerelease version of the Microsoft.WinGet.Client PowerShell module has been published to the PowerShell Gallery and will no longer be included as a release asset. To install the latest version of the PowerShell module, run the following command in PowerShell 7+.
Install-Module -Name Microsoft.WinGet.Client
The PowerShell module requires App Installer (winget) to be installed. The
Repair-WinGetPackageManager
cmdlet (work in progress) is designed to install or repair App Installer.
What’s Changed
- Disable build, and build configuration in shared lib by @msftrubengu in #3595
- Bump client version from 1.6 to 1.7 by @ryfu-msft in #3599
- Add argument for ignoring warnings by @Trenly in #3572
Full Changelog: v1.6.2482…v1.7.2491-preview
Windows Package Manager 1.6.2482
This release represents our first Windows Package Manager 1.6 release candidate build for Windows 10 (1809+), and Windows 11. Experimental features have been disabled in this release.
The winget configure
command is now a stable feature and can be used to automatically handle the setup and configuration requirements for an ideal development environment on your Windows machine. Applying a WinGet configuration file helps with installing and managing software packages, applications, programming languages, frameworks, tools, or settings necessary for a project.
You can also use the winget download
command to download a package installer to your local machine. Support for package dependencies and enabling Windows Features are also included in this stable release.
Features
- WinGet configure #2845
- Support for package dependencies #163
winget download
#658- Specify InstallerType #1166
- Windows Features (WSL) #3320
Bugs
- Symlinks are not created for portable installations #3498
What’s Changed
- Bump version from 1.5 to 1.6 by @ryfu-msft in #3317
- Create SUPPORT.md by @denelon in #3340
- Update README.md by @denelon in #3341
- Update README.md by @mdanish-kh in #3342
- Fix for onboarding to GitOps.ResourceManagement by @Trenly in #3350
- Onboarding to GitOps.ResourceManagement by @microsoft-github-policy-service in #3347
- #2874: Fix for error git submodule status: fatal no submodule mapping… by @gigi81 in #3305
- Move GitOps rules to their own files by @Trenly in #3352
- Fix Component Governance alerts by @msftrubengu in #3355
- Add Breaking-Change label to comment triggers by @Trenly in #3357
- Respect Group Policies for sources by @florelis in #3367
- Stub upgrade self by @msftrubengu in #3299
- Refresh process path variable when installing package dependencies by @ryfu-msft in #3296
- Network troubleshooting by @denelon in #3389
- Microsoft.WinGet.Configuration samples by @msftrubengu in #3369
- Support for out of process configuration clients by @JohnMcPMS in #3363
- Force close sandbox server upon timeout by @yao-msft in #3392
- Relax InstallationNotes max length by @yao-msft in #3397
- Fix wingetutil nuget publish pipeline by @yao-msft in #3396
- Improve packaged test log collection and fix crash by @JohnMcPMS in #3395
- Do not attempt post install ARP correlation if PackageFamilyName is provided and present for the user by @JohnMcPMS in #3391
- Support winget installing AppInstaller by @msftrubengu in #3377
- configure test command «implemented» by @JohnMcPMS in #3414
- Disable RTTI by @JohnMcPMS in #3422
- Explicitly close file stream on FileLogger destruction by @yao-msft in #3424
- Add configuration binaries to binskim scan and fix issues by @yao-msft in #3426
- Build fixes by @msftrubengu in #3433
- Fix using expired cert in tests by @msftrubengu in #3435
- Repair-WinGetPackageManager improvements by @msftrubengu in #3423
- Download command by @ryfu-msft in #3376
- Add initial version of yaml manifest 1.6 by @yao-msft in #3449
- Configure validate command by @JohnMcPMS in #3441
- Add missing definitions to release builds by @msftrubengu in #3450
- Populate missing ManifestVersion for manifest from rest source and make PackageFamilyName and installer type manifest validation warning by @yao-msft in #3460
- Add file logger to the statics object creation by @JohnMcPMS in #3451
- Skip stub packages for msix installer validation by @yao-msft in #3468
- Upgrade 1.6 schema to 2020-12 by @Trenly in #3478
- Allow
--include-unknown
in list--upgrade-available
by @florelis in #3473 - Simplify creating local index by @msftrubengu in #3445
- Move functions to cmdlets for Microsoft.WinGet.Client by @msftrubengu in #3469
- Generate manifest for Winget Download by @ryfu-msft in #3448
- Implement DownloadCommandProhibited by @yao-msft in #3487
- Fix Component Governace issue with System.Security.Cryptography.Xml by @yao-msft in #3495
- Revert «Down sampling (#2950)» by @JohnMcPMS in #3511
- Move Microsoft.WinGet.Client E2E test to Pester framework by @msftrubengu in #3503
- Don’t copy processor’s output binaries by @msftrubengu in #3526
- Attempt to prevent crash in
TelemetryTraceLogger::InitializeInternal()
by @florelis in #3527 - PowerShellGet by @msftrubengu in #3521
- Introducing new Group Policy EnableWindowsPackageManagerCommandLineInterfaces for Intune by @Madhusudhan-MSFT in #3524
- Remove CrossProcessReaderWriteLock by @JohnMcPMS in #3549
- Guard WinRT InProc Window Package Manager Deployment APIs by EnableAp… by @Madhusudhan-MSFT in #3537
- Replace download cancelled message with a localized message by @chausner in #3559
- Add ability to specify where to save modules for configuration by @msftrubengu in #3536
- Make dependencies, windows feature, and download experimental features stable by @ryfu-msft in #3545
- Rename file in single portable installs by @Trenly in #3439
- Add UpgradeBehavior deny by @Trenly in #3512
- Improve rest client manifest parsing for upgrade behavior deny by @yao-msft in #3570
- Add support for
--Installer-Type
argument for commands by @ryfu-msft in #3516 - Enable configuration via IConfigurationStatics by @msftrubengu in #3576
- Apply loc update patch by @JohnMcPMS in #3594
- Give System and Admins full access to state folders by @yao-msft in #3471
- Update configuration interface for future design changes by @JohnMcPMS in #3584
- Make config not experimental and add GP to control it by @JohnMcPMS in #3585
New Contributors
- @microsoft-github-policy-service made their first contribution in #3347
- @gigi81 made their first contribution in #3305
- @Madhusudhan-MSFT made their first contribution in #3524
Full Changelog: v1.5.1572…v1.6.2482
These are most widely used Windows package managers
by Sagar Naresh
Sagar is a web developer and technology journalist. Currently associated with WindowsReport and SamMobile. When not writing, he is either at the gym sweating it out or playing… read more
Updated on
- Windows package manager allows you to update, install or download apps across all systems with ease.
- Although multiple package managers are available, choosing the correct one can be tricky.
- We would suggest you go for Chocolatey or the Yarn Windows package managers.
Windows OS has gained a bunch of Linux functionalities over the years. For example, Windows 10 and 11 support the Linux subsystem through WSL 2 and now also feature a package manager called Windows Package Manager.
A package manager allows you to upgrade, install, or remove software you have previously installed easily and from a single place. Package managers deal with packages, meaning a collection of files. This guide will show you a list of some of the best package managers for Windows.
What is a Windows Package Manager?
A package manager is a tool that allows you to package your project and publish it for others. As explained by Microsoft, a package manager is a system or set of tools used to automate installing, upgrading, configuring, and using the software.
A package can be understood simply. For example, when you bake a cake, it is called a compilation, and when you buy a readymade cake, you have a package. Developers can also use the package manager to specify the prerequisites if they need to develop solutions for a given project.
It allows you to manage the dependencies of your project. Managing all dependencies can be a challenging task, which using a package manager can ease.
Package managers are available as intuitive software or as a command line tool. Here are some of the benefits of using a package manager:
- Install/uninstall packages
- Safeguard source files from malware
- Add drivers to the driver store
- Install language packs
- Seamlessly install, update, or remove multiple packages using one command string
What are some of the best package managers for Windows?
- What is a Windows Package Manager?
- What are some of the best package managers for Windows?
- Chocolatey — Simple to use with powerful features
- Scoop – Feature-rich open-source package manager
- Ninite — Install software group without much effort
- Windows Package Manager (WINGET) — Microsoft’s native package manager
- Yarn — A reliable and secure package manager
Chocolatey – Simple to use with powerful features
In the way RPM is the package manager for Linux, Chocolatey is a package manager for Windows. So the compatibility ranges from the most modern Windows OS version back to Windows 7.
Chocolatey supports cloud environments such as Microsoft Azure, Amazon AWS, and others. Additionally, you can use this Windows package manager to manage all software, such as installers, scripts, zip files, etc.
You do not need an active internet connection to use Chocolatey. It offers over 7,000 community packages, the largest online registry of Windows packages, that you can integrate with your package and reuse existing logic.
Chocolatey uses Windows PowerShell, so there is no need to learn a new language to use this package manager.
You may find some issues with it as not all software packages are up to date with their latest versions.
How we test, review and rate?
We have worked for the past 6 months on building a new review system on how we produce content. Using it, we have subsequently redone most of our articles to provide actual hands-on expertise on the guides we made.
For more details you can read how we test, review, and rate at WindowsReport.
Here are some of the best features of Chocolatey:
- Intuitive UI that makes package management easy
- Once deployed, it allows you to manage anything from anywhere
- It can be efficiently run using Windows PowerShell
- Supports packaging of anything, including script, zip, etc.
- Instructions to create your very own package
- Offers features such as Package Auditor, Package Reducer, Malware Protection
⇒ Get Chocolatey
Scoop – Feature-rich open-source package manager
Scoop is another popular Windows package manager that is open source and can install Windows software with just a single command line.
It is a developer’s tool that lets you install system utilities, which rely on Linux and aren’t found by default on Windows.
You would need an extra repository to install Windows desktop programs, but it can generally install apps such as VLC and Chrome.
The Scoop package manager does not use NuGet or install programs globally. Instead, apps are limited to a user account and are installed in a unique path to avoid path pollution.
Below are some of the key highlights of the Scoop package manager:
- Scope provides package manager facilities dedicated to a user account
- It is more lightweight as compared to Chocolatey
- You can use the Windows repository to install desktop apps
- You do not need admin rights to use Scoop
⇒ Get Scoop
Ninite – Install software group without much effort
Ninite is a freeware tool that is crapware free and allows you to manage, update or install a group of software without putting in much effort.
The interface is pretty modern, and all you need to do is select the applications you wish to install on a system and get the installer for it.
Software installation in bulk saves a significant amount of time, and installing the software in your PC’s language so that you do not have to worry about different app versions.
When you open Ninite, it will show you some of the popular apps your PC should have. Hitting the Get Installer button gets you all those apps.
There is Ninite Pro as well, which lets you manage apps on all your machines via the web. It has now received a new interface as well.
Here are some of the best features of Ninite:
- Works in background
- Simple and easy-to-use interface
- No junkware is required to run Ninite
- Install appropriate apps on appropriate systems
- No reboot is required after installing the apps
⇒ Get Ninite
Windows Package Manager (WINGET) – Microsoft’s native package manager
WINGET, or Windows Package Manager, is a Microsoft native command line tool that lets you discover, install, upgrade, remove, and even configure apps on Windows 10 and 11.
The process of downloading the latest version of the program to updating those running the old versions remains automatic and can be executed by running a simple command.
WINGET makes use of the YAML package manifest format. This makes it much easier to understand and configure. Devs also use YAML to bundle their applications to make them compatible with WINGET.
Previously, Windows had to use third-party package managers such as Chocolatey, which makes it more popular than the Windows Package Manager.
Below are some of the key features of Windows Package Manager:
- The interface is easy to use
- You can quickly discover new and popular apps with a single command
- Easily upgrade or downgrade to a specific version of the app
- It is open source
- WINGET uses secure channels to download apps
⇒ Get Windows Package Manager
- High GPU Usage but Low FPS: 8 Ways to Fix This Issue
- Roblox Error 267: How to Fix it
Yarn – A reliable and secure package manager
Yarn is another popular open-source command line tool that is fast and reliable. It is built by the community for the community, which means it allows community members to enhance its feature.
The Yarn Windows Package Manager is hosted on GitHub even though Facebook backs it. It is fast as it parallelizes the operation to use the resources better, making the installation faster.
Users can choose between silent, passive, and interactive modes to install complex things. To ensure high security, all the data is thoroughly checked for its integrity.
Yarn is designed to guarantee that the apps working on one system will work exactly in the same way on the other.
Check out the best features of Yarn:
- Offers an offline mode
- The same dependencies get installed on every system
- Flat mode ensures that the exact versions are installed across the board
- The open-source nature allows it to get more features from the community
⇒ Get Yarn
That is it from us in this guide. These are some of the best package managers for Windows that users commonly use.
Besides, users facing the Windows Package Manager operation failed error can check out our guide and resolve the problem.
Feel free to let us know in the comments below which one of the Windows package managers you opted for. Or if you have used or are using a different one that you would like to use to feature in this guide.
From Wikipedia, the free encyclopedia
Developer(s) | Microsoft |
---|---|
Initial release | May 13, 2020; 3 years ago |
Stable release |
1.5.2201[1] (9 August 2023; 57 days ago) |
Preview release | 1.4.2161 (August 6, 2022; 13 months ago[2]) [±] |
Repository | github |
Written in | C++ |
Operating system | Windows 10 or later |
Size | ~23 MB |
Available in | Chinese, English, French, German, Japanese, and others |
Type | Package manager |
License | MIT License |
Website | learn |
The Windows Package Manager (also known as winget) is a free and open-source package manager designed by Microsoft for Windows 10 and Windows 11. It consists of a command-line utility and a set of services for installing applications.[3][4] Independent software vendors can use it as a distribution channel for their software packages.
History[edit]
Windows Package Manager was first announced at the Microsoft Build developer conference in May 2020.[5][4]
Before deciding to develop Windows Package Manager, the team behind it explored Chocolatey, Scoop, Ninite, AppGet, Npackd and the PowerShell-based OneGet.[4] After the announcement of winget, the developer of AppGet, Keivan Beigi, claimed that Microsoft interviewed him in December 2019 under the pretense of employment and acquiring AppGet.[6] After talking with Beigi, Microsoft allegedly ceased communication with him until confirming one day before the launch of winget that they would not be hiring him. Beigi was dismayed at Microsoft’s lack of attribution of AppGet. The release of winget led Beigi to announce that AppGet would be discontinued in August 2020.[6][7][8] Microsoft responded with a blog post crediting a number of winget’s features to AppGet.[9][10][11]
Microsoft released version 1.0 of Windows Package Manager on May 27, 2021. The Microsoft Community Repository included over 1,400 packages at that date.[12]
Overview[edit]
The winget tool supports installers based on EXE, MSIX, and MSI.[13] The public Windows Package Manager Community repository hosts manifest files for supported applications in YAML format.[14] In September 2020, Microsoft added the ability to install applications from the Microsoft Store and a command auto-completion feature.[15]
To reduce the likelihood of non-Microsoft-approved software (see vendor lock-in), including malicious software, making its way into the repository and onto the target machine, Windows Package Manager uses Microsoft SmartScreen, static analysis, SHA256 hash validation and other processes.[16][17]
The winget client source code and the community manifest repository are licensed under MIT License and hosted on GitHub.[18][14]
Commands[edit]
Name | Description |
---|---|
export | Exports a list of the installed applications |
features | Show status of experimental features |
hash | Hash installer files |
import | Install all the applications in a file |
install | Install the given application |
list | Display installed applications |
show | Show information about the given application |
search | Search and show basic information of applications |
settings | Open winget configuration settings |
source | Manage application sources |
upgrade | Upgrades the given application |
uninstall | Uninstall the given application |
validate | Validate a manifest file |
Example[edit]
The following example searches for and installs variable $PKG_ID
.
winget install --id=$PKG_ID -e
Package ID Examples[edit]
- Visual Studio Code, a code editor from Microsoft:[19]
Microsoft.VisualStudioCode
- Google Chrome:[20]
Google.Chrome
- Mozilla Firefox:
Mozilla.Firefox
- Brave:
BraveSoftware.BraveBrowser
- Vivaldi:
VivaldiTechnologies.Vivaldi
See also[edit]
- Web Platform Installer
- NuGet
- Chocolatey
- Scoop Package Manager
- List of software package management systems
- vcpkg
References[edit]
- ^ «Windows Package Manager 1.5.2201».
- ^ «preview · microsoft/winget-cli · GitHub». GitHub. Retrieved 2022-08-08.
- ^ Tom Warren (20 May 2020). «Microsoft’s new Windows Package Manager is already better than the Windows Store». The Verge.
- ^ a b c Windows Package Manager Preview | Windows Command Line
- ^ Microsoft debuts Windows Package Manager for your dev environment | VentureBeat
- ^ a b Warren, Tom (28 May 2020). «Microsoft copied its new Windows Package Manager from rival AppGet, claims developer». The Verge. Vox Media. Retrieved June 1, 2020.
- ^ Anderson, Tim (May 28, 2020). «Embrace and kill? AppGet dev claims Microsoft reeled him in with talk of help and a job – then released remarkably similar package manager». The Register. Retrieved 2020-06-01.
- ^ Stewart, Ashley (May 28, 2020). «A developer says Microsoft led him on about a job and buying his tool before going silent and releasing its own very similar service. Now he wants an explanation and credit for his work». Business Insider. Retrieved June 1, 2020.
- ^ Tung, Liam (June 1, 2020). «Windows 10: Microsoft now credits maker of package manager it ‘copied’ – but offers no apology». ZDNet. Retrieved 2020-06-02.
- ^ Microsoft gives AppGet creator credit for Windows Package Manager — Neowin
- ^ Warren, Tom (April 20, 2022). «Microsoft finally gives AppGet developer the credit he deserves». The Verge. Retrieved 2020-06-02.
- ^ Anderson, Tim (May 27, 2021). «Microsoft releases command-line package manager for Windows (there are snags)». The Register. Retrieved 2021-05-28.
- ^ «Use the winget tool to install and manage applications». Microsoft.
- ^ a b GitHub — microsoft/winget-pkgs: The Microsoft community Windows Package Manager manifest repository
- ^ Abrams, Lawrence (September 23, 2020). «Windows 10 Package Manager can now install Microsoft Store apps». Bleeping Computer. Retrieved 2020-10-10.
- ^ Tung, Liam (May 21, 2020). «Microsoft’s Windows Package Manager: This command-line tool can install all your apps». ZDNet. Retrieved 2020-06-02.
- ^ How to Use Windows Package Manager — Petri
- ^ «GitHub — microsoft/winget-cli: Windows Package Manager CLI (a.k.a. winget)». May 20, 2020 – via GitHub.
- ^ «Winget PKG of Visual Studio Code» https://winget.run/pkg/Microsoft/VisualStudioCode
- ^ «Winget PKG of Google Chrome» https://winget.run/pkg/Google/Chrome
External links[edit]
- Windows Package Manager | Microsoft Docs
- winget-cli on GitHub
- winget-pkgs on GitHub