首页 > 解决方案 > 根据包名在powershell中调用巧克力包

问题描述

我最近设置了一台新机器并安装/启用了巧克力。据我所知,我能够根据包名称通过 powershell 调用包。例如,如果我想安装 mongodb,我曾经键入- 并且只需在 powershell 控制台中choco install mongodb键入即可调用 mongo 客户端。mongo有没有办法查看某些东西是否绑定到特定的垫片?还是有启用它的选项?

标签: powershellchocolatey

解决方案


我认为没有办法将包与 shim 匹配,但您可以检查 shim 指向的可执行文件,以及有关它的一般信息以及运行 shim 会发生什么:

shimname.exe --shimgen-noop

我尝试制作一个命令来检查$env:ChocolateyInstall\bin目录中的所有垫片,但不能保证那里的可执行文件会有垫片。我也尝试过滤掉已知的 Chocolatey 可执行文件,但是某些包(如putty)将其真正的可执行文件直接放在bin文件夹中,并且不会像您期望的那样响应 shim 参数。


查看Install-BinFilecmdlet,Chocolatey 似乎根本没有提供跟踪 shim 的方法,因为它自己甚至不这样做。我认为它使用相同的逻辑在包卸载时跟踪自动生成的垫片,但是任何显式创建的垫片Install-BinFile也需要Uninstall-BinFile在相关chocolateyUninstall.ps1脚本中调用,否则在卸载包时不会删除垫片。

如果没有为潜在的自动 shim 名称爬取$env:ChocolateyInstall\lib\packageName目录,或者没有为显式 shim 爬取chocolateyInstall.ps1/chocolateyUninstall.ps1脚本,您将无法将 shim 与包匹配。


推荐阅读