You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Chocolatey向MSI安装程序传递安装参数(类似PowerShell的-ArgumentList)

Chocolatey向MSI安装程序传递自定义参数的正确方案

1 打包时内置参数到silentArgs的正确写法

你之前的写法报错是因为不符合MSI的参数传递规范:MSI自定义公共属性必须使用大写属性名=值的格式,不能用冒号分隔,也不能用单引号包裹值,同时PowerShell中双引号嵌套需要用反引号(`)转义。
正确示例:

silentArgs = "/qn /norestart /l*v `"$($env:TEMP)\$($packageName).$($env:chocolateyPackageVersion).MsiInstall.log`" CUSTOMPARAM1=`"dummydata`" CUSTOMPARAM2=`"dummydata`""

注意:你的MSI安装包内定义的自定义属性必须是全大写的公共属性,否则参数不会生效

2 安装时通过--install-arguments动态传参的正确写法

之前参数未传递成功通常是两个原因:一是安装脚本未配置接收外部参数,二是命令行引号转义错误。

前置要求(打包侧配置)

确保你的安装脚本(install.ps1)中调用MSI安装的函数支持接收外部参数,使用官方提供的Install-ChocolateyPackage函数默认支持该能力,无需额外配置,示例:

Install-ChocolateyPackage -PackageName $packageName `
                          -FileType 'msi' `
                          -SilentArgs "/qn /norestart /l*v `"$($env:TEMP)\$($packageName).$($env:chocolateyPackageVersion).MsiInstall.log`"" `
                          -File $fileLocation

命令行传参格式

(1)CMD环境执行

choco install <pckgName> --install-arguments="CUSTOMPARAM1=\"dummy.data\" CUSTOMPARAM2=\"value with space\""

(2)PowerShell环境执行

推荐用外层单引号包裹避免转义:

choco install <pckgName> --install-arguments='CUSTOMPARAM1="dummy.data" CUSTOMPARAM2="value with space"'

如果要用双引号做外层包裹,需要用反引号转义内层双引号:

choco install <pckgName> --install-arguments="CUSTOMPARAM1=`"dummy.data`" CUSTOMPARAM2=`"value with space`""

3 验证方式

安装时添加--verbose参数,查看Chocolatey输出的最终调用msiexec的命令行,确认自定义参数是否被正确拼接;也可以直接打开生成的MSI安装日志,搜索自定义参数名称,确认参数是否传入MSI。

内容的提问来源于stack exchange,提问作者YM_coding

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 09:18:03