4

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

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

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

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

2 ответа2

3

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

choco outdated

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

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

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

choco install paint.net

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

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 при пропуске сценариев автоматизации

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

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

1

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

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


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

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

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


Вы также можете связать шоколад с Microsoft PowerShell, аналогом Linux apt-get:OneGet, теперь переименованный в Управление пакетами. Диспетчер пакетов - это имя 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++ из шоколадной галереи:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .