package - 如何使用 Chocolatey 将安装参数直接传递给 MSI 安装程序(如 PowerShell 中的 -ArgumentLIist)?
问题描述
我想将自定义参数直接传递给 MSI 安装程序。我尝试在silentArgs中添加这些参数,但是当我这样做时,在我运行 choco install 后,我得到以下信息(之后安装被中止):
这就是我传递这些参数的方式silentArgs
:
silentArgs = "/qn /norestart /l*v `"$($env:TEMP)\$($packageName).$($env:chocolateyPackageVersion).MsiInstall.log`" /CUSTOMPARAM1:'dummydata' /CUSTOMPARAM2:'dummydata'"
我尝试了不同的语法(而不是使用 :,我使用了 =,但结果仍然相同)。然后我尝试choco install <pckgName> --install-arguments="CUSTOMPARAM1=""dummy.data"""
了,但是通过这种方法确实安装了包,但参数没有传递给 MSI 安装程序。我搜索了某种与--install-arguments
它期望的格式(例如引号=
或:
等)相关的文档,但没有找到任何东西。
TLDR;我想通过 choco 将自定义参数/参数传递给我的 MSI 安装程序。
解决方案
在我看来,您两次传递了相同的参数,一次是在您的包的静默参数中,另一次是在调用choco install
. 我认为这就是问题所在,因为我相信msiexec
它将使用它为给定参数找到的第一个值。如果要覆盖静默参数,则需要将--override-arguments
参数添加到choco install
. 这种方法的缺点是这将覆盖所有烘焙到包中的静默参数,因此您还需要提供安装包所需的所有静默参数。
如果这是您开发的包(看起来可能是这样),我建议改用包参数。通过这种方式,您可以保留默认的静默安装参数,并且ChocolateyInstall.ps1
您可以将每个参数添加CUSTOMPARAM
到-SilentArgs
通过包参数传入或可选地为未传入的参数设置默认值(或省略额外参数)。如果出现以下情况,您也可以抛出错误未提供要求包参数。
推荐阅读
- node.js - firebase/firestore 获取嵌套集合
- flutter - Flutter 中从屏幕外滑动的小部件?类似于 Android 8 应用程序抽屉
- java - twitter4j 搜索完整的 7 天范围
- loopbackjs - Loopback - 如何将访问令牌分配给角色?
- javascript - 从反应组件传递数据
- ssl - Neo4j 和 LetsEncrypt
- android - 如何修复“错误:Flutter 目录不是 GitHub 项目的克隆”。尝试安装颤振时出错?
- javascript - ExtendScript 中正则表达式的语法错误(Javascript ECMA-262 — 版本 3)
- python - 我的 cookie 阅读器不工作
- sql-server - 如何在 SQL Server 中检索长查询