2011-09-20 77 views
1

當InstallShield執行時,我們啓動一個單獨的安裝程序(安裝階段之前),它安裝對程序至關重要的小型SQL服務器。僅供參考,SQL服務器是Firebird SQL。當用戶重新安裝程序時,我們需要終止正在作爲後臺可執行文件運行的Firebird SQL服務器。我們研究了強制終止exe的影響,並沒有經歷任何負面影響。當使用InstallShield構建的安裝程序運行時終止程序

所以我的問題是我們如何確定,在InstallShield中,如果一個外部程序正在運行並終止程序,如果它是?我想檢測它是否正在運行的唯一原因是爲了避免在安裝過程中可能會阻礙或引發錯誤的任何錯誤。如果這不是問題,如果我們確定它是否在運行,我可以不在乎。

編輯:實際上,我們只想殺死exe,因爲我們正在重新安裝它。所以如果可能的話,有沒有辦法告訴InstallShield在另一個exe運行時跳過執行一個exe文件?

回答

0

安裝Firebird作爲服務,然後使用ServiceControl表來停止服務。我無法想象終止一個SQL服務器引擎的好處。

如果你真的想要殺死它(希望你然後在新的數據文件複製這樣的腐敗是不是一個問題),那麼就來看看樣品「名單,並關閉正在運行的應用程序」在http://www.installsite.org/pages/en/isp_ext.htm

0

有是這種問題的兩種方法:

  1. 跳過第二個產品(您的SQL服務器),如果它正在運行。爲此,您可以使用自定義操作來檢測正在運行的進程,並根據結果設置安裝程序屬性。然後該屬性可用於調整第二個安裝程序。

  2. 第二種方法是完全卸載,然後重新安裝第二個產品時,進行修復:

    • 添加其卸載第二個產品
    • 條件它只用於修復運行自定義操作(使用REINSTALL屬性)
    • 安排在第一次安裝產品​​的自定義動作之前安排它
    • 修改安裝自定義動作條件也支持修復,例如:

未安裝或重新安裝

相關問題