c#-高级安装程序,通过命令行调用带有标志/参数的自定义MSI?
作者:互联网
我已经创建了一个自定义MSI程序包,并且我正在与Advanced Installer一起尝试添加某种命令行参数,即可以触发的“标志”.触发该标志时,它将导致安装程序中发生一系列事件(删除某些文件,四处移动文件夹,提取zip文件…等等.)
换句话说,可以说我有从高级安装程序生成的exe,名为installer.exe.
我想从命令行调用installer.exe –triggerEvents,它将触发安装程序本身内的一系列自定义事件.
经过一些研究,我发现了一篇与我的问题相关的非常好的文章:
How to Pass Command Line Arguments to MSI Installer Custom Actions
但是看来作者严格把重点放在MSI上,而不是Advanced Installer上,我宁愿利用我正在使用的这个应用程序.
是否可以通过传入我想要的任何参数来简单地调用安装程序,并通过会话使用自定义操作来抓取它?还是有使用AI做到这一点的方法?
解决方法:
您应该能够使用AdvancedInstaller(“安装参数”页面,“属性”)在MSI中创建public property.请注意,公共属性必须为ALL_CAPS,而私有属性可以包含小写字母.
在自定义操作中引用公共属性,以在运行时检索该属性的值.
从命令行调用msi时,可以像这样设置公共属性的值:
msiexec.exe /i "C:\MyAwesomeApp.msi" AWESOME_PROP="myValue"
从您的描述看来,您正在编译MSI into a bootstrapper.我的理解是,bootstrapper exe会代表您将公共属性的参数传递给MSI,例如:
C:\MyAwesomeApp.exe /i AWESOME_PROP="myValue"
我发现要让您的自定义操作引用公共财产的内容并按照您希望的方式运行,需要花费大量的尝试和错误,但这可能是因为我并不擅长创作MSI的.就我而言,我发现构建小型的测试安装程序作为一种概念验证或多或少地帮助我调试了我想做的事情.一旦正确,就将其添加到正在使用的实际AIP文件中,并在那里进行测试.冲洗并根据需要重复!
标签:windows-installer,advanced-installer,c 来源: https://codeday.me/bug/20191031/1974915.html