Чи є спосіб перерахувати пакети Chocolatey з їх каталогу встановлення?


56

Команда

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:

rpm -ql [package-name]

Або запит YUM:

repoquery --list [package-name]

Домашня мова :

brew list [package-name]

Відповіді:


26

Наразі немає способу зробити те, що ви просите.

Кожен пакет Chocolatey унікальний тим, що він може бути обгорткою навколо MSI або EXE, або це може бути просте вилучення стисненого архіву до відомого місця, тобто C: \ tools, або це може бути модуль PowerShell, який витяги до PSModulePath, або це може бути щось зовсім на замовлення.

Це побічний ефект екосистеми Windows, де існує кілька способів зробити те саме. Chocolatey намагається навести певний порядок цього, надаючи механізм принаймні знайти всі пакунки, які ви хочете, в одному місці, але Chocolatey може зробити лише стільки.

Якщо ви дивитесь на речі зовсім по-іншому, можна передати аргументи установки в пакет Chocolatey, використовуючи наступне:

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

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

http://chocolatey.org/packages/VisualStudio2013Ultimate

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

Що стосується ChocolateyGUI і як теперішній технічний супровід цього продукту, я можу вам сказати, що він не робить нічого розумного в цій галузі :-). Це просто обгортка навколо інструментів командного рядка, яку надає Chocolatey, і спрямована на те, щоб полегшити користувачам, які не люблять використовувати командний рядок.


2
Є рішення, коли шоколад генерує файл shim для пакету, який зберігає шлях до виконуваного файлу і виставляє ціль, якщо викликається з --shimgen-noopперемикачем, дивіться мою відповідь
maoizm

8
Майже через 3 роки це все-таки мені найбільше шкода в шоколаді: "встановлена ​​річ. Зараз .... де це?"
Бен Коллінз

@BenCollins Я припускаю, що ви нещодавно оновили Chocolatey? Зараз він повідомляє, де встановлює речі - і вже майже рік (з 0,9.10). github.com/chocolatey/choco/isissue/689
ferventcoder

1
"Програмне забезпечення, встановлене на" $ toolsDir "" Джи, спасибі Chocolatey.
blueben

1
Можливо, зберігання журналу інсталяції в якомусь шоколадному каталозі і дасть користувачам можливість отримати його за назвою пакету ...
Marcello Romani

4

Якщо Chocolatey генерує прошивку для пакету, наприклад, yourprogram.exeви можете вказати шлях до виконуваного файлу за допомогою наступного однофайє Powershell:

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

Це працює, лише якщо shim є .exe-файлом. Це дуже часто, хоча деякі пакети генерують файли .ps1, .cmd або навіть .bat. У цих рідкісних випадках цей рецепт не працює.


4

На жаль, не те, що я знаю. Я вважаю, що каталог встановлення визначається самим пакетом. Це не визначено у файлі .nuspec, і я ніде не можу побачити, що це чітко визначено у вихідному коді Chocolatey.

Вихідний код: https://github.com/chocolatey/chocolatey


Це правильно. Поглянувши на документи для створення пакету, ви побачите, що для більшості пакетів інсталятор MSI, створений оригінальним творцем програмного забезпечення, визначає шлях установки. Chocolatey не має уявлення, куди MSI ставить файли.
важкий

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

Якщо це був MSI, то зазвичай ви могли пройти -ia:

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

 

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.