Windows installer 当使用InstallShield构建的安装程序运行时终止程序

Windows installer 当使用InstallShield构建的安装程序运行时终止程序,windows-installer,installshield,installshield-2009,Windows Installer,Installshield,Installshield 2009,当InstallShield执行时,我们让它启动一个单独的安装程序(在安装阶段之前),安装一个对程序至关重要的小型SQL server。仅供参考,SQL server是Firebird SQL。当用户重新安装程序时,我们需要终止Firebird SQL server,它只是作为后台可执行文件运行。我们研究了强制终止exe的影响,没有遇到任何负面影响 所以我的问题是,在InstallShield中,我们如何确定外部程序是否正在运行,如果正在运行,如何终止该程序?我想要检测它是否正在运行的唯一原因是

当InstallShield执行时,我们让它启动一个单独的安装程序(在安装阶段之前),安装一个对程序至关重要的小型SQL server。仅供参考,SQL server是Firebird SQL。当用户重新安装程序时,我们需要终止Firebird SQL server,它只是作为后台可执行文件运行。我们研究了强制终止exe的影响,没有遇到任何负面影响

所以我的问题是,在InstallShield中,我们如何确定外部程序是否正在运行,如果正在运行,如何终止该程序?我想要检测它是否正在运行的唯一原因是为了避免在安装过程中出现任何可能妨碍或引发错误的错误。如果这不是一个问题,我可以不关心,如果我们确定它是否运行


编辑:实际上,我们只想杀死exe,因为我们正在重新安装它。所以,如果可能的话,有没有办法告诉InstallShield在另一个exe正在运行时跳过执行exe

将Firebird安装为服务,然后使用ServiceControl表停止服务。我无法想象终止SQL server引擎会有什么好处


如果您真的想杀死它(希望您正在复制一个新的数据文件,这样就不会出现损坏问题),请查看位于

的示例“列出并关闭正在运行的应用程序”,解决此问题有两种方法:

  • 跳过正在运行的第二个产品(SQL server)。为此,您可以使用自定义操作来检测正在运行的进程,并根据结果设置安装程序属性。然后,该属性可用于调节第二个安装程序

  • 第二种方法是完全卸载,然后在执行修复时重新安装第二个产品:

    • 添加卸载第二个产品的自定义操作
    • 将其条件设置为仅为修复而运行(使用属性)
    • 在第一次安装期间安装产品的自定义操作之前安排它
    • 修改安装自定义操作条件以同时支持修复,例如:
  • 未安装或未重新安装