Как сообщить Chocolatey, что программа обновилась?

Как сообщить Chocolatey, что программа обновилась?

Я установил программу (Paint.Net) с Choco. На тот момент версия была 3.13, но Paint.Net обновился до 3.15.

Однако при запуске choco outdatedон по-прежнему считает, что версия 3.13 установлена, и хочет (пере)установить версию 3.15.

Есть ли способ синхронизировать содержимое локальной базы данных установленных пакетов choco с актуальной текущей версией?

Это бесплатная версия choco.

решение1

Эта опция есть в chocolatey, но только в платной версии. Она называется Синхронизировать команду. Вы можете найти больше информации об использовании по ссылке выше. Видео с описанием команды можно найти на YouTube.

Chocolatey также может выполнять эту синхронизацию автоматически, как описано в
Синхронизация с программами и функциями (только для лицензионных версий).


Говорят, что бесплатный менеджер программ для Chocolatey, который выполняет синхронизацию Развертывание, что вы можете попробовать.

В крайнем случае, если вы не хотите, чтобы Chocolatey обновлял определенные пакеты, игнорируя их, вы можете использовать команда choco pin.

Чтобы Chocolatey узнал об установленных приложениях без запуска скриптов установки, используйте параметр -n, --skippowershell, --skip-powershell, --skipscripts, --skip-scripts, --skip-automation-scripts (это все один и тот же переключатель). Смотрите Как установить или обновить пакет без запуска скриптов.


Вы также можете подключить chocolatey к PowerShell-аналогу Linux apt-get: OneGet, теперь переименованный в Package management. Package Manager — это название Microsoft, в то время как базовый проект с открытым исходным кодом по-прежнему называется OneGet. Затем вы сможете использовать PowerShell в качестве уникального интерфейса как для Windows, так и для chocolatey.

Вы можете прочитать об OneGet в блоге Microsoft.
Что нового в PowerShell: начало работы с OneGet в одной строке с Windows PowerShell 5.0.

OneGet — этоменеджер по работе с пакетами, и он поддерживает chocolatey как поставщика пакетов. Вы можете установить его в PowerShell, используя Команда Find-PackageProvider:

введите описание изображения здесь

Затем вы можете использовать Команда Install-PackageProvider для настройки шоколадного интерфейса (хотя, внимание, это пока прототип, так что вам придется пробовать все на ощупь):

Install-PackageProvider chocolatey -Scope CurrentUser

Вот пример PowerShell для установки Notepad++ из галереи Chocolatey:

введите описание изображения здесь

Более подробную информацию вы можете найти в следующих источниках:

решение2

Этот ответ основан на выводе следующей команды:

choco outdated

Вывод устаревшей команды choco

Как упоминалось в другом ответе, в версии Chocolatey с открытым исходным кодом нет автоматического способа обновления версии Chocolatey Package на основе версии приложения, обновляемого другим способом. В лицензионной версии Chocolatey этоособенностьдоступен.

Если вы хотите выполнить первоначальную установку приложения с помощью Chocolatey, т.е.

choco install paint.net

и затем оставить приложение обновляться, тогда лучшим советом будет закрепить пакет с помощьюприколоть команда. Это можно сделать с помощью следующей команды:

choco pin add -n="paint.net"

Это будет означать, что когда вы запустите choco upgrade allкоманду, предполагая, что вы ее используете, этот пакет больше не будет рассматриваться для обновления, даже если будет найдена новая версия. Кроме того, вывод команды choco outdatedизменится на следующий:

Вывод choco устарел после команды pin

Если вы ДЕЙСТВИТЕЛЬНО хотите удалить запись из choco outdatedотчета, но при этом хотите положиться на способность приложения обновляться самостоятельно, то вы можете выполнить следующую команду:

choco upgrade paint.net --skip-automation-scripts

Это сообщает Chocolatey о необходимости обновить пакет до текущей доступной версии, но это также предотвратит выполнение файла chocolateyInstall.ps1 (и других файлов), что будет означать, что установщик приложения никогда не будет запущен. Как показано здесь:

Вывод команды choco upgrade при пропуске скриптов автоматизации

После выполнения указанной выше команды вывод команды choco outdatedбудет следующим:

Вывод из choco устарел после обновления

Связанный контент