Vagrant Install-ChocolateyInstallPackage:无法识别$ File参数

时间:2019-06-22 11:51:17

标签: powershell vagrant package-managers chocolatey

我正在创建自己的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 ....

我在哪里失踪,有人可以指出吗?

1 个答案:

答案 0 :(得分:3)

由于您使用的是PowerShell参数的“ splatting”,因此在实际使用packageArgs变量时必须使用稍有不同的语法。

您应该这样做:

Install-ChocolateyInstallPackage @packageArgs

而不是:

Install-ChocolateyInstallPackage $packageArgs

在这里看看:

https://github.com/chocolatey-community/chocolatey-coreteampackages/blob/master/automatic/calibre/tools/chocolateyInstall.ps1

有关完整示例。