Как перестать искать экзешники по всему интернету и начать жить
Вспомните, сколько раз вы переустанавливали систему или настраивали новое рабочее место. Сначала идешь за Chrome, потом за VS Code, следом тянешь Git, Docker, Telegram, какой-нибудь специфичный шрифт для терминала... К третьему часу кликанья по кнопкам «Next» в инсталляторах начинаешь тихо ненавидеть Windows. В Linux есть apt или pacman, в macOS — brew. А что у нас?
Долгое время в Windows царил хаос, который пытались упорядочить энтузиасты с Chocolatey или Scoop. Но пару лет назад Microsoft выкатила свой официальный менеджер пакетов — WinGet. А репозиторий microsoft/winget-pkgs — это то самое «сердце» системы, где лежат инструкции для установки почти любого софта, который вам может понадобиться.
Что это за проект на самом деле
Если коротко: это огромная база данных манифестов. Сам WinGet — это просто инструмент в командной строке, а winget-pkgs — это то, откуда он узнает, по какой ссылке скачать установщик, какую контрольную сумму проверить и с какими флагами запустить «тихую» установку.
Интересно, что Microsoft не просто создала закрытый каталог, а отдала его на откуп сообществу. Сейчас в репозитории больше 10 тысяч звезд и тысячи контрибьюторов. Если вы написали крутую утилиту и хотите, чтобы её можно было поставить одной командой winget install my-cool-app, вам нужно прийти именно сюда.
Как это работает под капотом
Внутри репозитория нет самих бинарников. Там лежат YAML-файлы (манифесты). Когда вы вводите команду установки, WinGet лезет в этот репозиторий, находит нужный YAML и читает из него инструкции.
Проект поддерживает несколько типов установщиков:
- Классические .exe и .msi
- Современные MSIX и APPX
- Шрифты (да, теперь их можно ставить через консоль)
Скриптовые установщики пока не завезли, что немного расстраивает, но для большинства задач хватает и того, что есть.
Почему это полезно разработчику
Главный кейс — автоматизация. Вместо того чтобы хранить папку с дистрибутивами на флешке, вы создаете один .bat или .ps1 файл.
Пример типичного набора для старта:
winget install Microsoft.VisualStudioCode
winget install Git.Git
winget install Docker.DockerDesktop
winget install JetBrains.Toolbox
Запустили, ушли пить кофе, вернулись — рабочее окружение готово. Никаких поисков официальных сайтов и проверки, не скачали ли вы случайно версию с рекламным ПО.
Кстати, WinGet умеет обновлять всё установленное одной командой: winget upgrade --all. Это избавляет от необходимости держать в автозагрузке десяток апдейтеров для каждой программы.
Как добавить свою программу
Если вы разработчик софта под Windows, попасть в официальный репозиторий — хороший тон. Процесс выглядит стандартно для GitHub: делаете форк, добавляете манифест своего приложения и создаете Pull Request.
Манифест выглядит примерно так:
PackageIdentifier: MyCompany.MyApp
PackageVersion: 1.0.0
Installers:
- Architecture: x64
InstallerType: exe
InstallerUrl: https://example.com/setup.exe
InstallerSha256: abcdef123456...
После отправки PR включаются автоматические проверки (те самые бейджи в начале статьи). Роботы Microsoft проверят ссылку на скачивание, просканируют файл на вирусы и попробуют установить его в чистой песочнице. Если всё ок — ваш софт станет доступен миллионам пользователей Windows.
Стоит ли переходить на WinGet
Если вы привыкли к Chocolatey, то WinGet может показаться чуть менее гибким в плане кастомизации путей установки. Но у него есть жирный плюс — нативная поддержка от Microsoft и то, что он уже предустановлен в современных версиях Windows 10 и 11.
Проект winget-pkgs — это отличный пример того, как Microsoft научилась работать с сообществом. Репозиторий живет очень активно: новые версии софта появляются там часто быстрее, чем на официальных сайтах.
Кому точно пригодится:
- Системным администраторам для настройки парка машин.
- Разработчикам для быстрой настройки окружения.
- Авторам софта, которые хотят упростить жизнь своим пользователям.
Попробовать WinGet можно прямо сейчас, просто открыв терминал и введя winget search python. Скорее всего, вы удивитесь, как много всего там уже есть.
