Existe uma maneira de listar pacotes Chocolatey com seu diretório de instalação?

56

O comando

choco list -lo

lista os pacotes instalados. Mas como determino onde um aplicativo Chocolatey é instalado? Até agora eu tive que caçar por eles.

Alguns exemplos:

  • NUnit vai para Program Files (x86)
  • WGET vai para %ALLUSERSPROFILE%\chocolatey\bin and %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools
  • ConsoleZ foi para %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools

Existe uma bandeira choco listque me diga onde eles foram? ChocolateyGUI também não parece fazer isso.

Mais ou menos como o Debian:

dpkg-query

Ou RedHat:

rpm -ql [package-name]

Ou a recomposição de YUM:

repoquery --list [package-name]

Homebrew :

brew list [package-name]
antwarpes
fonte

Respostas:

26

Atualmente, não há como fazer o que você está pedindo.

Cada pacote Chocolatey é único no sentido de que pode ser um invólucro em torno de um MSI ou EXE, ou pode ser uma extração simples de um arquivo compactado para um local conhecido, como C: \ tools, ou um módulo do PowerShell que extrai para PSModulePath, ou pode ser algo completamente personalizado.

Esse é um efeito colateral do ecossistema do Windows, onde existem várias maneiras de fazer a mesma coisa. O Chocolatey está tentando trazer algum tipo de ordem para isso, fornecendo um mecanismo para encontrar pelo menos todos os pacotes que você deseja em um só lugar, mas há muito o que o Chocolatey pode fazer.

Se você observar as coisas de maneira completamente diferente, é possível passar argumentos de instalação para um pacote Chocolatey usando o seguinte:

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

Isso poderia, em teoria, alterar os argumentos de instalação de um pacote Chocolatey baseado em MSI ou EXE para mudar para onde os arquivos estão instalados. Você pode ver um exemplo dessa abordagem sendo usada aqui:

http://chocolatey.org/packages/VisualStudio2013Ultimate

No entanto, essa abordagem é limitada. Nem todo mundo dedica um tempo, como Matt, para mencionar os possíveis argumentos de instalação possíveis, e é um processo complicado extrair os argumentos de instalação possíveis de serem enviados para um MSI ou EXE.

Em termos de ChocolateyGUI, e como atual mantenedor desse produto, posso dizer que ele não faz nada de inteligente nesta área :-). É simplesmente um invólucro das ferramentas de linha de comando que o Chocolatey fornece e tem como objetivo facilitar as pessoas que não gostam de usar a linha de comando.

Gary Ewan Park
fonte
2
Há solução como chocolatey gera arquivo de correção para o pacote que mantém o caminho para executável e expõe o alvo se for chamado com --shimgen-noopswitch, veja a minha resposta
maoizm
8
Quase três anos depois, ainda é a coisa que eu acho mais frustrante no choco: "instalei uma coisa. Agora ... onde está?"
Ben Collins
@BenCollins Estou assumindo que você atualizou o Chocolatey recentemente também? Agora ele informa onde instala as coisas - e já há quase um ano (desde 0.9.10). github.com/chocolatey/choco/issues/689
ferventcoder
11
"Software instalado para '$ toolsDir'" Gee, obrigado Chocolatey.
Blueben
11
Talvez armazene o log de instalação em algum diretório achocolatado e ofereça aos usuários a capacidade de recuperá-lo pelo nome do pacote ...
Marcello Romani
4

Se o Chocolatey gerar um calço para o pacote, por exemplo, yourprogram.exevocê pode informar o caminho para o arquivo executável da seguinte maneira linux do Powershell:

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

Isso funciona apenas se o shim for um arquivo .exe. Isso é muito comum, embora alguns pacotes gerem arquivos .ps1, .cmd ou mesmo .bat. Nestes casos raros, esta receita não funcionará.

maoizm
fonte
4

Infelizmente, não que eu saiba. Acredito que o diretório de instalação seja determinado pelo próprio pacote. Ele não está definido no arquivo .nuspec e não consigo ver em nenhum lugar que esteja explicitamente definido no código-fonte do Chocolatey.

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

tbenz9
fonte
Isto está correto. Analisando os documentos para a criação de um pacote, você verá que, na maioria dos pacotes, o instalador MSI criado pelo criador do software original define o caminho da instalação. Chocolatey não tem idéia de onde o MSI coloca os arquivos.
heavyd
1
cinst notepadplusplus.install -ia "'/D=E:\SomeDirectory\npp'"

Se fosse um MSI, geralmente você poderia passar -ia:

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

 

themoretheless
fonte