Winget: шпаргалка IT-инженера по пакетному менеджеру Windows

Winget шпаргалка: установка, команды и автоматизация пакетного менеджера Windows. Как установить winget на Windows 10/11, команды winget install, search, upgrade. Скрипты для автоматической установки программ, экспорт/импорт списков, интеграция с PowerShell. Практическое руководство для IT-инженеров и системных администраторов

Ну раз вы тут, значит уже в теме: winget — это то, чего Windows ждала 30 лет. Пакетный менеджер от Microsoft, который устанавливает программы одной командой. Без Next-Next-Finish, без «скачать с официального сайта», без панелей инструментов и рекламы. Запустили PowerShell, написали winget install 7zip — готово.

Эта шпаргалка — для тех, кто устал кликать мышкой, хочет автоматизировать установку софта, развернуть новый компьютер за 10 минут одним скриптом и наконец почувствовать себя на Windows как на Linux с apt/dnf.

Концепция: почему winget — это революция для Windows

Как это было раньше (до winget)

Сценарий 1: Настройка нового компьютера

  1. Открываем браузер (Edge, потому что больше ничего нет)
  2. Гуглим «скачать Chrome»
  3. Кликаем на первую ссылку (надеемся, что это не реклама)
  4. Скачиваем ChromeSetup.exe
  5. Запускаем, жмём Next-Next-Install
  6. Гуглим «скачать 7-Zip»
  7. Повторяем п. 3-5
  8. Гуглим «скачать Visual Studio Code»
  9. Повторяем п. 3-5
  10. …40 программ спустя…
  11. Прошло 3 часа, кофе закончился, желание жить — тоже

Сценарий 2: На работе попросили поставить программу

  1. «Поставь мне Python»
  2. Идёте на python.org
  3. Там 15 версий, непонятно какую качать
  4. Скачиваете installer
  5. Забываете поставить галку «Add Python to PATH»
  6. Переустанавливаете
  7. Python не работает, потому что нужна другая версия
  8. Удаляете через Control Panel
  9. Повторяете п. 1-6 с правильной версией
  10. Проклинаете всё на свете

Как это с winget (сейчас)

Сценарий 1 (новый): Настройка компьютера

  1. Открываете PowerShell
  2. Пишете скрипт (один раз навсегда):
    
    winget install Google.Chrome
    winget install 7zip.7zip
    winget install Microsoft.VisualStudioCode
    winget install Git.Git
    winget install VideoLAN.VLC
    # ...и так далее
    
  3. Запускаете скрипт
  4. Идёте пить кофе
  5. Возвращаетесь — всё установлено
  6. Время: 10 минут (из них 9 минут — на кофе)

Сценарий 2 (новый): Установка программы


# "Поставь мне Python"
winget install Python.Python.3.12

# Готово. Python установлен, в PATH добавлен, версия правильная.

Почему это круто?

1. Прощай, Next-Next-Finish

Помните эти установщики, где нужно 15 раз нажать Next? Где нужно снять галку «Установить панель инструментов Mail.ru? Где в середине процесса внезапно предлагают антивирус McAfee?

Winget говорит всему этому: «Нет». Одна команда — программа установлена. Без вопросов, без рекламы, без сюрпризов.

2. Наконец-то как на Linux

Linux-админы смеялись над Windows 30 лет:


# Linux
sudo apt install nginx

# Windows (раньше)
# 1. Открыть браузер
# 2. Погуглить nginx
# 3. Найти официальный сайт
# 4. Скачать zip
# 5. Распаковать
# 6. Прочитать README
# 7. Настроить PATH вручную
# 8. Понять, что скачали не ту версию
# 9. Повторить п. 1-7

Теперь:


# Windows (с winget)
winget install nginx

Шах и мат, линуксоиды!

3. Обновления одной командой

Раньше каждая программа обновлялась по-своему:

  • Chrome обновляется сам (иногда)
  • Adobe Reader показывает popup каждый день
  • Java требует перезагрузку
  • WinRAR напоминает, что пора купить лицензию (уже 15 лет)
  • Половина программ вообще не обновляется

С winget:


winget upgrade --all

Всё. Все программы обновлены. Можно идти домой.

4. Автоматизация для ленивых (и умных)

Вы системный администратор. У вас 50 новых компьютеров. Нужно на каждый поставить стандартный набор программ.

Раньше: 3 дня кликанья мышкой, RSI (repetitive strain injury), увольнение.

С winget: Один скрипт PowerShell, GPO или Intune, запустили — пошли обедать.

5. Нет больше «а где вы это скачали?»

Помните диалог:

  • «Поставил программу, теперь компьютер тормозит»
  • «А где скачали?»
  • «Погуглил, первая ссылка»
  • «Это был сайт с рекламой и вирусами. Вы скачали не 7-Zip, а 7-Zip-Pro-Crack-2024-Free.exe»

С winget программы берутся из официального репозитория Microsoft. Никаких левых сайтов, никаких вирусов, никаких сюрпризов.

6. Поиск программ не выходя из терминала


# Нужен архиватор? Ищем:
winget search archive

# Результат:
# 7zip.7zip
# WinRAR.WinRAR
# PeaZip.PeaZip
# ...

# Выбираем, устанавливаем
winget install 7zip.7zip

Не нужно гуглить, не нужно открывать браузер. Всё в терминале, как завещал Линус Торвальдс (хотя это Windows, но детали).

Когда использовать winget

Идеально подходит для:

  • Настройка новых компьютеров — один скрипт вместо трёх часов кликанья
  • Массовое развёртывание софта — IT-отделы, rejoice!
  • Быстрая установка инструментов разработки — VSCode, Git, Python, Node.js за минуту
  • Обновление всех программ разомwinget upgrade --all раз в неделю
  • Скрипты автоматизации — PowerShell + winget = любовь
  • Когда лень искать официальный сайт — почти всегда

Может быть неудобно для:

  • Программ, которых нет в репозитории — редко, но бывает
  • Когда нужны специфичные настройки установки — winget ставит с дефолтными параметрами
  • Пользователям без прав администратора — winget требует админские права
  • Windows 7/8.x — winget только для Windows 10 1809+ и Windows 11

Когда это использовать

Реальные кейсы:

  • Новый компьютер/переустановка Windows — разворачиваете софт за 10 минут
  • Рабочее место разработчика — Git, Node.js, Python, VSCode одной командой
  • Серверная установка — устанавливаете утилиты без GUI
  • Корпоративное развёртывание — массовая установка через GPO/Intune
  • Портативные утилиты — быстро поставить 7-Zip, curl, wget на сервер
  • Домашний компьютер — держите софт в актуальном состоянии

Ошибки новичков:

  • Пытаются установить winget на Windows 7 — не работает
  • Не запускают PowerShell от администратора — ошибки прав доступа
  • Ищут программу по неправильному имени — используйте winget search
  • Забывают обновлять сам winget — старые версии могут глючить
  • Не знают про winget upgrade --all — обновляют программы вручную
  • Паникуют, когда видят --accept-source-agreements — это нормально

Быстрый старт

Проверка наличия winget (Windows 11 / Windows 10 свежие):


# Открываем PowerShell (Win+X → Windows PowerShell)
winget --version

# Вывод:
# v1.7.10582

Если команда найдена — winget уже установлен. Если нет — см. раздел «Установка winget».

Установка первой программы:


# Устанавливаем 7-Zip
winget install 7zip.7zip

# ИЛИ просто
winget install 7zip

Поиск программы:


# Ищем Chrome
winget search chrome

# Устанавливаем найденное
winget install Google.Chrome

Обновление всех программ:


# Список доступных обновлений
winget upgrade

# Обновить всё
winget upgrade --all

Удаление программы:


winget uninstall 7zip

Установка winget

Windows 11 — winget уже установлен

На Windows 11 winget установлен по умолчанию. Просто откройте PowerShell и используйте.


winget --version

Windows 10 — установка через Microsoft Store

Автоматическая установка (рекомендуется):

  1. Открываем Microsoft Store
  2. Ищем «App Installer»
  3. Устанавливаем/обновляем
  4. Перезапускаем PowerShell
  5. Проверяем: winget --version

Требования:

  • Windows 10 версия 1809 (build 17763) или новее
  • Microsoft Store должен быть доступен
  • App Installer установлен

Windows 10 — установка вручную (без Microsoft Store)

Способ 1: Скачать установщик напрямую

  1. Идём на GitHub: https://github.com/microsoft/winget-cli/releases
  2. Скачиваем последний Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle
  3. Запускаем, устанавливаем
  4. Перезапускаем PowerShell

Способ 2: Через PowerShell (скрипт установки)


# Запускаем PowerShell от администратора

# Скачиваем установщик
$progressPreference = 'silentlyContinue'
Invoke-WebRequest -Uri https://aka.ms/getwinget -OutFile $env:TEMP\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle

# Устанавливаем
Add-AppxPackage -Path $env:TEMP\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle

# Проверяем
winget --version

Обновление winget


# Способ 1: Через Microsoft Store
# Открываем Store → Library → Updates → Update All

# Способ 2: Через winget (да, winget обновляет сам себя)
winget upgrade Microsoft.AppInstaller

# ИЛИ обновить всё включая winget
winget upgrade --all

Проверка версии и обновлений


# Текущая версия
winget --version

# Информация о winget
winget --info

# Вывод:
# Windows Package Manager v1.7.10582
# Copyright (c) Microsoft Corporation. All rights reserved.
# ...

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

winget search — поиск программ


# Поиск по названию
winget search chrome

# Поиск точного совпадения
winget search --name "Google Chrome"

# Поиск по ID
winget search --id Google.Chrome

# Поиск по тегам
winget search --tag browser

# Поиск всех программ от издателя
winget search --publisher Microsoft

# Точное совпадение (без частичного поиска)
winget search --exact chrome

Вывод поиска:


Name                 Id              Version  Source
-------------------------------------------------------
Google Chrome        Google.Chrome   121.0... winget
Chromium             Hibbiki.Chromium 121.0  winget
Microsoft Edge       Microsoft.Edge   121.0  winget

winget install — установка программ


# Установка по имени
winget install Chrome

# Установка по ID (рекомендуется)
winget install Google.Chrome

# Установка конкретной версии
winget install Google.Chrome --version 120.0.6099.130

# Установка с принятием соглашений (без интерактивности)
winget install 7zip --accept-package-agreements --accept-source-agreements

# Интерактивная установка (откроется GUI installer)
winget install Google.Chrome --interactive

# Тихая установка (без вопросов)
winget install 7zip --silent

# Установка из конкретного источника
winget install Google.Chrome --source winget

# Установка с override параметрами
winget install Python.Python.3.12 --override '/quiet PrependPath=1'

winget upgrade — обновление программ


# Список доступных обновлений
winget upgrade

# Обновить конкретную программу
winget upgrade Google.Chrome

# Обновить всё
winget upgrade --all

# Обновить всё с принятием соглашений (для автоматизации)
winget upgrade --all --accept-package-agreements --accept-source-agreements

# Обновить всё, включая программы с неизвестными версиями
winget upgrade --all --include-unknown

# Обновить только конкретный источник
winget upgrade --all --source winget

winget uninstall — удаление программ


# Удаление по имени
winget uninstall Chrome

# Удаление по ID
winget uninstall Google.Chrome

# Тихое удаление
winget uninstall 7zip --silent

# Интерактивное удаление (откроется стандартный uninstaller)
winget uninstall Google.Chrome --interactive

winget list — список установленных программ


# Все установленные программы
winget list

# Поиск установленной программы
winget list chrome

# Список программ, установленных через winget
winget list --source winget

# Только программы с доступными обновлениями
winget list --upgrade-available

winget show — информация о программе


# Подробная информация
winget show Google.Chrome

# Вывод:
# Found Google Chrome [Google.Chrome]
# Version: 121.0.6167.185
# Publisher: Google LLC
# Description: A fast, secure, and free web browser...
# Homepage: https://www.google.com/chrome/
# License: Proprietary
# ...

winget source — управление источниками


# Список источников
winget source list

# Обновить источники (аналог apt update)
winget source update

# Сброс источников (если что-то сломалось)
winget source reset

# Добавить кастомный источник (для корпоративных репозиториев)
winget source add --name "CompanyRepo" --arg "https://repo.company.com" --type "Microsoft.Rest"

# Удалить источник
winget source remove --name "CompanyRepo"

winget export / import — экспорт/импорт списка программ


# Экспорт списка установленных программ в JSON
winget export --output apps.json

# Импорт (установка) программ из JSON
winget import --import-file apps.json

# Импорт с принятием соглашений (для автоматизации)
winget import --import-file apps.json --accept-package-agreements --accept-source-agreements

# Игнорировать недоступные программы
winget import --import-file apps.json --ignore-unavailable

# Игнорировать версии (устанавливать последние)
winget import --import-file apps.json --ignore-versions

Пример apps.json:


{
  "$schema": "https://aka.ms/winget-packages.schema.2.0.json",
  "Sources": [
    {
      "Packages": [
        {
          "PackageIdentifier": "Google.Chrome"
        },
        {
          "PackageIdentifier": "7zip.7zip"
        },
        {
          "PackageIdentifier": "Microsoft.VisualStudioCode"
        }
      ],
      "SourceDetails": {
        "Name": "winget"
      }
    }
  ]
}

Популярные программы для установки через winget

Браузеры


# Google Chrome
winget install Google.Chrome

# Mozilla Firefox
winget install Mozilla.Firefox

# Microsoft Edge (обычно уже установлен)
winget install Microsoft.Edge

# Brave
winget install Brave.Brave

# Opera
winget install Opera.Opera

# Vivaldi
winget install VivaldiTechnologies.Vivaldi

Инструменты разработки


# Visual Studio Code
winget install Microsoft.VisualStudioCode

# Git
winget install Git.Git

# Python 3.12
winget install Python.Python.3.12

# Node.js LTS
winget install OpenJS.NodeJS.LTS

# Node.js Current
winget install OpenJS.NodeJS

# Docker Desktop
winget install Docker.DockerDesktop

# Postman
winget install Postman.Postman

# DBeaver (SQL клиент)
winget install dbeaver.dbeaver

# Notepad++
winget install Notepad++.Notepad++

# Sublime Text
winget install SublimeHQ.SublimeText.4

# IntelliJ IDEA Community
winget install JetBrains.IntelliJIDEA.Community

# Visual Studio 2022 Community
winget install Microsoft.VisualStudio.2022.Community

# Android Studio
winget install Google.AndroidStudio

# JDK (OpenJDK)
winget install Microsoft.OpenJDK.17

Утилиты и инструменты


# 7-Zip
winget install 7zip.7zip

# WinRAR
winget install RARLab.WinRAR

# Everything (поиск файлов)
winget install voidtools.Everything

# PowerToys (утилиты Microsoft)
winget install Microsoft.PowerToys

# ShareX (скриншоты)
winget install ShareX.ShareX

# Greenshot (скриншоты)
winget install Greenshot.Greenshot

# Sysinternals Suite
winget install Microsoft.Sysinternals.Suite

# Process Explorer
winget install Microsoft.Sysinternals.ProcessExplorer

# CPU-Z
winget install CPUID.CPU-Z

# GPU-Z
winget install TechPowerUp.GPU-Z

# CrystalDiskInfo (состояние дисков)
winget install CrystalDewWorld.CrystalDiskInfo

# Rufus (создание загрузочных USB)
winget install Rufus.Rufus

# Ventoy (мультизагрузочный USB)
winget install Ventoy.Ventoy

# Balena Etcher
winget install Balena.Etcher

# WinSCP
winget install WinSCP.WinSCP

# PuTTY
winget install PuTTY.PuTTY

# FileZilla
winget install TimKosse.FileZilla.Client

# KeePass (менеджер паролей)
winget install KeePassXCTeam.KeePassXC

# Bitwarden
winget install Bitwarden.Bitwarden

# 1Password
winget install AgileBits.1Password

Мультимедиа


# VLC Media Player
winget install VideoLAN.VLC

# Spotify
winget install Spotify.Spotify

# AIMP (аудиоплеер)
winget install AIMP.AIMP

# OBS Studio (стриминг)
winget install OBSProject.OBSStudio

# Audacity
winget install Audacity.Audacity

# GIMP
winget install GIMP.GIMP

# Inkscape
winget install Inkscape.Inkscape

# Blender
winget install BlenderFoundation.Blender

# HandBrake (конвертер видео)
winget install HandBrake.HandBrake

# FFmpeg
winget install Gyan.FFmpeg

Коммуникация


# Discord
winget install Discord.Discord

# Telegram
winget install Telegram.TelegramDesktop

# Slack
winget install SlackTechnologies.Slack

# Zoom
winget install Zoom.Zoom

# Microsoft Teams
winget install Microsoft.Teams

# Skype
winget install Microsoft.Skype

# WhatsApp
winget install WhatsApp.WhatsApp

Офисные программы


# LibreOffice
winget install TheDocumentFoundation.LibreOffice

# Adobe Acrobat Reader
winget install Adobe.Acrobat.Reader.64-bit

# Foxit PDF Reader
winget install Foxit.FoxitReader

# Sumatra PDF
winget install SumatraPDF.SumatraPDF

# Notion
winget install Notion.Notion

# Obsidian
winget install Obsidian.Obsidian

Системные утилиты


# Windows Terminal
winget install Microsoft.WindowsTerminal

# PowerShell 7
winget install Microsoft.PowerShell

# Oh My Posh (кастомизация терминала)
winget install JanDeDobbeleer.OhMyPosh

# Chocolatey (альтернативный пакетный менеджер)
winget install Chocolatey.Chocolatey

# NSSM (Non-Sucking Service Manager)
winget install NSSM.NSSM

# Wireshark
winget install WiresharkFoundation.Wireshark

# Nmap
winget install Insecure.Nmap

# Angry IP Scanner
winget install angryziber.AngryIPScanner

# TeamViewer
winget install TeamViewer.TeamViewer

# AnyDesk
winget install AnyDeskSoftwareGmbH.AnyDesk

Продвинутые техники и автоматизация

Скрипт установки софта на новый компьютер


# install-essentials.ps1
# Скрипт установки базового набора программ

# Браузер
winget install Google.Chrome --accept-package-agreements --accept-source-agreements

# Инструменты разработки
winget install Microsoft.VisualStudioCode --silent
winget install Git.Git --silent
winget install Python.Python.3.12 --silent
winget install OpenJS.NodeJS.LTS --silent

# Утилиты
winget install 7zip.7zip --silent
winget install Microsoft.PowerToys --silent
winget install voidtools.Everything --silent

# Мультимедиа
winget install VideoLAN.VLC --silent
winget install Spotify.Spotify --silent

# Коммуникация
winget install Discord.Discord --silent
winget install Telegram.TelegramDesktop --silent

# Системное
winget install Microsoft.WindowsTerminal --silent
winget install Microsoft.PowerShell --silent

Write-Host "Installation complete!" -ForegroundColor Green

Запуск:


# Запускаем PowerShell от администратора
.\install-essentials.ps1

Скрипт обновления всех программ


# update-all.ps1
# Обновление всех программ через winget

Write-Host "Checking for updates..." -ForegroundColor Yellow

# Обновляем источники
winget source update

# Показываем список обновлений
winget upgrade

# Обновляем всё
winget upgrade --all --accept-package-agreements --accept-source-agreements --include-unknown

Write-Host "All updates installed!" -ForegroundColor Green

Добавляем в Task Scheduler для автоматического запуска раз в неделю:


# Создаём задачу в планировщике
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\Scripts\update-all.ps1"
$trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Sunday -At 3am
$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
Register-ScheduledTask -TaskName "Winget Auto Update" -Action $action -Trigger $trigger -Principal $principal

Условная установка (проверка перед установкой)


# Устанавливаем только если программа ещё не установлена

$apps = @(
    "Google.Chrome",
    "7zip.7zip",
    "Microsoft.VisualStudioCode"
)

foreach ($app in $apps) {
    $installed = winget list --id $app --exact
    
    if ($installed -like "*No installed package found*") {
        Write-Host "Installing $app..." -ForegroundColor Yellow
        winget install $app --silent --accept-package-agreements --accept-source-agreements
    } else {
        Write-Host "$app already installed" -ForegroundColor Green
    }
}

Экспорт и восстановление конфигурации


# 1. На старом компьютере — экспортируем список
winget export --output "C:\Backup\my-apps.json"

# 2. Копируем my-apps.json на новый компьютер

# 3. На новом компьютере — импортируем
winget import --import-file "C:\Backup\my-apps.json" --accept-package-agreements --accept-source-agreements --ignore-unavailable

Интеграция с PowerShell Profile

Добавляем алиасы и функции в PowerShell profile:


# Открываем профиль
notepad $PROFILE

# Если файл не существует:
New-Item -Path $PROFILE -Type File -Force
notepad $PROFILE

Добавляем:


# Алиасы для winget
function wg-search { winget search $args }
function wg-install { winget install $args --accept-package-agreements --accept-source-agreements }
function wg-update { winget upgrade --all --accept-package-agreements --accept-source-agreements }
function wg-list { winget list $args }

Set-Alias -Name wgs -Value wg-search
Set-Alias -Name wgi -Value wg-install
Set-Alias -Name wgu -Value wg-update
Set-Alias -Name wgl -Value wg-list

Теперь можно использовать короткие команды:


wgs chrome      # winget search chrome
wgi 7zip        # winget install 7zip
wgu             # winget upgrade --all
wgl             # winget list

Скрипт удаления bloatware


# remove-bloatware.ps1
# Удаление ненужных предустановленных приложений Windows

$bloatware = @(
    "Microsoft.BingWeather",
    "Microsoft.GetHelp",
    "Microsoft.Getstarted",
    "Microsoft.MicrosoftOfficeHub",
    "Microsoft.MicrosoftSolitaireCollection",
    "Microsoft.People",
    "Microsoft.WindowsFeedbackHub",
    "Microsoft.Xbox.TCUI",
    "Microsoft.XboxApp",
    "Microsoft.XboxGameOverlay",
    "Microsoft.XboxGamingOverlay",
    "Microsoft.XboxIdentityProvider",
    "Microsoft.XboxSpeechToTextOverlay",
    "Microsoft.ZuneMusic",
    "Microsoft.ZuneVideo"
)

foreach ($app in $bloatware) {
    Write-Host "Removing $app..." -ForegroundColor Yellow
    winget uninstall $app --silent
    Get-AppxPackage $app -AllUsers | Remove-AppxPackage
}

Write-Host "Bloatware removed!" -ForegroundColor Green

Массовая установка для разработчиков


# dev-setup.ps1
# Полная настройка окружения разработчика

$devTools = @{
    "Editors" = @(
        "Microsoft.VisualStudioCode",
        "Notepad++.Notepad++",
        "JetBrains.IntelliJIDEA.Community"
    )
    "Version Control" = @(
        "Git.Git",
        "GitHub.GitHubDesktop",
        "TortoiseGit.TortoiseGit"
    )
    "Languages" = @(
        "Python.Python.3.12",
        "OpenJS.NodeJS.LTS",
        "Microsoft.OpenJDK.17",
        "GoLang.Go"
    )
    "Containers" = @(
        "Docker.DockerDesktop",
        "Kubernetes.kubectl"
    )
    "Database Tools" = @(
        "dbeaver.dbeaver",
        "PostgreSQL.PostgreSQL.15"
    )
    "API Tools" = @(
        "Postman.Postman",
        "Insomnia.Insomnia"
    )
    "Terminal" = @(
        "Microsoft.WindowsTerminal",
        "Microsoft.PowerShell",
        "JanDeDobbeleer.OhMyPosh"
    )
}

foreach ($category in $devTools.Keys) {
    Write-Host "`n=== Installing $category ===" -ForegroundColor Cyan
    
    foreach ($app in $devTools[$category]) {
        Write-Host "Installing $app..." -ForegroundColor Yellow
        winget install $app --silent --accept-package-agreements --accept-source-agreements
    }
}

Write-Host "`nDevelopment environment ready!" -ForegroundColor Green

Интеграция с корпоративной средой

Развёртывание через GPO (Group Policy)

Создание скрипта запуска:


# company-software.ps1
# Скрипт для GPO

$companyApps = @(
    "Google.Chrome",
    "Adobe.Acrobat.Reader.64-bit",
    "Microsoft.Teams",
    "7zip.7zip"
)

foreach ($app in $companyApps) {
    $installed = winget list --id $app --exact 2>&1
    
    if ($installed -like "*No installed package found*") {
        winget install $app --silent --accept-package-agreements --accept-source-agreements
    }
}

Настройка GPO:

  1. Открываем Group Policy Management
  2. Создаём новую GPO или редактируем существующую
  3. Computer Configuration → Policies → Windows Settings → Scripts → Startup
  4. Добавляем PowerShell скрипт
  5. Применяем к нужным OU

Интеграция с Microsoft Intune

Создание Win32 приложения для установки через winget:

  1. Создаём PowerShell скрипт установки
  2. Конвертируем в .intunewin формат
  3. Загружаем в Intune
  4. Назначаем на группы пользователей/устройств

Пример скрипта для Intune:


# install.ps1
$app = "Google.Chrome"
winget install $app --silent --accept-package-agreements --accept-source-agreements
exit 0

# detect.ps1
$app = "Google.Chrome"
$installed = winget list --id $app --exact 2>&1
if ($installed -notlike "*No installed package found*") {
    Write-Output "Installed"
    exit 0
} else {
    exit 1
}

Корпоративный репозиторий winget

Создание собственного источника пакетов для внутреннего использования:

  1. Настраиваем REST API сервер
  2. Добавляем источник в winget:
    
    winget source add --name "CompanyApps" --arg "https://apps.company.com" --type "Microsoft.Rest"
    
  3. Устанавливаем из корпоративного репозитория:
    
    winget install CompanyApp --source CompanyApps
    

Частые проблемы и решения

Ошибка: «winget is not recognized»

Причина: winget не установлен или PATH не настроен.

Решение:


# Проверяем наличие App Installer
Get-AppxPackage Microsoft.DesktopAppInstaller

# Если нет — устанавливаем через Microsoft Store
# ИЛИ скачиваем с GitHub (см. раздел "Установка winget")

# Перезапускаем PowerShell после установки

Ошибка: «Failed in attempting to update source: winget»

Причина: Проблемы с источниками winget.

Решение:


# Сбрасываем источники
winget source reset --force

# Обновляем источники
winget source update

# Если не помогло — переустанавливаем App Installer

Ошибка: «This application requires administrator privileges»

Решение:

  1. Запускаем PowerShell от администратора: Win+X → Windows PowerShell (Admin)
  2. Выполняем команду winget

Ошибка: «No applicable installer was found»

Причины:

Решение:


# Проверяем информацию о программе
winget show PROGRAM_ID

# Пробуем установить интерактивно (откроет GUI installer)
winget install PROGRAM_ID --interactive

Ошибка: Программа установилась, но не работает

Причина: PATH не обновлён в текущей сессии.

Решение:


# Перезапускаем PowerShell

# ИЛИ обновляем PATH вручную
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")

Ошибка: «Multiple installed packages found»

Причина: Установлено несколько версий программы.

Решение:


# Список всех версий
winget list PROGRAM_NAME

# Удаляем конкретную версию по ID
winget uninstall --id EXACT_PROGRAM_ID

# ИЛИ используем точный ID при установке
winget install --id EXACT_PROGRAM_ID

Winget медленно работает

Решение:


# Очищаем кеш
winget source reset --force

# Отключаем прогресс-бар (быстрее для скриптов)
$ProgressPreference = 'SilentlyContinue'
winget install APP_ID

Полезные хаки и трюки

Быстрая установка без подтверждений


# Создаём функцию для быстрой установки
function Quick-Install {
    param($app)
    winget install $app --silent --accept-package-agreements --accept-source-agreements
}

# Использование
Quick-Install Google.Chrome
Quick-Install 7zip

Поиск всех программ от издателя


# Все программы Microsoft
winget search --publisher Microsoft

# Все программы Google
winget search --publisher Google

Установка нескольких программ одной командой


# Через цикл
@("Google.Chrome", "7zip.7zip", "Microsoft.VisualStudioCode") | ForEach-Object {
    winget install $_ --silent --accept-package-agreements --accept-source-agreements
}

# ИЛИ через функцию
function Install-Multiple {
    param([string[]]$apps)
    foreach ($app in $apps) {
        winget install $app --silent --accept-package-agreements --accept-source-agreements
    }
}

Install-Multiple -apps "Google.Chrome","7zip","Git.Git"

Проверка доступности программы перед установкой


function Test-WingetPackage {
    param($PackageId)
    
    $result = winget search --id $PackageId --exact
    
    if ($result -like "*No package found*") {
        Write-Host "Package $PackageId not found in winget" -ForegroundColor Red
        return $false
    } else {
        Write-Host "Package $PackageId found" -ForegroundColor Green
        return $true
    }
}

# Использование
if (Test-WingetPackage "Google.Chrome") {
    winget install Google.Chrome
}

Логирование установок


# Установка с логированием
$logFile = "C:\Logs\winget-install-$(Get-Date -Format 'yyyyMMdd-HHmmss').log"

Start-Transcript -Path $logFile

winget install Google.Chrome --silent --accept-package-agreements --accept-source-agreements
winget install 7zip --silent --accept-package-agreements --accept-source-agreements

Stop-Transcript

Write-Host "Log saved to: $logFile"

Создание меню выбора программ


# install-menu.ps1
$apps = @{
    "1" = @{Name = "Google Chrome"; Id = "Google.Chrome"}
    "2" = @{Name = "Firefox"; Id = "Mozilla.Firefox"}
    "3" = @{Name = "7-Zip"; Id = "7zip.7zip"}
    "4" = @{Name = "VS Code"; Id = "Microsoft.VisualStudioCode"}
    "5" = @{Name = "VLC"; Id = "VideoLAN.VLC"}
}

Write-Host "`n=== Installation Menu ===" -ForegroundColor Cyan
foreach ($key in $apps.Keys | Sort-Object) {
    Write-Host "$key. $($apps[$key].Name)"
}
Write-Host "0. Install All"
Write-Host "Q. Quit"

$choice = Read-Host "`nEnter choice"

if ($choice -eq "0") {
    foreach ($app in $apps.Values) {
        Write-Host "Installing $($app.Name)..." -ForegroundColor Yellow
        winget install $app.Id --silent --accept-package-agreements --accept-source-agreements
    }
} elseif ($apps.ContainsKey($choice)) {
    Write-Host "Installing $($apps[$choice].Name)..." -ForegroundColor Yellow
    winget install $apps[$choice].Id --silent --accept-package-agreements --accept-source-agreements
} elseif ($choice -eq "Q") {
    exit
} else {
    Write-Host "Invalid choice" -ForegroundColor Red
}

Краткий чек-лист

Установка и проверка:

  • ☐ Winget установлен: winget --version
  • ☐ Версия актуальна: winget upgrade Microsoft.AppInstaller
  • ☐ Источники обновлены: winget source update

Базовое использование:

  • ☐ Поиск: winget search НАЗВАНИЕ
  • ☐ Установка: winget install ID
  • ☐ Список установленного: winget list
  • ☐ Обновление всего: winget upgrade --all

Автоматизация:

  • ☐ Создан скрипт установки базового софта
  • ☐ Создан скрипт обновления (можно в Task Scheduler)
  • ☐ Экспортирован список программ: winget export
  • ☐ Настроены алиасы в PowerShell Profile (опционально)

Корпоративное использование:

  • ☐ GPO скрипт создан (если применимо)
  • ☐ Intune пакеты подготовлены (если применимо)
  • ☐ Корпоративный репозиторий настроен (если нужен)

Полезные команды:

  • winget search chrome — поиск
  • winget install Google.Chrome — установка
  • winget upgrade --all — обновить всё
  • winget list — список установленного
  • winget show Google.Chrome — информация
  • winget export apps.json — экспорт списка
  • winget import apps.json — импорт списка

Резюме

Winget — это то, что превращает Windows из «кликай мышкой 3 часа» в «написал команду, попил кофе, готово». Это официальный пакетный менеджер от Microsoft, который работает из коробки на Windows 10/11 и делает установку софта такой же простой, как на Linux.

Три команды, которые изменят вашу жизнь:

  1. winget search chrome — найти программу
  2. winget install Google.Chrome — установить программу
  3. winget upgrade --all — обновить все программы разом

Зачем это нужно:

  • Экономия времени — новый компьютер настраивается за 10 минут вместо 3 часов
  • Автоматизация — один скрипт устанавливает всё необходимое
  • Безопасность — программы из официального репозитория, никаких левых сайтов
  • Обновленияwinget upgrade --all раз в неделю, и весь софт актуальный
  • Консистентность — одинаковая настройка на всех компьютерах через export/import

Что обязательно попробовать:

  • Создайте скрипт установки вашего базового набора программ — сохраните его, и при следующей переустановке Windows скажете спасибо себе прошлому
  • Добавьте winget upgrade --all в Task Scheduler — программы будут обновляться автоматически
  • Используйте winget export перед переустановкой системы — восстановите весь софт одной командой

Главное правило: Если программа есть в winget (а там уже тысячи пакетов) — устанавливайте через winget. Это быстрее, безопаснее и удобнее, чем искать на сайте, скачивать и кликать Next-Next-Finish.

Winget — это не «ещё одна утилита», это новая философия работы с Windows. Философия, где системный администратор пишет код вместо того, чтобы кликать мышкой. Где разработчик разворачивает окружение за минуту вместо часа. Где пользователь обновляет все программы одной командой вместо 40 отдельных кликов.

Добро пожаловать в будущее. Будущее, где Windows наконец-то имеет нормальный пакетный менеджер.

Сохраните статью в закладки — в следующий раз, когда коллега будет час искать «где скачать официальный Python», просто скиньте ему одну строчку: winget install Python.Python.3.12

Следующая шпаргалка: Chocolatey и Scoop — альтернативные пакетные менеджеры для Windows.

over_dude
Author: over_dude

Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх