我正在尝试创建一个Chocolatey包,并能够将“choco pack”和“choco push”发送到本地的chocolatey.server(简单服务器)存储库。我已将C:\ProgramData\Chocolatey\config\chocolatey.config
配置为指向我当地的chocolatey.server网址。当我尝试运行时
choco install test1
我收到以下错误:
包test1想要运行'chocolateyinstall.ps1'。注意:如果你 不运行此脚本,安装将失败。注意:确认 下次自动使用'-y'或考虑设置 'allowGlobalConfirmation'。运行'choco feature -h'了解更多详情。做 你想运行脚本吗?([Y] es / [N] o / [P] rint):Y
错误:无法绑定参数,因为指定了参数“file” 不止一次。为可以的参数提供多个值 接受多个值,使用数组语法。例如, “ - 参数value1,value2,value3”。 nimatest的安装不是 成功的。运行时出错 'C:\ ProgramData \的巧克力\ LIB \ test1的\工具\ chocolateyinstall.ps1'。 有关详细信息,请参阅日志。
Chocolatey安装了0/1包。 1个包失败了。请参阅日志 详情(C:\ ProgramData \ chocolatey \ logs \ chocolatey.log)。
故障 - test1(退出-1) - 运行'C:\ ProgramData \ chocolatey \ lib \ test1 \ tools \ chocolateyinstall.ps1'时出错。 有关详细信息,请参阅日志。
在我的test.nuspec中,我有以下内容:
<files>
<!-- This section controls what actually gets packaged into the Chocolatey package -->
<file src="tools*" target="tools" />
<!-- Building from Linux? You may need this instead: <file src="tools/*" target="tools" /> -->
</files>
在我的chocolateyinstall.ps1中,我有:
$ErrorActionPreference = 'Stop';
$packageName= 'Test1'
$toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
$fileLocation = Join-Path $toolsDir 'Test1.exe'
$packageArgs = @{
packageName = $packageName
fileType = 'exe'
file = $fileLocation
silentArgs = "/SP"
validExitCodes= @(0, 3010, 1641)
softwareName = 'Test1*'
checksum = ''
checksumType = 'md5'
checksum64 = ''
checksumType64 = 'md5'
}
Install-ChocolateyPackage @packageArgs
答案 0 :(得分:6)
错误告诉您您多次指定file
参数,这意味着您可能会遇到以下情况之一:
file
$packageArgs
两次
fileType
和file
并且调用了Install-ChocolateyPackage
,其中只有filetype
(但由于部分参数名称匹配,PowerShell会将这两个参数传递给filetype
)@packageArgs
和file
作为参数传递我们已将此问题添加到https://chocolatey.org/docs/troubleshooting。
如果你已经解决了这个方面,你现在可能会遇到其他错误。请参阅下一节以了解原因。
您正在尝试传递Install-ChocolateyInstallPackage
的参数,而不是Install-ChocolateyPackage
。
如果您按照链接进行操作,您会注意到Install-Chocolatey 安装包适用于本地嵌入或UNC共享二进制文件的区别,其中Install-ChocolateyPackage用于提取远程资源。
当您创建包时,我们强烈建议您使用choco new
(来自最新发布的Chocolatey版本),因为它生成的包装中包含已生成的chocolateyInstall.ps1
中已包含的差异的文档。我们将此称为“及时文档”。
虽然您确实根据代码使用了choco new
,但我只是想补充一点,最新版本将提供有关创建包的最有用的文档。
答案 1 :(得分:0)
我正在安装Redis并遇到类似的问题,我设法通过使用旧版本[Deprecated]来解决此问题,命令:
choco install redis-64
因此,只要转到我认为的旧版本,其他人都可以使用同样的方法。