Открыть сервис

Менеджер пакетов winget от Microsoft

winget (Windows Package Manager) — официальная система управления пакетами (менеджер пакетов) для операционной системы Windows, разрабатываемая корпорацией Microsoft. Предназначена для автоматизации процессов поиска, установки, обновления и удаления приложений из командной строки, а также для автоматизации развертывания программного обеспечения на нескольких компьютерах. Инструмент распространяется бесплатно и поставляется в составе современных версий Windows 10 и Windows 11, а также доступен для загрузки отдельно для более ранних версий системы.

История

Разработка winget была анонсирована компанией Microsoft в мае 2020 года в рамках конференции Build. Первая публичная предварительная версия менеджера пакетов появилась в том же месяце. Выпуск инструмента стал ответом на многолетнее отсутствие в Windows встроенного механизма управления установкой стороннего программного обеспечения, аналогичного пакетным менеджерам в Unix-подобных операционных системах (таким как APT в Debian, YUM в Fedora или Homebrew в macOS).

Первоначально winget распространялся как отдельное приложение, устанавливаемое через программу предварительной оценки Windows Insider. Начиная с версии Windows 10 1809 (с обновлением от мая 2021 года) и во всех версиях Windows 11, клиент winget входит в состав операционной системы как компонент «Установщик приложений» (App Installer). Развитие проекта осуществляется в открытом репозитории на платформе GitHub, что позволяет сообществу участвовать в разработке и поддержке репозитория пакетов.

Архитектура и принцип работы

Клиентская часть

Основным компонентом winget является клиентское приложение командной строки (исполняемый файл winget.exe). Работа с менеджером осуществляется путем ввода команд в терминале Windows (PowerShell, командная строка или Windows Terminal). Клиент поддерживает набор подкоманд, среди которых: install (установка), upgrade (обновление), uninstall (удаление), search (поиск), list (список установленных), show (просмотр информации) и другие.

Репозиторий пакетов

По умолчанию winget использует общедоступный репозиторий пакетов, размещенный на GitHub (репозиторий microsoft/winget-pkgs). Каждый пакет в репозитории представлен манифестом в формате YAML, который содержит метаданные: название приложения, издателя, версию, URL-адрес установщика, контрольные суммы для проверки целостности, тип установщика (MSI, MSIX, EXE, портативная версия), язык интерфейса и другие параметры. Публикация новых версий пакетов осуществляется через систему pull-запросов, которые проверяются автоматизированными средствами и модераторами сообщества.

Источники и сторонние репозитории

Помимо основного репозитория Microsoft, winget поддерживает подключение альтернативных источников. Пользователь или администратор может добавить собственный репозиторий (например, корпоративный внутренний сервер) с помощью команды source add. Эта возможность активно используется в корпоративной среде для централизованного распространения проприетарного или внутреннего программного обеспечения.

Основные возможности

Установка и обновление

Команда winget install <идентификатор> позволяет установить приложение, автоматически загружая установщик и запуская его с параметрами тихой установки (если они поддерживаются разработчиком). Поддерживается установка конкретной версии (--version), выбор архитектуры, установка из локального файла или прямого URL-адреса. Обновление программ осуществляется командой winget upgrade, которая может обновить как одно выбранное приложение, так и все устаревшие программы сразу (winget upgrade --all).

Поиск и фильтрация

Поиск приложений выполняется командой winget search <запрос>. Результаты можно фильтровать по издателю, тегам, типу установщика, поддерживаемой архитектуре и языку. Идентификатор пакета (Package ID) является уникальным ключом для точного указания программы при установке.

Автоматизация и скрипты

winget разработан с учетом потребностей автоматизации. Он может работать в неинтерактивном режиме (флаг --silent), принимать соглашения с лицензиями автоматически (--accept-package-agreements), а также возвращать стандартные коды выхода, что позволяет использовать его в скриптах PowerShell, пакетных файлах и системах непрерывной интеграции.

Экспорт и импорт конфигурации

Функция winget export позволяет сохранить список установленных приложений в JSON-файл. Впоследствии этот файл может быть использован командой winget import для воспроизведения конфигурации на другом компьютере. Это удобно при настройке новых рабочих мест или переустановке системы.

Управление через групповые политики

Для корпоративных пользователей Microsoft предоставляет шаблоны групповых политик (ADMX), позволяющие централизованно управлять параметрами работы winget: ограничивать доступ к источникам, запрещать установку определенных приложений, настраивать параметры автоматического обновления. Интеграция с Microsoft Intune и Configuration Manager позволяет использовать winget в составе комплексных решений по управлению корпоративными устройствами.

Сравнение с другими менеджерами пакетов

В экосистеме Windows существуют и другие инструменты управления пакетами, в частности Chocolatey и Scoop. Основными отличиями winget от них являются:

  • Происхождение: winget разрабатывается и поддерживается непосредственно Microsoft, что гарантирует его долгосрочную поддержку и интеграцию с операционной системой.
  • Репозиторий: winget использует централизованный репозиторий на GitHub, управляемый сообществом при участии Microsoft. Chocolatey использует собственную коммерческую платформу с платной подпиской для доступа к полному каталогу.
  • Модель установки: winget преимущественно полагается на официальные установщики производителей программ, тогда как Scoop специализируется на портативных (portable) версиях приложений, не требующих прав администратора.
  • Технологии: winget поддерживает современные форматы MSIX и App Installer, а также интеграцию с Windows Sandbox и Windows Defender Application Control.

Ограничения и критика

Несмотря на активное развитие, winget имеет ряд ограничений. Автоматическая (тихая) установка работает корректно не для всех приложений, поскольку некоторые установщики не поддерживают соответствующие флаги или требуют ручного вмешательства. В таких случаях winget может запустить установщик в интерактивном режиме, что снижает степень автоматизации.

Каталог пакетов, хотя и насчитывает тысячи наименований, не является исчерпывающим: некоторые коммерческие продукты и редкие утилиты могут отсутствовать в репозитории. Скорость добавления новых версий зависит от активности сообщества и модераторов. Кроме того, достоверность манифестов проверяется автоматизированными системами, но не исключает ошибок в контрольных суммах или URL-адресах.

Отдельные пользователи отмечают, что интерфейс командной строки winget менее удобен для начинающих пользователей по сравнению с графическими менеджерами приложений, однако это компенсируется возможностью использования графической оболочки через Windows Terminal или сторонние GUI-оболочки.

Применение

winget находит применение в нескольких ключевых сценариях:

  • Индивидуальное использование: быстрая установка и обновление популярных программ без необходимости посещать веб-сайты производителей.
  • Корпоративное развертывание: автоматизация установки стандартного набора ПО на новые компьютеры сотрудников, поддержание актуальности версий.
  • DevOps и CI/CD: установка необходимого инструментария в сборочных агентах и контейнерах Windows.
  • Образование и тестирование: быстрое создание воспроизводимых сред с заданным набором программного обеспечения.

Интересные факты

  • Исходный код клиента winget доступен на GitHub под лицензией MIT, что позволяет сторонним разработчикам изучать его внутреннее устройство и вносить предложения по улучшению.
  • В 2023 году Microsoft объявила о поддержке winget в Windows Package Manager Service, что позволило выполнять установку пакетов с повышенными привилегиями через фоновую службу.
  • Существуют сторонние графические интерфейсы для winget, например, WingetUI, предоставляющие пользователю удобное окно для поиска и установки приложений без использования командной строки.

Источники

  • Официальная документация Microsoft Learn: «Windows Package Manager (winget)».
  • Репозиторий GitHub: microsoft/winget-cli.
  • Репозиторий GitHub: microsoft/winget-pkgs.
  • Блог Windows Developer: анонс Windows Package Manager, май 2020 года.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →