我已经创建了一个自定义的 MSI 包,我正在使用 Advanced Installer 尝试添加某种命令行参数,一个可以触发的 “flag”
。当该标志被触发时,它将导致安装程序中发生一系列事件(删除某些文件、移动文件夹、提取 zip 文件...等等...)
换句话说,我从名为 installer.exe
的高级安装程序中生成了 exe
。
我想从命令行调用 installer.exe --triggerEvents
,这将触发安装程序本身内的一系列自定义事件..
经过一番研究后,我发现了一篇与我的问题相关的非常好的文章:
How to Pass Command Line Arguments to MSI Installer Custom Actions
但作者似乎严格专注于 MSI 而不是 Advanced Installer,我更愿意利用我正在使用的这个应用程序。
是否可以通过传递我想要的任何参数来简单地调用安装程序,并使用 session 通过自定义操作获取它?或者有没有一种方法可以用 AI 做到这一点?
最佳答案
您应该能够创建一个 public property在您的 MSI 中使用 AdvancedInstaller(安装参数页面,属性)。请注意,公共(public)属性必须是ALL_CAPS,而私有(private)属性可以包含小写字母。
在您的自定义操作中引用公共(public)属性以在运行时检索该属性的值。
从命令行调用 msi 时,您可以像这样设置公共(public)属性的值:
msiexec.exe /i "C:\MyAwesomeApp.msi" AWESOME_PROP="myValue"
根据您的描述,您似乎正在编译您的 MSI into a bootstrapper .我的理解是 Bootstrap exe 将代表您将公共(public)属性的参数传递到 MSI,ala:
C:\MyAwesomeApp.exe /i AWESOME_PROP="myValue"
我发现要使您的自定义操作引用公共(public)属性的内容并按照您希望的方式运行,需要大量的反复试验,但这可能是因为我不是擅长编写 MSI。就我而言,我发现构建小型测试安装程序作为概念证明或多或少有助于我调试我正在尝试做的事情。一旦我做对了,我就将该片段添加到我正在使用的实际 AIP 文件中并在那里进行测试。必要时冲洗并重复!
关于c# - 高级安装程序,通过命令行使用标志/参数调用我的自定义 MSI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14570806/