如何将参数传递给 Chocolatey 包中的安装程序?
How do I pass parameters to the installer in a Chocolatey package?
我从 MSI 创建了一个包。但是,我需要传入自定义参数。
/i SERVER='xx.yyy.com
以下是我通过阅读 choco 命令规范尝试的一些操作,但 none 有效。
> 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"
如何将安装选项传递给安装程序?
如果要传递给本机安装程序,请使用 --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
之前尝试 --%
只是按原样传递参数,这意味着它不应该
需要任何特殊的解决方法。
我发现很难找到有关将值设置到 Choco 包参数中的信息!
choco install -h
没什么帮助。
作为为包参数设置值的简单示例(与 MSI 参数相反 - 这完全不同),这是一个简单、可行的示例:
choco install python2 --package-parameters='"/InstallDir:D:\Python2"'
“/InstallDir”被记录为 "python2" Choco 包的包参数。
请注意,“--package-parameters”有几个别名,如果您想节省输入,最短的是“--params”。
另请注意在分配值时使用冒号,而不是“=”。
如果值中需要空格,请用额外的双引号将值括起来 - 即需要四个新字符。
...我已在 Choco 论坛上要求改进文档。
补充:在 PowerShell 变量中使用 --param
参数传递给安装程序,例如
choco install vscode $ParVar
只有当您在 --params ...
之后包含等号 =
(而不是空格)时,才有效。
大多数包文档显示它没有等号!虽然这不是直接执行的问题,但通过变量传递参数时会失败。
VS 代码证明:
没有等号:
Proceeding
Code
- VS Code Chocolatey Documentation: |
choco install vscode
--params "/NoDesktopIcon /NoQuicklaunchIcon"
- 复制到变量:|
$ParVar = '--params "/NoDesktopIcon /NoQuicklaunchIcon"'
注意单引号和双引号(参见其他答案)。
- 执行(->错误):|
choco install vscode $ParVar
带等号:
Proceeding
Code
2. Copy to variable:
$ParVar = '--params="/NoDesktopIcon /NoQuicklaunchIcon"'
Pay attention to =
sign after params
3. Execution (-> success):
choco install vscode $ParVar
-> 这可以用在所有需要带双引号的 params
参数的包中。我用几个包测试了这个。
我利用这种方法为很多应用程序建立 key:value
词典,然后 batch install on new machines。
我从 MSI 创建了一个包。但是,我需要传入自定义参数。
/i SERVER='xx.yyy.com
以下是我通过阅读 choco 命令规范尝试的一些操作,但 none 有效。
> 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"
如何将安装选项传递给安装程序?
如果要传递给本机安装程序,请使用 --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
之前尝试--%
只是按原样传递参数,这意味着它不应该 需要任何特殊的解决方法。
我发现很难找到有关将值设置到 Choco 包参数中的信息!
choco install -h
没什么帮助。
作为为包参数设置值的简单示例(与 MSI 参数相反 - 这完全不同),这是一个简单、可行的示例:
choco install python2 --package-parameters='"/InstallDir:D:\Python2"'
“/InstallDir”被记录为 "python2" Choco 包的包参数。
请注意,“--package-parameters”有几个别名,如果您想节省输入,最短的是“--params”。
另请注意在分配值时使用冒号,而不是“=”。
如果值中需要空格,请用额外的双引号将值括起来 - 即需要四个新字符。
...我已在 Choco 论坛上要求改进文档。
补充:在 PowerShell 变量中使用 --param
参数传递给安装程序,例如
choco install vscode $ParVar
只有当您在 --params ...
之后包含等号 =
(而不是空格)时,才有效。
大多数包文档显示它没有等号!虽然这不是直接执行的问题,但通过变量传递参数时会失败。
VS 代码证明:
没有等号:
Proceeding | Code |
---|
- VS Code Chocolatey Documentation: |
choco install vscode
--params "/NoDesktopIcon /NoQuicklaunchIcon"
- 复制到变量:|
$ParVar = '--params "/NoDesktopIcon /NoQuicklaunchIcon"'
注意单引号和双引号(参见其他答案)。 - 执行(->错误):|
choco install vscode $ParVar
带等号:
Proceeding | Code |
---|---|
2. Copy to variable: | $ParVar = '--params="/NoDesktopIcon /NoQuicklaunchIcon"' Pay attention to = sign after params |
3. Execution (-> success): | choco install vscode $ParVar |
-> 这可以用在所有需要带双引号的 params
参数的包中。我用几个包测试了这个。
我利用这种方法为很多应用程序建立 key:value
词典,然后 batch install on new machines。