高级安装程序,通过命令行使用标志/参数调用我的自定义MSI?

时间:2013-01-28 20:39:37

标签: c# windows-installer advanced-installer

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

换句话说,我说我从名为exe的高级安装程序中生成了installer.exe

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

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

How to Pass Command Line Arguments to MSI Installer Custom Actions

但似乎作者严格关注MSI而不是高级安装程序,我更愿意利用我使用的这个应用程序。

是否可以通过传入我想要的任何参数来简单地调用安装程序,并使用会话通过自定义操作获取它?或者是否有使用AI的方法?

1 个答案:

答案 0 :(得分:4)

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

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

从命令行调用msi时,您可以设置公共属性的值,如下所示:

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

根据您的说明,您似乎正在编译MSI into a bootstrapper。我的理解是bootstrapper exe会代表你将公共属性的参数传递给MSI,ala:

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

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