有没有办法列出 Chocolatey 包及其安装目录?

有没有办法列出 Chocolatey 包及其安装目录?

命令

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:

repoquery --list [package-name]

自制

brew list [package-name]

答案1

目前,没有办法实现您所要求的操作。

每个 Chocolatey 包都是独一无二的,因为它可以是 MSI 或 EXE 的包装器,也可以是将压缩档案简单提取到已知位置(即 C:\tools),也可以是提取到 PSModulePath 的 PowerShell 模块,还可以是完全自定义的东西。

这是 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

我发现了一些有用的东西

C:\ProgramData\chocolatey\logs\choco.summary.log
C:\ProgramData\chocolatey\logs\chocolatey.log

当然,这些日志包含大量冗余信息(就本例而言)。但至少可以通过查看它们来更好地了解 chocolatey 到底做了什么。

答案3

这可能缺少一些结果,但帮助我找到了一些包:

(Get-Content C:\ProgramData\chocolatey\logs\choco.summary.log) -match 'Software installed to'

答案4

不幸的是,据我所知没有。我相信安装目录是由包本身决定的。它没有在 .nuspec 文件中定义,而且我在 Chocolatey 源代码中没有看到任何地方明确定义它。

源代码:https://github.com/chocolatey/chocolatey

相关内容