将配置文件作为参数传递给MSI,需要通过“静默安装”的“自定义”操作使用它

时间:2014-08-21 15:33:31

标签: installer windows-installer installshield msiexec

我已经创建了基本MSI项目,用于在 Installshield 2014 中为我的项目创建安装程序,它运行正常。我还创建了一个自定义操作来在安装应用程序时执行我的exe文件。

然后我使用(/ s)命令行参数创建一个静默安装程序。我想将Config文件传递给我的MSI设置,我的一个Custom Action exe文件需要此Config文件来设置基本项目设置。

e.g

Installer.msi / s" c:\ project \ config.txt"

如何将此配置文件参数作为命令行参数传递给我的exe? 我也搜索过谷歌和现有的问题。我没有办法做到这一点。 直到现在我还没有办法做到这一点。请有人帮我这样做。

提前致谢。

2 个答案:

答案 0 :(得分:3)

您可以通过命令行将值传递给MSI。这是将值直接传递到MSI的一种方法,另一种方法是使用转换来修改MSI 。请参阅此答案: Using msiexec.exe custom command lines, or using transform files

据我所知,您可以通过命令行传递多少个值:

msiexec.exe /I "C:\Install.msi" /QN /L*V "C:\msilog.log" STARTAPP=1 FIREWALLRULE="Long string here"

上面命令行的快速说明:

/L*V "C:\msilog.log"= verbose logging
/QN = run completely silently
STARTAPP="1" = Your property indicating the app should be started after install 
FIREWALLRULE="Long string here" = Your firewall rule to apply via a custom action

答案 1 :(得分:0)

是的,Glytzhkof是对的。 根据你的问题,你可以自由地“发明”自己的财产,例如CONFIGFILE并传递命令行,如CONFIGFILE =“C:\ myconfig.ini”或类似的东西。 如果路径始终相同(例如在SOURCEDIR中),则可以避免整个路径并将其添加到代码中,但不要依赖于补丁(.msp)的源代码。

我不确定我是否理解,你的意思是“静音安装程序”。 您可以使用参数“/ qn”(或“/ quiet”)静默调用每个msi设置。 “/ s”参数不属于MSI,但对于setup.exe文件(bootstrappers)或InstallShield脚本项目更常见。当然,您可以将引导程序与名为的MSI结合使用。

例如,使用InstallShield构建的setup.exe可能类似于:

setup.exe /s /v "/qn CONFIGFILE=myconfig.ini"