我正在创建自己的chocolatey
软件包,并且正在使用Install-ChocolateyInstallPackge
进行软件安装。根据其文档,此函数采用HashTable
来将参数传递给其参数。我有以下几个:
#File: chocolateyInstall.ps1
$ErrorActionPreference="stop"
$toolsDir = $(Split-Path -parent $MyInvocation.MyCommand.Definition)
$installFile = Join-Path $toolsDir "jdk8u211windowsx64.exe" # JDK.exe is in parent
....
$packageArgs = @{
PackageName = 'jdk8da'
FileType = 'exe'
SoftwareName = 'JDK8*'
File = $installFile
SilentArgs = '/s ADDLOCAL="ToolsFeature" INSTALLDIR=C:\JAVA'
ValidExitCodes = @(0)
}
Install-ChocolateyInstallPackage $packageArgs
.... #Setting Environment Variables....
但是,我遇到一个错误:
ERROR: Package parameters incorrect, either File or File64 must be specified
可以看出,我已经用填充路径明确指定了exe
文件。
如果我直接将File参数指定给函数,它将起作用:
Install-ChocolateyInstallPackage -PackageName "JDK8" -FileType "exe" -File $installFile ....
我在哪里失踪,有人可以指出吗?
答案 0 :(得分:3)
由于您使用的是PowerShell参数的“ splatting”,因此在实际使用packageArgs
变量时必须使用稍有不同的语法。
您应该这样做:
Install-ChocolateyInstallPackage @packageArgs
而不是:
Install-ChocolateyInstallPackage $packageArgs
在这里看看:
有关完整示例。