【问题标题】:Chocolatey Installation with PackageParams error parsing second argument使用 PackageParams 安装 Chocolatey 错误解析第二个参数
【发布时间】: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 文件中有错字,走开然后回来我马上注意到了 =[.
  • 删除这个问题
  • 我会添加回复。

标签: powershell chocolatey


【解决方案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
猜你喜欢
  • 2021-08-20
  • 1970-01-01
  • 2018-06-23
  • 2020-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-21
相关资源
最近更新 更多