如何在Chocolatey包中将参数传递给安装程序?

时间:2016-06-14 05:50:24

标签: chocolatey

我从MSI创建了一个包。但是,我需要传递自定义参数。

/i SERVER='xx.yyy.com

以下是我通过阅读choco命令规范尝试的一些内容,但没有一个有效。

> choco install foo -y --params "SERVER='xx.yyy.com'"
> choco install foo -y --params "SERVER=xx.yyy.com"
> choco install foo -y --params "SERVER= xx.yyy.com"

如何将安装选项传递给安装程序?

3 个答案:

答案 0 :(得分:13)

如果您要转到本机安装程序,请使用--install-arguments而不是--package-parameters

https://chocolatey.org/docs/commands-install#options-and-switches

 --ia, --installargs, --installarguments, --install-arguments=VALUE
 InstallArguments - Install Arguments to pass to the native installer in 
   the package. Defaults to unspecified.

-o, --override, --overrideargs, --overridearguments, --override-arguments
 OverrideArguments - Should install arguments be used exclusively without 
   appending to current package passed arguments? Defaults to false.

 --params, --parameters, --pkgparameters, --packageparameters, --package-parameters=VALUE
 PackageParameters - Parameters to pass to the package. Defaults to 
   unspecified.

此外,您可能希望浏览有关如何传递选项和切换的文档 - https://chocolatey.org/docs/commands-reference#how-to-pass-options-switches

  • 引用值:当您需要引用整个参数时,例如何时引用 使用空格,请使用双引号和 撇号("'value'")。在cmd.exe中,您可以使用双引号 ("value")但在powershell.exe中你应该使用反引号(`" value`") 或撇号('value')。使用该组合允许两者 没有问题的shell工作,除了下一节 适用。
  • 在参数中传递引号:当您需要传递引用时 值得像本机安装程序,你在一个 有趣的世界。在cmd.exe中,您必须像这样传递:-ia "/yo=""Spaces spaces"""。在PowerShell.exe中,您必须传递它 这个:-ia '/yo=""Spaces spaces""'。没有其他组合可行。在 PowerShell.exe如果您使用的是版本v3 +,则可以在--%之前尝试-ia 只是按原样传递args,这意味着它不应该 需要任何特殊的解决方法。

答案 1 :(得分:3)

我发现有关将值设置到Choco包参数中的信息很难找到!

choco install -h没什么帮助。

作为设置包参数值的简单示例(与MSI参数相反 - 这是一个非常不同的),这是一个简单,可行的示例:

choco install python2 --package-parameters='"/InstallDir:D:\Python2"'

" / INSTALLDIR"被记录为" python2"的包参数。巧克力包。

请注意," - package-parameters"有一些别名,最短的是" - params"如果你想保存打字。

还要注意使用冒号,而不是" =",其中赋值。

如果您需要值中的空格,请使用额外的双引号对围绕值 - 即需要四个新字符。

...我已经在Choco论坛上要求改进文档。

答案 2 :(得分:0)

附加:在PowerShell 变量中使用 --param 参数传递给安装程序,例如

choco install vscode $ParVar

仅在您在 = 后包含等号 --params ...(而不是空格)时才有效大多数包文档显示它没有等号!虽然这对于直接执行来说不是问题,但在通过变量传递参数时会失败。

VS Code 的证明:

不带等号:

<头>
继续 代码
  1. VS Code Chocolatey Documentation: | choco install vscode --params "/NoDesktopIcon /NoQuicklaunchIcon"
  2. 复制到变量:| $ParVar = '--params "/NoDesktopIcon /NoQuicklaunchIcon"'
    注意单引号和双引号(参见其他答案)。
  3. 执行(-> 错误):| choco install vscode $ParVar
    Chocolatey params error in PowerShell

带等号:

<头>
继续 代码
2.复制到变量: $ParVar = '--params="/NoDesktopIcon /NoQuicklaunchIcon"'
注意=后的params标志
3.执行(-> 成功): choco install vscode $ParVar
Successfull chocolatey installation

-> 这可以用在所有需要带双引号的 params 参数的包中。我用几个包对此进行了测试。

我利用这种方法为许多应用构建了 key:value 字典,然后我batch install on new machines