New-Item $PROFILE -Force
Содержание
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', $_) } }
Теперь перезапустите консоль.