По умолчанию winget устанавливает программы автоматически. Сценарий определяется манифестом из репозитория winget. В нем можно указать любые ключи, которые поддерживает инсталлятор. Но поскольку манифест публикуется для широких масс, задействуется лишь тихая установка, а другие параметры не меняются.
Вы можете скорректировать установку под свои цели. Хотя возможности все равно ограничены теми, которые разработчик заложил в инсталлятор.
[+] Сегодня в программе
Интерактивная установка
С ключом -i
установка переходит в интерактивный режим, т.е. вы задаете все доступные параметры вручную. Возьмем для примера 7-zip.
winget install --id 7zip.7zip -i
В результате появится окно инсталлятора с выбором папки для установки.
Других возможностей Игорь Павлов в установщик не включил.
Переопределение ключей командной строки
Для этого в winget предусмотрено два похожих параметра:
--override
использует ваши ключи установки вместо указанных в манифесте.--custom
применяет ваши ключи установки в дополнение к указанным в манифесте. Этот параметр появился в версии 1.5, которая была в превью на момент написания статьи.
В обоих случаях ваши ключи передаются строкой, заключенной в кавычки.
--override "/S /D=D:\Software\AppName"
По большому счету разница в том, что для --override
необходимо прописывать ключ автоматической или тихой установки (в примере выше — это /S
). Для --custom
изначально форсируется автоустановка ключом из манифеста. В случае совпадения или наложения ключей инсталлятор сам разбирается с этим. Как правило, последний ключ выигрывает.
Допустим, у пакета MSI в манифесте прописан ключ /passive
для незаметной установки. Вы переопределяете поведение для отображения базового интерфейса без кнопки «Cancel».
--custom "/qb-!"
В результате установщик получает строку /passive /qb-!
. Стоящий последним ключ преобладает, и вы видите базовый интерфейс.
Все остальное зависит от типа инсталлятора и возможностей, которые предусмотрел создатель пакета.
Как определить тип инсталлятора
Смотрите командой show
.
winget show 7zip.7zip
В выводе будут примерно такие строки
Installer: Installer Type: nullsoft Installer Url: https://www.7-zip.org/a/7z2201-x64.exe
Как выяснить доступные ключи
Всегда есть параметр тихой установки. Подборка 2005 года (!) не потеряла актуальности, т.к. эти установщики до сих пор в ходу. Остальное зависит от конкретного пакета и его автора.
В общем случае алгоритм вычисления ключей такой:
- Запустите интерактивную установку и пройдите все экраны с опциями. Станет понятно, что можно настроить.
- Для каждой опции ищите ключи в документации приложения или установщика, либо в поисковиках. Запросы в помощь: silent install ProgramName, unattended install ProgramName.
Давайте рассмотрим пару примеров.
Пример: 7-zip в пакете NullSoft
Стандартные ключи NullSoft легко нагугливаются, но возможности все равно ограничены конкретным пакетом. В данном случае получится изменить лишь папку установки — это ключ /D
.
winget install --id 7zip.7zip --override "/S /D=D:\Software\7-zip"
Пример: PowerShell Core в пакете MSI
По MSI я рекомендую еще один вечнозеленый материал из руководства АУ — Использование ключей и свойств установщика Windows. 15 лет спустя даже все ссылки на документацию работают!
В гайде по установке PowerShell Core любезно описаны свойства для обновления посредством Microsoft Update и еще пять свойств с этого экрана.
Но иногда документация не раскрывает всех свойств. В этом случае их можно извлечь с помощью полезного трюка. У MSI есть ключ /lp!
, который записывает все опции установщика в журнал. Я показывал этот прием в канале Telegram.
- В PowerShell перейдите в папку с пакетом и выполните команду (с поправкой на текущую версию приложения):
.\PowerShell-7.3.2-win-x64.msi /lp! "$env:temp\prop.txt"
- На каждом экране установщика отметьте все доступные опции, иначе свойства могут не попасть в лог.
- Пройдите все экраны до последнего и отмените установку полностью — закройте инсталлятор.
- Откройте файл
prop.txt
из временной папки.
Свойства записываются заглавными буквами, поэтому сразу бросаются в глаза. На скриншоте в логе отражены семь свойств из GUI — пять с показанного экрана и два свойства Microsoft Update со следующего.
Желтым выделены свойства, которые не заданы по умолчанию. В логе их значения 0
, но при установке следует указывать 1
.
Например, стандартная установка плюс добавление двух пунктов в контекстное меню выглядит так:
winget install Microsoft.PowerShell --source winget --override "/qn ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 ADD_FILE_CONTEXT_MENU_RUNPOWERSHELL= 1"
Здесь сначала задается ключ тихой установки /qn
, а затем два свойства.
Заключение
Установка посредством winget не слишком отличается от обычной установки из консоли. Вы точно так же можете передать инсталлятору все ключи, использование которых предусмотрел разработчик приложения.
Обсуждение завершено.