在 Windows 图像的 GitHub 操作下通过 Chocolatey 安装后无法使用 ImageMagick

Unable to use ImageMagick after installed via Chocolatey under a GitHub action for a Windows image

我希望有人能帮我弄清楚如何使用 Chocolatey 在 GitHub Actions 管道中安装各种软件。问题显然与 PATH 环境变量有关。这是我安装 ImageMagick 的 YAML 文件的一部分,然后进行一个简单的调用以显示其版本作为概念证明,但是虽然相应的文件夹已经在 PATH 中,但找不到可执行文件:

- name: Install ImageMagick on Windows
  if: runner.os == 'Windows'
  run: |
    choco install -y imagemagick.app --no-progress
    Get-ChildItem -Path "${env:ProgramFiles}" | % { $_.FullName } | Select-String -Pattern "[\/\]ImageMagick[^\/\]*$" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8

- name: Test ImageMagick on Windows
  if: runner.os == 'Windows'
  run: |
    cmd /c "echo %PATH%"
    magick -version

请注意,refreshenv 无效。

倒数第二个命令显示 PATH 包含 ImageMagick 的安装目录。

最后一条命令产生以下错误:

术语 'magick' 未被识别为 cmdlet、函数、脚本文件或可执行程序的名称...

运行 cmd /c 下的最后一个命令或 PowerShell 下显式安装程序不会改善结果。

我之前还检查过 magick.exe 在该目录中,当使用完整路径显式调用时,一切正常。

当我尝试GraphicsMagick时,我遇到了同样的问题。我很确定有解决方案,因为我无法相信 Chocolatey 在 GitHub 图像的 GitHub 操作中无法使用。请告知如何使用 Chocolatey 解决此特定问题,或建议另一个包管理器用于 Windows 构建以安装 ImageMagick。

难以置信,但我不小心解决了这个问题。问题出在检索实际版本和图像质量特定安装文件夹的行中(参见 Get-ChildItem...)。

最初,我是用

过滤正确的安装文件夹
Get-ChildItem -Path "${env:ProgramFiles}" | % { $_.FullName } | Select-String -Pattern "[\/\]ImageMagick[^\/\]*$"

今天,我尝试了一个简化版本:

Get-ChildItem -Path "${env:ProgramFiles}" | Where-Object {($_.Name -Like 'ImageMagick*')} | % { $_.FullName }

我一直猜不到前一种方法会产生一个额外的空行。因此,添加了另一个 PATH 元素,即空元素。目前还不清楚为什么它会破坏东西,但后一种方法很有效。