Chocolatey v0.13.3(免费版)
我们正在为Install Shield msi安装程序创建Chocolatey包。 安装时,我们传递包参数(-params)以在安装后配置一些应用程序配置文件。
powershell cmd
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" ) )
我缺少什么?
我知道有更好的方法来配置系统(木偶,厨师......)但这就是我可以使用的所有内容
答案 0 :(得分:1)
首先,确保将适当的参数传递给Chocolatey。 PowerShell.exe和cmd.exe处理报价的方式不同,因此我们建议"'args here'"
- https://chocolatey.org/docs/commands-reference#how-to-pass-options-switches
您始终可以使用--noop --debug
运行,以了解这些选项如何在没有实际运行安装的情况下传递到配置。你会发现,巧克力在某些领域非常冗长。
看起来你在Configuration.ps1的拼写错误中发现了你的错误,所以这很好。
您可能会依赖https://chocolatey.org/packages/chocolatey-core.extension(并将其下载到您的内部软件包存储库),因此您可以这样做:
$pp = Get-PackageParameters
如果您在脚本中使用此功能,建议您使用choco upgrade
- 如果未安装软件包,则会产生安装效果;如果有更新版本,则会进行升级。 HTH