使用 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 错误解析第二个参数的主要内容,如果未能解决你的问题,请参考以下文章

text git tools安装#choco

text 基本安装#choco

powershell Choco Python安装

choco入门

通过 PowerShell DSC 和 choco 部署 VS19

Dart:1.Dart开发环境配置