winget: корпоративне розгортання Windows — IT-Wiki
» » » winget: пакетний менеджер Windows — корпоративне розгортання без MSI-полювання
ВИП. №187· липень 2026· НІЖИН

Новий формат бізнесу — у цифрі, у вашій щоденній роботі.

Автоматизація обліку, власні розробки на BAS/1С, IP-телефонія та відеоспостереження. Пишемо про те, що робимо — і робимо те, про що пишемо.

Популярні

    winget: пакетний менеджер Windows — корпоративне розгортання без MSI-полювання

    IT-Wiki / Атлас команд Windows 15 квітня 2026 Переглядів: 170 Автор: Claudia

    Перед стартом
    • winget доступний у Windows 10 21H2+ / 11. На Server 2025 — з коробки. На Server 2022 — встановлюється окремо (див. нижче).
    • Для системних пакетів треба запускати з-під адміна. Для user-scope (Spotify, Discord) — звичайних прав вистачає.
    • Стандартний репозиторій — winget (curated Microsoft) і msstore (Microsoft Store). За замовчуванням обидва ввімкнені.

    Базові команди

    КомандаЩо робить
    winget search <name>Пошук пакету в репозиторіях.
    winget install <id>Встановити пакет за його ID.
    winget listПоказати все встановлене, що winget вміє бачити (включно з тим, що встановлено не через нього).
    winget upgradeПоказати, які встановлені пакети мають нові версії.
    winget upgrade --allОновити все, що є в апстрімі.
    winget uninstall <id>Видалити пакет.
    winget show <id>Показати деталі пакету (версії, publisher, розмір).
    winget export -o file.jsonЕкспортувати список встановленого у JSON.
    winget import -i file.jsonІмпортувати і встановити все з JSON.
    winget source listПерелік джерел пакетів.
    winget settingsВідкрити settings.json у редакторі.

    Сценарій 1. Разове встановлення

    Задача: встановити PowerShell 7 на свіжо-розгорнутий сервер.

    winget search PowerShell

    У виводі — ідентифікатор Microsoft.PowerShell. Встановлюємо:

    winget install Microsoft.PowerShell --silent --accept-package-agreements --accept-source-agreements

    Розбір прапорів:

    • --silent — тихе встановлення без інсталятора з віконцями (для скриптів обов'язково).
    • --accept-package-agreements — авто-згода з EULA пакету.
    • --accept-source-agreements — авто-згода з умовами джерела.
    Без --accept-* у скрипті = вічне зависання

    Якщо забути --accept-* у неінтерактивному скрипті, winget чекатиме на введення з клавіатури. У Task Scheduler це виглядає як «скрипт не завершується» — насправді він чекає «Y».

    Сценарій 2. Масове оновлення всього

    Одна команда оновить ВСЕ, що winget розпізнає:

    winget upgrade --all --silent --accept-package-agreements --accept-source-agreements

    Або більш акуратно — подивитись що буде оновлюватись, і лише потім застосувати:

    winget upgrade
    winget upgrade --all --silent --accept-package-agreements --accept-source-agreements

    Виключити конкретний пакет (наприклад, не чіпати Chrome — його оновлює сама Google):

    winget upgrade --all --exclude Google.Chrome --silent

    Сценарій 3. Масове розгортання — export/import

    Задача: налаштували робоче оточення на «еталонній» машині (15-20 застосунків). Треба те саме на 50 інших машинах.

    На еталонній:

    winget export -o C:\Deploy\apps.json

    У apps.json — JSON-маніфест з ID, версіями, джерелами всіх пакетів. Редагуйте руками, якщо потрібно:

    • Прибрати зайві пакети (винятки, UI-утиліти однієї людини).
    • Змінити версії на фіксовані, якщо треба repeatable deployment.

    На цільовій машині:

    winget import -i C:\Deploy\apps.json --accept-package-agreements --accept-source-agreements

    winget проходить список і встановлює пакети послідовно. Silent-прапор у import не потрібен — він замаючий за замовчуванням. Якщо пакет уже встановлений, winget пропустить.

    Сценарій 4. Корпоративне розгортання через Intune / GPO

    Через Intune Proactive Remediation (чи startup-скрипт у GPO) на нову машину автоматично:

    # bootstrap.ps1
    $manifest = "\\fileserver\deploy\baseline-apps.json"
    
    # Перевірити, чи winget взагалі є
    if (-not (Get-Command winget -ErrorAction SilentlyContinue)) {
        Write-Output "winget missing — needs App Installer from Microsoft Store"
        exit 1
    }
    
    winget import -i $manifest `
        --accept-package-agreements `
        --accept-source-agreements `
        --ignore-unavailable `
        --ignore-versions
    
    Write-Output "Deployment finished"

    Прапори для корпоративного розгортання:

    • --ignore-unavailable — якщо якийсь пакет більше не в репозиторії, не падати, продовжити решту.
    • --ignore-versions — брати останню доступну версію, якщо точна з маніфесту зникла.

    Сценарій 5. winget на Windows Server 2022 — додаткова настройка

    Windows Server 2022 не має winget з коробки. Встановлення:

    # PowerShell від адміна
    Invoke-WebRequest -Uri "https://github.com/microsoft/winget-cli/releases/latest/download/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle" -OutFile "C:\Temp\winget.msixbundle"
    Add-AppxPackage -Path C:\Temp\winget.msixbundle

    Залежить від інших пакетів (VCLibs, UI.Xaml). Повний порядок і скрипт — у репозиторії microsoft/winget-cli. Після встановлення — перезайдіть у сесію.

    На Server 2022 Core (без GUI)

    Без Desktop Experience MSIX-пакети не встановлюються. На Server Core winget офіційно не підтримується. Використовуйте Chocolatey або Scoop як альтернативу, або встановлюйте застосунки через MSI-пакети з msiexec /i /quiet.

    Сценарій 6. Власний репозиторій (enterprise)

    Якщо у вас закрита корпоративна мережа без доступу до Microsoft CDN, можна запустити Windows Package Manager Private Repository — self-hosted REST API з власним індексом пакетів.

    Додати джерело:

    winget source add --name CorpRepo --arg https://winget.corp.local/api --type Microsoft.Rest

    Встановлення з власного джерела:

    winget install MyApp --source CorpRepo

    Розгортання приватного репозиторію — окрема тема (див. GitHub microsoft/winget-cli-restsource). У 90% випадків цей рівень не потрібен — достатньо publicrepo з SSL-проксі для фільтрації.

    Типові пастки

    Пастка 1: winget не знаходить команду

    Найчастіше — не встановлений App Installer (він постачає winget). У Windows 10 21H2+ App Installer з коробки, але на свіжо-розгорнутій машині міг не оновитись з Microsoft Store. Перевірка:

    Get-AppxPackage Microsoft.DesktopAppInstaller | Select Name, Version

    Якщо нема — ставимо з Microsoft Store або msixbundle (див. Сценарій 5).

    Пастка 2: winget через SYSTEM-акаунт

    Під SYSTEM-акаунтом (Task Scheduler, Intune Script, GPO Startup) winget не завжди бачиться. Причина — він інстальований у user-scope через MSIX. Обхід:

    $wingetPath = (Resolve-Path "C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_*_x64__8wekyb3d8bbwe\winget.exe").Path | Select -Last 1
    & $wingetPath install Microsoft.PowerShell --silent

    У Windows Server 2025 з'явився Machine-scope winget, який працює коректно з SYSTEM — але поки мало хто на ньому.

    Пастка 3: корпоративний проксі

    winget тягне пакети через HTTPS. У закритих мережах з проксі-автентифікацією треба вказати проксі явно:

    winget settings --set network.proxy "http://proxy.corp.local:8080"

    Або через змінні середовища HTTPS_PROXY. Без цього може «зависати» при першому завантаженні манифесту.

    Коротка пам'ятка — корпоративні сценарії

    Готові рядки
    • Встановити тихо: winget install X --silent --accept-package-agreements --accept-source-agreements
    • Оновити все: winget upgrade --all --silent --accept-package-agreements --accept-source-agreements
    • Експорт встановленого: winget export -o baseline.json
    • Масовий імпорт: winget import -i baseline.json --ignore-unavailable --accept-package-agreements --accept-source-agreements
    • Детально про пакет: winget show <id>
    • Виключити зі всеоновлення: winget pin add <id>

    Пов'язане

    • ← Назад до Атласу команд Windows.
    • sc + Restart-Service (спиця) — після встановлення сервісу через winget часто треба керувати ним далі.
    • DISM + sfc (спиця) — коли winget падає на «unable to verify signature», проблема часто у Component Store.

    winget перетворює «полювання за MSI по 15 сайтах» на один YAML-рядок. Для баз нових машин — обов'язково. Для масового розгортання — відмінна альтернатива SCCM для SMB.

    Опубліковано: 15-04-2026, 19:20 · Автор: Claudia
    Вхід
    Опитування

    Якою програмою обліку ви користуєтесь?