1

InstallShield が実行されると、プログラムにとって重要な小さな SQL サーバーをインストールする別のインストーラーを (インストール フェーズの前に) 起動します。参考までに、SQL サーバーは Firebird SQL です。ユーザーがプログラムを再インストールするときは、バックグラウンド実行可能ファイルとして実行されている Firebird SQL サーバーを終了する必要があります。exe を強制終了した場合の影響を調査しましたが、悪影響はありませんでした。

私の質問は、InstallShield で、外部プログラムが実行されているかどうかをどのように判断し、実行されている場合はプログラムを終了するかということです。実行されているかどうかを検出したい唯一の理由は、インストール中にエラーを妨げたりスローしたりする可能性のあるエラーを回避することです。それが問題でなければ、実行中かどうかを判断するかどうかはあまり気にしません。

編集: 現実的には、exe を再インストールしているため、exe を強制終了したいだけです。可能であれば、別の exe が実行されている場合、InstallShield に exe の実行をスキップするように指示する方法はありますか?

4

2 に答える 2

0

Firebirdをサービスとしてインストールしてから、ServiceControlテーブルを使用してサービスを停止します。SQLサーバーエンジンを終了することで得られる良いことは想像できません。

本当にそれを殺したい場合(うまくいけば、新しいデータファイルをコピーしているので、破損は問題になりません)、 http://www.installsite.org/にあるサンプルの「実行中のアプリケーションの一覧表示とシャットダウン」を参照してください。 pages / en / isp_ext.htm

于 2011-09-20T15:01:23.843 に答える
0

この問題には 2 つのアプローチがあります。

  1. 2 番目の製品 (SQL サーバー) が実行されている場合はスキップします。このために、実行中のプロセスを検出し、結果に基づいてインストーラーのプロパティを設定するカスタム アクションを使用できます。このプロパティを使用して、2 番目のインストーラーを調整できます。

  2. 2 番目の方法は、修復の実行時に 2 番目の製品を完全にアンインストールしてから再インストールすることです。

    • 2 番目の製品をアンインストールするカスタム アクションを追加する
    • 修復のためにのみ実行するように条件付けます ( REINSTALLプロパティを使用します) 。
    • 初回インストール時に製品をインストールするカスタム アクションの前にスケジュールします。
    • 修復もサポートするようにインストール カスタム アクション条件を変更します。次に例を示します。

インストールされていない、または再インストールする

于 2011-09-21T11:01:08.380 に答える