Windows Package Manager (winget): Полное руководство по установке и автоматизации
10

Windows Package Manager (winget): Полное руководство по установке и автоматизации

Автор: admin

Winget (Windows Package Manager) — это официальный менеджер пакетов от Microsoft, встроенный в Windows 10 и Windows 11. Он позволяет устанавливать, обновлять и удалять приложения через командную строку, аналогично тому, как это делают apt в Linux или brew в macOS

До появления winget администраторам и продвинутым пользователям приходилось вручную скачивать установщики с сайтов, что занимало много времени и повышало риск загрузки вредоносного ПО. Winget решает эти проблемы, предоставляя единый централизованный источник проверенных приложений

Ключевые преимущества:

  • Бесплатный и встроенный — не требует установки дополнительного ПО
  • Автоматизация — возможность создания скриптов для массовой установки
  • Безопасность — приложения загружаются из официальных источников
  • Актуальность — автоматическое обновление всех программ одной командой

Основные команды winget

Поиск и информация
Команда
Описание
Пример
winget search <запрос>
Поиск приложений в репозитории
winget search chrome
winget show
Отображение подробной информации о пакете
winget show Google.Chrome
winget list
Список установленных приложений
winget list
winget list --upgrade-available
Показать только приложения с обновлениями
winget list --upgrade-available
Установка и удаление
Команда
Описание
Пример
winget install
Установка приложения
winget install VideoLAN.VLC
winget uninstall
Удаление приложения
winget uninstall 7zip.7zip
winget upgrade
Обновление конкретного приложения
winget upgrade Microsoft.PowerToys
winget upgrade --all
Обновление всех приложений сразу
winget upgrade --all

Экспорт и импорт (восстановление окружения)

Winget позволяет экспортировать список всех установленных программ в JSON-файл и затем восстановить их на новом компьютере :

bash
# Экспорт списка программ
winget export -o C:\backup\myapps.json

# Импорт и установка всех программ из файла
winget import -i C:\backup\myapps.json
Дополнительные полезные команды
Команда
Описание
winget --info
Информация о версии winget и системных настройках
winget source list
Список настроенных репозиториев
winget pin add
Закрепить версию приложения (запретить автоматическое обновление)
winget features
Показать экспериментальные возможности
Параметры для автоматизации
Параметр
Назначение
-e, --exact
Точное совпадение ID (без поиска по подстроке)
--silent
Тихая установка без окон и запросов
--accept-package-agreements
Автоматически принять лицензионное соглашение пакета
--accept-source-agreements
Автоматически принять соглашение источника
--scope machine
Установка для всех пользователей компьютера
--disable-interactivity
Полное отключение интерактивных запросов

Джентльменский набор: скрипт массовой установки программ

Ниже представлен PowerShell-скрипт для автоматической установки лучших бесплатных программ, не требующих лицензии. Этот скрипт можно запустить на новом компьютере и забыть — всё установится автоматически.

Список программ в скрипте
Программа
Назначение
ID в winget
Google Chrome
Веб-браузер
Google.Chrome
Mozilla Firefox
Веб-браузер
Mozilla.Firefox
7-Zip
Архиватор файлов
7zip.7zip
VLC Media Player
Универсальный медиаплеер
VideoLAN.VLC
Microsoft PowerToys
Набор утилит для Windows
Microsoft.PowerToys 
Visual Studio Code
Редактор кода
Microsoft.VisualStudioCode
Git
Система контроля версий
Git.Git
OBS Studio
Запись и стриминг видео
OBSProject.OBSStudio
LibreOffice
Офисный пакет
TheDocumentFoundation.LibreOffice 
GIMP
Редактирование изображений
GIMP.GIMP
qBittorrent
Torrent-клиент
qBittorrent.qBittorrent
Discord
Голосовой и текстовый чат
Discord.Discord
Spotify
Музыкальный стриминг
Spotify.Spotify
Everything
Мгновенный поиск файлов
voidtools.Everything
LocalSend
Передача файлов между устройствами
localsend.localsend 
ShareX
Скриншоты и запись экрана
ShareX.ShareX
Zoom
Видеоконференции
Zoom.Zoom
Telegram
Мессенджер
Telegram.TelegramDesktop
WinDirStat
Анализ дискового пространства
WinDirStat.WinDirStat
KeePassXC
Менеджер паролей
KeePassXC.KeePassXC

PowerShell скрипт установки

bash
<#
.SYNOPSIS
    Джентльменский набор программ для Windows
.DESCRIPTION
    Скрипт автоматически устанавливает набор бесплатных программ через winget
.NOTES
    Запускать от имени администратора для установки в систему
#>

# Запрос прав администратора
if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
    Write-Host "Запустите PowerShell от имени администратора!" -ForegroundColor Red
    Write-Host "Нажмите любую клавишу для выхода..."
    $null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
    exit
}

# Массив приложений для установки
$apps = @(
    @{Name = "Google Chrome"; ID = "Google.Chrome"},
    @{Name = "Mozilla Firefox"; ID = "Mozilla.Firefox"},
    @{Name = "7-Zip"; ID = "7zip.7zip"},
    @{Name = "VLC Media Player"; ID = "VideoLAN.VLC"},
    @{Name = "Microsoft PowerToys"; ID = "Microsoft.PowerToys"},
    @{Name = "Visual Studio Code"; ID = "Microsoft.VisualStudioCode"},
    @{Name = "Git"; ID = "Git.Git"},
    @{Name = "OBS Studio"; ID = "OBSProject.OBSStudio"},
    @{Name = "LibreOffice"; ID = "TheDocumentFoundation.LibreOffice"},
    @{Name = "GIMP"; ID = "GIMP.GIMP"},
    @{Name = "qBittorrent"; ID = "qBittorrent.qBittorrent"},
    @{Name = "Discord"; ID = "Discord.Discord"},
    @{Name = "Spotify"; ID = "Spotify.Spotify"},
    @{Name = "Everything"; ID = "voidtools.Everything"},
    @{Name = "LocalSend"; ID = "localsend.localsend"},
    @{Name = "ShareX"; ID = "ShareX.ShareX"},
    @{Name = "Zoom"; ID = "Zoom.Zoom"},
    @{Name = "Telegram"; ID = "Telegram.TelegramDesktop"},
    @{Name = "WinDirStat"; ID = "WinDirStat.WinDirStat"},
    @{Name = "KeePassXC"; ID = "KeePassXC.KeePassXC"}
)

Write-Host "========================================" -ForegroundColor Cyan
Write-Host "   Джентльменский набор программ" -ForegroundColor White
Write-Host "   Установка через winget" -ForegroundColor White
Write-Host "========================================" -ForegroundColor Cyan
Write-Host ""

$total = $apps.Count
$current = 0
$successful = 0
$failed = @()

foreach ($app in $apps) {
    $current++
    Write-Host "[$current/$total] Установка: $($app.Name)..." -ForegroundColor Yellow
    
    try {
        winget install --id $($app.ID) -e --silent --accept-package-agreements --accept-source-agreements --disable-interactivity
        
        if ($LASTEXITCODE -eq 0) {
            Write-Host "  ✓ $($app.Name) успешно установлен" -ForegroundColor Green
            $successful++
        } else {
            Write-Host "  ✗ Ошибка при установке $($app.Name)" -ForegroundColor Red
            $failed += $($app.Name)
        }
    }
    catch {
        Write-Host "  ✗ Исключение при установке $($app.Name): $_" -ForegroundColor Red
        $failed += $($app.Name)
    }
    
    Write-Host ""
}

# Итоговый отчет
Write-Host "========================================" -ForegroundColor Cyan
Write-Host "          ОТЧЕТ ОБ УСТАНОВКЕ" -ForegroundColor White
Write-Host "========================================" -ForegroundColor Cyan
Write-Host "Успешно установлено: $successful из $total" -ForegroundColor Green

if ($failed.Count -gt 0) {
    Write-Host "`nНе удалось установить:" -ForegroundColor Red
    foreach ($app in $failed) {
        Write-Host "  - $app" -ForegroundColor Red
    }
    Write-Host "`nПроверьте подключение к интернету и повторите попытку." -ForegroundColor Yellow
}

Write-Host "`nНажмите любую клавишу для выхода..."
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

Как использовать скрипт

Сохраните скрипт в файл с расширением .ps1 (например, install-apps.ps1)

  1. Разрешите выполнение PowerShell-скриптов (еще не запускали):
    powershellSet-ExecutionPolicy RemoteSigned -Scope CurrentUser
  2. Запустите PowerShell от имени администратора (Win+X → Terminal (Admin))
  3. Перейдите в папку со скриптом и выполните:
    powershell.\install-apps.ps1

Внимание!

Можно просто скопировать содержимое в PowerShell и нажать ввод (для запуска - нажмите ПУСК и наберите powershell - нажмите запуск от имени администратора).

Быстрая установка одной строкой

Если нужно установить всего несколько программ, можно использовать однострочную команду :

bash
winget install --id Google.Chrome --id 7zip.7zip --id VideoLAN.VLC --id Microsoft.PowerToys -e --accept-package-agreements --accept-source-agreements

Заключение

Winget — это мощный инструмент, который превращает установку и обслуживание программ в Windows из рутинной задачи в автоматизированный процесс. Представленный скрипт с джентльменским набором бесплатных программ позволит вам за 15-20 минут полностью подготовить новый компьютер к работе, избавив от необходимости вручную искать и скачивать каждый установщик.

Скрипт легко модифицировать — достаточно добавить или удалить ID программ в массиве $apps. Найти ID нужной программы можно командой winget search <название>.