将命令行参数从installshield安装程序传递到自定义操作exe

时间:2016-03-30 06:34:23

标签: windows-installer command-line-arguments installshield custom-action installshield-le

我正在使用InstallShield安装程序setup.exe文件来静默安装我的应用程序。现在我想用一些命令行参数调用setup.exe。并且这些参数应该在我创建的EXE自定义操作中可用,以便在成功时执行。如何在调用安装文件时在命令行中传递数据并在我的exe中使用它。 exe是一个用C#编写的控制台应用程序。

1 个答案:

答案 0 :(得分:-1)

我知道这是一个基于MSI的项目,我假设.exe自定义操作是延迟执行。

你应该做的是:

  1. 在您的安装程序中,定义.exe所需的一些自定义MSI属性(例如ServerNameServerPort
  2. 创建类型'设置属性'的自定义操作。 属性名称应该是运行exe的自定义操作的名称(例如RunMyExe)。 属性值应该是自定义属性的连接列表,例如[ServerName];[ServerPort]。在InstallInitialize之后运行此自定义操作。
  3. 在您的.exe自定义操作(RunMyExe)中,将[CustomActionData]作为命令行传递给您的exe程序
  4. 让您的exe程序获取命令行,并将其拆分以获取所需的数据
  5. 在设置您在步骤1中定义的自定义属性时调用setup.exe,例如setup.exe /v"ServerName=test-srv ServerPort=67000"
  6. 在延迟的自定义操作中,您无法使用外部属性(例如从命令行提供的属性),您只能访问内部属性,例如CustomActionData。这里的技巧是,如果存在具有操作名称的属性(上例中的RunMyExe),则内部CustomActionData属性从中获取其值。