3

我创建了一个自定义 MSI 包,我正在使用 Advanced Installer 尝试添加某种"flag"可以触发的命令行参数。当该标志被触发时,它将导致安装程序中发生一系列事件(删除某些文件,移动文件夹,提取 zip 文件......等等......

换句话说,假设我exe从 Advanced Installer 生成了名为installer.exe.

我想从命令行调用installer.exe --triggerEvents中触发安装程序本身内的一系列自定义事件。

经过一番研究,我发现了这篇与我的问题有关的非常好的文章:

如何将命令行参数传递给 MSI 安装程序自定义操作

但似乎作者严格关注 MSI 而不是 Advanced Installer,我更愿意利用我正在使用的这个应用程序。

是否可以通过传入我想要的任何参数来简单地调用安装程序,并使用会话通过自定义操作来获取它?或者有没有办法用人工智能做到这一点?

4

1 回答 1

4

您应该能够使用 AdvancedInstaller(安装参数页面,属性)在 MSI中创建公共属性。请注意,公共属性必须ALL_CAPS,而私有属性可以包含小写字母。

请参阅自定义操作中的公共属性以在运行时检索该属性的值。

从命令行调用 msi 时,您可以像这样设置公共属性的值:

msiexec.exe /i "C:\MyAwesomeApp.msi" AWESOME_PROP="myValue"

根据您的描述,您似乎正在将MSI 编译为 bootstrapper。我的理解是,引导程序 exe 将代表您将公共属性的参数传递到 MSI,ala:

C:\MyAwesomeApp.exe /i AWESOME_PROP="myValue"

我发现要让您的自定义操作引用公共属性的内容并按照您希望它们的方式运行,需要大量的试验和错误,但这可能是因为我不擅长创作微星的。就我而言,我发现构建小型测试安装程序作为概念证明或多或少有助于我调试我正在尝试做的事情。一旦我做对了,我就把它添加到我正在使用的实际 AIP 文件中,并在那里进行测试。冲洗并根据需要重复!

于 2013-01-29T01:33:33.957 回答