¿Hay alguna manera de enumerar los paquetes de Chocolatey con su directorio de instalación?

56

El comando

choco list -lo

enumera los paquetes instalados. Pero, ¿cómo determino dónde se instala una aplicación Chocolatey? Hasta ahora he tenido que buscarlos.

Algunos ejemplos:

  • NUnit va a Program Files (x86)
  • WGET va a %ALLUSERSPROFILE%\chocolatey\bin and %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools
  • ConsoleZ fue a %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools

¿Hay una bandera choco listque me diga a dónde fueron? ChocolateyGUI tampoco parece hacer esto.

Algo así como el de Debian:

dpkg-query

O RedHat's:

rpm -ql [package-name]

O la repositorio de YUM:

repoquery --list [package-name]

Cerveza casera :

brew list [package-name]
Antwarpes
fuente

Respuestas:

26

Actualmente, no hay forma de hacer lo que está pidiendo.

Cada paquete de Chocolatey es único en el sentido de que podría ser una envoltura alrededor de un MSI o un EXE, o podría ser una simple extracción de un archivo comprimido a una ubicación conocida, es decir, C: \ tools, o podría ser un módulo PowerShell que extrae a PSModulePath, o podría ser algo completamente personalizado.

Este es un efecto secundario del ecosistema de Windows, donde hay múltiples formas de hacer lo mismo. Chocolatey está tratando de poner algún tipo de orden en esto al proporcionar un mecanismo para al menos encontrar todos los paquetes que desea en un solo lugar, pero solo hay mucho que Chocolatey puede hacer.

Si observa las cosas de manera completamente diferente, es posible pasar argumentos de instalación a un paquete Chocolatey usando lo siguiente:

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

Esto podría, en teoría, alterar los argumentos de instalación de un paquete Chocolatey basado en MSI o EXE para cambiar dónde están instalados los archivos. Puede ver un ejemplo de este enfoque que se utiliza aquí:

http://chocolatey.org/packages/VisualStudio2013Ultimate

Sin embargo, este enfoque es limitado. No todos se toman el tiempo como Matt para mencionar los posibles argumentos de instalación que son posibles, y es un proceso bastante complicado extraer los argumentos de instalación que se pueden enviar a un MSI o EXE.

En términos de ChocolateyGUI, y como el actual mantenedor de ese producto, puedo decirle que no hace nada inteligente en esta área :-). Es simplemente una envoltura alrededor de las herramientas de línea de comandos que proporciona Chocolatey, y tiene como objetivo hacer que sea más fácil para las personas que no les gusta usar la línea de comandos.

Parque Gary Ewan
fuente
2
Hay una solución ya que chocolatey genera un archivo shim para el paquete que mantiene la ruta al ejecutable y expone el objetivo si se llama con el --shimgen-noopinterruptor, vea mi respuesta
maoizm
8
Casi 3 años después, esto sigue siendo lo que más me frustra del choco: "instalé una cosa. Ahora ... ¿dónde está?"
Ben Collins
@BenCollins ¿Asumo que también has actualizado Chocolatey recientemente? Ahora informa dónde instala las cosas, y lo ha hecho durante casi un año (desde 0.9.10). github.com/chocolatey/choco/issues/689
ferventcoder
1
"Software instalado en '$ toolsDir'" Gee, gracias Chocolatey.
blueben
1
Tal vez almacenar el registro de instalación en un directorio de chocolate y dar a los usuarios la posibilidad de recuperarlo por nombre de paquete ...
Marcello Romani
4

Si Chocolatey genera una cuña para el paquete, por ejemplo yourprogram.exe, puede indicar la ruta al archivo ejecutable mediante la siguiente línea de Powershell:

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

Esto funciona solo si shim es un archivo .exe. Esto es muy común, aunque algunos paquetes generan archivos .ps1, .cmd o incluso .bat. En estos raros casos, esta receta no funcionará.

maoizm
fuente
4

Lamentablemente, no que yo sepa. Creo que el directorio de instalación está determinado por el paquete en sí. No está definido en el archivo .nuspec, y no puedo ver en ningún lado que esté explícitamente definido en el código fuente de Chocolatey.

Código fuente: https://github.com/chocolatey/chocolatey

tbenz9
fuente
Esto es correcto. Al mirar los documentos para crear un paquete , verá que para la mayoría de los paquetes, el instalador MSI creado por el creador del software original define la ruta de instalación. Chocolatey no tiene idea de dónde coloca MSI los archivos.
heavyd
1
cinst notepadplusplus.install -ia "'/D=E:\SomeDirectory\npp'"

Si se tratara de un MSI, entonces generalmente podría pasar -ia:

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

 

sin piedad
fuente