所以我有这个错误:在 Windows 10 上,使用 ImageMagick 转换命令时出现“无效参数 - -fuzz”,因为 ImageMagick 在 Windows 上没有正确地位于 PATH 中。
现在的问题是,我如何以编程方式获取已安装的可执行文件路径,以便直接运行它?事实证明 chocolatey 需要付费订阅启用此功能太差劲了。那么我还能怎样实现这一点呢?
我正在使用 GitHub CI/Actions 执行此操作,因此我无法直观地查看和配置它,需要完全通过编程来找到和使用它。我该怎么做?
答案1
我在 github 操作上遇到了同样的问题。解决方案是使用refreshenv
您可能期望的方法,但有一个小警告:您必须在要使用已安装程序的同一步骤中调用它,并确保通过 调用它call
,例如:
- run: choco install -y imagemagick
- name: Build icons
shell: cmd
run: |
call refreshenv
magick ...
magick ...
如果有多个步骤想要重用 PATH 配置,则可以调用一次 refreshenv 并将其导出,如下所示:
- run: choco install -y imagemagick
- name: Set PATH
shell: cmd
run: |
call refreshenv
echo ::set-env name=PATH::%PATH%
- run: magick
- run: magick
最后,如果您对安装路径本身感兴趣,您可以采取这样的技巧:
- run: choco install -y imagemagick
- name: Extract path
id: getpath
shell: cmd
run: |
call refreshenv
for /f "delims=" %%G in ('where magick') do (
echo ::set-env name=MAGICKPATH::%%~fG
echo ::set-output name=magick::%%~fG
)
- run: echo $env:MAGICKPATH
- run: echo ${{ steps.getpath.outputs.magick }}
答案2
即使使用免费版本,您也可以设置安装目录,而不必获取它。
根据 Chocolately 的文档您可以更改安装目录...甚至在 Chocolatey 开源中。
不同的安装程序类型(例如 MSI、NSIS...)有不同的方法来接收 Chocolately 所指的“安装参数”。在免费版本中,您需要为每种安装程序类型本机指定这些参数(使用选项-ia
),而付费版本提供了一种简化的“通用”方法。