有没有办法列出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]

Answers:


26

当前,没有任何方法可以执行您要问的事情。

每个Chocolatey软件包在某种意义上都是唯一的,既可以是MSI或EXE的包装,也可以是将压缩存档简单提取到已知位置(例如C:\ tools),也可以是PowerShell模块提取到PSModulePath,或者可以完全自定义。

这是Windows生态系统的副作用,在Windows生态系统中,有多种方法可以执行同一操作。Chocolatey试图通过提供一种机制来至少在一个地方找到您想要的所有软件包的方式来对此进行排序,但是Chocolatey只能做很多事情。

如果您完全不同,则可以使用以下方法将安装参数传递给Chocolatey软件包:

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

从理论上讲,这可以更改基于MSI或EXE的Chocolatey软件包的安装参数,以更改文件的安装位置。您可以在此处查看使用此方法的示例:

http://chocolatey.org/packages/VisualStudio2013Ultimate

但是,这种方法是有限的。并非每个人都像Matt那样花时间提到可能的安装参数,并且提取可能发送到MSI或EXE的安装参数是一个非常复杂的过程。

就ChocolateyGUI而言,作为该产品的当前维护者,我可以告诉您,它在此领域没有任何聪明之处:-)。它只是Chocolatey提供的命令行工具的包装,旨在使不喜欢使用命令行的人更容易使用。


2
有解决方案,因为Chocolatey为软件包生成了填充文件,该文件保留了可执行文件的路径,并在通过--shimgen-noopswitch 调用时公开了目标,请参阅我的回答
maoizm

8
近三年后,这仍然是我对choco感到最沮丧的事情:“安装了一件东西。现在。。。它在哪里?”
本·柯林斯

@BenCollins我以为您最近也升级了Chocolatey?现在,它会报告在哪里安装东西-并且已经有将近一年的时间了(自0.9.10起)。github.com/chocolatey/choco/issues/689
ferventcoder '17

1
“安装到'$ toolsDir'的软件” Gee,谢谢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将文件放在何处。
重载2014年

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

如果它是MSI,那么通常您可以通过-ia

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

 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.