使用 PackageParams 安装 Chocolatey 错误解析第二个参数
Posted
技术标签:
【中文标题】使用 PackageParams 安装 Chocolatey 错误解析第二个参数【英文标题】:Chocolatey Installation with PackageParams error parsing second argument 【发布时间】:2017-07-03 01:05:05 【问题描述】:Chocolatey v0.13.3(免费版)
我们正在为我们的 Install Shield msi 安装程序创建 Chocolatey 包。 安装时,我们传入包参数 (-params) 以在安装后配置一些应用程序配置文件。
powershell 命令
cinst Company.Package –Version 1.2.3 -myf -params "DBName=DB1;DBIP=123.4.5.6;DBSomethingElse=true"
所有参数都正确传入并更新配置文件,但会抛出巧克力错误并指出第二个参数未重新定殖,这会导致安装失败。
错误:术语“DBIP=123.4.5.6”未被识别为 cmdlet 的名称
chocolateyinstall.ps1
Install-ChocolateyInstallPackage @packageArgs
if ( $null -ne $env:chocolateyPackageParameters )
Invoke-Expression "& $( Join-Path $toolsDir 'Configuration.ps1' ) $($env:chocolateyPackageParameters)"
在 tools/Configuration.ps1 中,我们像这样拆分参数
$(ConvertFrom-StringData -StringData $env:chocolateyPackageParameters.Replace( ";", "`n" ) )
我错过了什么?
我知道有更好的方法来配置系统(puppet、chef...),但这就是我所有可用的 atm
【问题讨论】:
用荷马辛普森一家 DOH 的名言!我在 Configuration.ps1 文件中有错字,走开然后回来我马上注意到了 =[. 删除这个问题 我会添加回复。 【参考方案1】:适当地传递选项
首先,确保您将参数适当地传递给 Chocolatey。 PowerShell.exe 和 cmd.exe 处理引号的方式不同,因此我们建议 "'args here'"
- https://chocolatey.org/docs/commands-reference#how-to-pass-options-switches
您始终可以使用--noop --debug
运行以了解这些选项是如何传递到配置的,而无需实际运行安装。您会看到 Chocolatey 在其中一些方面非常冗长。
你的错误
您似乎在 Configuration.ps1 中的拼写错误中发现了错误,这很好。
您可能会依赖https://chocolatey.org/packages/chocolatey-core.extension(并将其下载到您的内部包存储库),因此您可以这样做:
$pp = Get-PackageParameters
https://github.com/chocolatey/chocolatey-coreteampackages/blob/master/extensions/chocolatey-core.extension/extensions/Get-PackageParameters.ps1
脚本推荐
如果您在脚本中使用它,建议您使用choco upgrade
- 如果未安装软件包,则它具有安装效果,如果有更新版本可用则升级。高温
【讨论】:
Chocolatey-core.extension 中的 Get-PackageParameters 和 Get-AppInstallLocation 效果很好。 -ty以上是关于使用 PackageParams 安装 Chocolatey 错误解析第二个参数的主要内容,如果未能解决你的问题,请参考以下文章