【问题标题】:InstallShield(LE) - Passing command line argument that can be used in custom action exeInstallShield(LE) - 传递可在自定义操作 exe 中使用的命令行参数
【发布时间】:2013-04-10 11:20:11
【问题描述】:
我在VS2012 中使用InstallShield(Limited Edition) 创建一个设置。首先,我创建了一个安装文件。我还有一些事情要做,所以我创建了一个项目并将其 exe 添加为新的自定义操作 After Initialization(Before First Dialog)。
现在我想从命令行运行这个设置并将参数传递给它。我尝试使用 %1 获取命令行输入的第一个参数,但它不起作用。请告诉如何使用命令行传递参数并在 exe 文件中使用它。
【问题讨论】:
标签:
visual-studio-2012
installation
installshield-le
【解决方案1】:
除非我遗漏了什么,否则 InstallShield Limited Edition 不支持此功能。
从 Windows Installer 的角度来看,您所指的内容称为安全自定义公共属性。 (见:SecureCustomProperties property)
考虑命令行:
msiexec /i foo.msi SERVERNAME=MyServer
SERVERNAME 大写这一事实使其公开。它列在 SecureCustomProperties 属性中的事实将使其安全。只有在考虑 UAC 时,安全的公共属性才有效。如果进程已经被提升,那么它不一定是安全的,但它确实应该是。
在自定义操作方面,您使用 [SERVERNAME] 来引用 SERVERNAME 属性的值。
那么,当有人刚刚运行 MSI 但 InstallShield 限量版不支持此功能时,您当然可能希望自定义 UI 体验。
我可以考虑使用 WiX 合并模块和/或对构建的 MSI 应用转换来使其工作的方法,但所有这些都需要高级 MSI 知识,而且升级到专业版通常更容易。