在 Chocolatey 中填充一个 .bat 文件

Shim a .bat file in Chocolatey

我正在尝试创建一个独立的巧克力包,其中包含一个我想填充到路径中的 .bat 文件(即我的“可执行文件”)。我的 chocolateyinstall.ps1 文件包含以下内容:

    $ErrorActionPreference = 'Stop'; # stop on all errors

    $toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"

    Install-BinFile -Name 'test.bat' -Path $toolsDir

这会在安装包时创建文件 test.bat.exe。但是当我 运行 .exe 文件时,我得到错误:

Cannot find file at '..\lib\test-pkg\tools' (C:\ProgramData\chocolatey\lib\test-pkg\tools). This usually indicates a missing or moved file.

提到的目录(C:\ProgramData\chocolatey\lib\test-pkg\tools)肯定存在并且包含test.bat文件,所以.bat文件的打包和安装成功了。因此,它看起来是垫片的问题?

通过实验,我尝试以相同的方式填充 .ps1 Powershell 脚本,并得到相同的错误消息。

我在这里错过了什么?谢谢!

问题是 -Path 参数应该有 bat 文件的完整路径,而不仅仅是 $toolsDir,所以像这样的东西会起作用:

Install-BinFile -Name 'test.bat' -Path "$toolsDir\test.bat"

令人惊讶的含义是,为了 Install-BinFile 到 运行 没有错误,shim 目标不需要存在。