Philip Wiki

Персональный wiki-сайт

Инструменты пользователя

Инструменты сайта


docs:blog:2021:03:winget

Winget. Продолжение

В продолжение первого поста про winget и в контексте предыдущего про песочницу Windows 10, решил немного подробнее описать процесс настройки этой утилиты. С учетом всех последних изменений в ней.

Что ещё за winget?

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

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

На данный момент всё ещё отсутствует удобный способ установки и обновления этой утилиты, поэтому пришлось придумать небольшие костыли, чтобы его автоматизировать ( выполняется не в core-версии PowerShell):

  • ПРЕДУПРЕЖДЕНИЕ На данный момент способ указанный ниже перестал работать в песочнице Windows 11. Из решений которые нашел, правка образа для песочницы, но этот вариант «из пушки по воробьям».
  • НОВОЕ Способ ниже снова стал работать у меня в песочнице!
# если это первая установка и в системе отсутствует магазин приложений (MS Store), возможно потребуется выполнить
Invoke-WebRequest 'https://aka.ms/Microsoft.VCLibs.x64.14.00.Desktop.appx' -OutFile "$env:TEMP\VClibs.appx"
Add-AppxPackage "$env:TEMP\VClibs.appx"
 
# собственно установка/обновление. скачиваем крайнюю версию во временный каталог и устанавливаем
$winget = (Invoke-RestMethod -Uri "https://api.github.com/repos/microsoft/winget-cli/releases/latest").assets.browser_download_url | Where-Object { $_ -match "msixbundle" }
Invoke-WebRequest -Uri $winget -OutFile "$env:TEMP\$($winget | Split-Path -Leaf)"
Add-AppxPackage "$env:TEMP\$($winget | Split-Path -Leaf)"

Включение экспериментальных функций

В консоли выполняем:

winget settings

Что откроет редактор конфигурации утилиты. Если ранее ничего не настраивали, то просто заменяем содержание следующим (Включаем экспериментальные функции просмотра, обновления и удаления приложений. А также подключаем как источник приложений магазин Windows):

{
  "$schema": "https://aka.ms/winget-settings.schema.json",
  "experimentalFeatures": {
    "uninstall": true,
    "upgrade": true,
    "list": true,
    "experimentalMSStore": true
  }
}

Подробнее про файл настроек

Включаем прогнозирование ввода

Будем считать, что у вас уже есть профиль PowerShell 1), поэтому откройте его на редактирование (работая в консоли с административными правами) следующей командой:

notepad $PROFILE

И добавьте в конец следующее:

Register-ArgumentCompleter -Native -CommandName winget -ScriptBlock {
    param($wordToComplete, $commandAst, $cursorPosition)
        [Console]::InputEncoding = [Console]::OutputEncoding = $OutputEncoding = [System.Text.Utf8Encoding]::new()
        $Local:word = $wordToComplete.Replace('"', '""')
        $Local:ast = $commandAst.ToString().Replace('"', '""')
        winget complete --word="$Local:word" --commandline "$Local:ast" --position $cursorPosition | ForEach-Object {
            [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
        }
}

Подробнее

Теперь перезапустите консоль.

1)
Если нет, выполните New-Item $PROFILE -Force
Только авторизованные участники могут оставлять комментарии.
docs/blog/2021/03/winget.txt · Последнее изменение: 26.11.2022 15:14 — philip

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki