52

Команда

choco list -lo

перечисляет установленные пакеты. Но как определить, где устанавливается приложение Chocolatey? До сих пор мне приходилось охотиться за ними.

Некоторые примеры:

  • NUnit переходит в Program Files (x86)
  • WGET переходит в %ALLUSERSPROFILE%\chocolatey\bin and %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools
  • ConsoleZ перешел в %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools

Есть ли в choco list флаг, который скажет мне, куда они пошли? Кажется, ChocolateyGUI тоже этого не делает.

Вроде как в Debian:

dpkg-query

Или RedHat's:

rpm -ql [package-name]

Или ответ YUM:

repoquery --list [package-name]

Доморощенный:

brew list [package-name]

4 ответа4

26

В настоящее время нет способа сделать то, что вы просите.

Каждый пакет Chocolatey уникален в том смысле, что он может быть оболочкой MSI или EXE-файла, простым извлечением сжатого архива в известное место, например, C:\tools, или модулем PowerShell, который извлекает PSModulePath, или это может быть что-то совершенно нестандартное.

Это побочный эффект экосистемы Windows, где есть несколько способов сделать одно и то же. Шоколад пытается навести порядок в этом, предоставляя механизм, по крайней мере, найти все пакеты, которые вы хотите в одном месте, но Шоколад может сделать только так много.

Если вы посмотрите на вещи совершенно по-другому, можно передать аргументы установки в пакет Chocolatey, используя следующее:

https://github.com/chocolatey/chocolatey/wiki/CommandsInstall#installarguments-optional---v09813

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

http://chocolatey.org/packages/VisualStudio2013Ultimate

Однако такой подход ограничен. Не каждый, как Мэтт, тратит время на упоминание возможных возможных аргументов установки, и извлечение аргументов установки, которые можно отправить в MSI или EXE-файл, является довольно запутанным процессом.

С точки зрения ChocolateyGUI, и, как текущий разработчик этого продукта, я могу сказать вам, что он не делает ничего умного в этой области :-). Это просто оболочка для инструментов командной строки, которые предоставляет Chocolatey, и она призвана упростить работу людям, которым не нравится использование командной строки.

4

К сожалению, не то, что я знаю. Я считаю, что каталог установки определяется самим пакетом. Он не определен в файле .nuspec, и я нигде не вижу, чтобы он был явно определен в исходном коде Chocolatey.

Исходный код: https://github.com/chocolatey/chocolatey

4

Если Chocolatey создает оболочку для пакета, например, yourprogram.exe вы можете указать путь к исполняемому файлу с помощью следующей однострочной оболочки Powershell:

(yourprogram --shimgen-noop | sls "path to executable:" ) -split "path to executable:" | % {$_.Trim() }

Это работает, только если shim - это файл .exe. Это очень распространено, хотя некоторые пакеты генерируют файлы .ps1, .cmd или даже .bat. В этих редких случаях этот рецепт не будет работать.

1
cinst notepadplusplus.install -ia "'/D=E:\SomeDirectory\npp'"

Если это был MSI, то обычно вы можете передать -ia:

INSTALLDIR=""E:\SomeDirectory\npp""

 

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