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

52

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)
  • O WGET vai para %ALLUSERSPROFILE%\chocolatey\bin and %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools
  • O ConsoleZ foi para %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools

Existe uma bandeira em choco list que vai me dizer para onde eles foram? ChocolateyGUI não parece fazer isso também.

Mais ou menos como o do Debian:

dpkg-query

Ou do RedHat:

rpm -ql [package-name]

Ou repoquery do YUM:

repoquery --list [package-name]

Homebrew :

brew list [package-name]
    
por antwarpes 21.07.2014 / 22:17

4 respostas

26

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

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

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

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

link

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

link

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

Em termos de ChocolateyGUI, e como o mantenedor atual desse produto, posso dizer que ele não faz nada inteligente nesta área :-). É simplesmente um wrapper em torno das ferramentas de linha de comando que o Chocolatey fornece e tem como objetivo tornar mais fácil para as pessoas que não gostam de usar a linha de comando.

    
por 22.07.2014 / 08:08
4

Se Chocolatey gerar um calço para o pacote, por ex. yourprogram.exe você pode informar o caminho para o arquivo executável pelo seguinte one-liner 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 até .bat. Nestes casos raros, esta receita não funciona.

    
por 02.03.2017 / 10:13
4

Infelizmente, não que eu saiba. Eu acredito que o diretório de instalação é determinado pelo próprio pacote. Não está definido no arquivo .nuspec e não consigo ver em lugar algum que ele esteja explicitamente definido no código-fonte Chocolatey.

Código-fonte: link

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

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

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

    
por 18.03.2016 / 15:34

Tags