2016-05-13 2 views
0

vC++、Direct X、.netフレームワークなどのさまざまなバージョンのランタイムをインストールできるWindowsアプリケーション(vb.netを使用)を開発していますPC。私のプログラムは、バックグラウンドでランタイムインストーラ(msi & exe)を一度に1つずつ実行して、次のことを実行できる必要があります。vb.netのインストーラからインストールの進行状況と戻り値を取得する方法

1.ランタイムが既にインストールされているかどうかを確認します。
2.プログラムのメインフォームの進行状況バーにインストールの進行状況を表示します。
3.最後に、インストールが成功したかどうかを示すために、インストーラからのリターンコード(終了コード)を取得します。

上記のタスクを実行するために必要なコードは何ですか?

また、インストーラが返す可能性のあるすべてのリターンコード(値)がわかります。既にインストールされているため

答えて

2

これらの再配布可能ファイルはすべて、コマンドラインオプションが異なる可能性があるため、すべての回答が1つの可能性は低いです。

インストールの進捗状況を確認する方法は不明です。それはほとんど不可能または非常に困難です。あなたは、他のプログラムの出力を "盗む"プログラムを実行する方法を尋ねています。多くの場合、それはWindowsインストーラになります。 Windowsフォームプログラムを起動したプログラムがあった場合、「どのようにしてそのプログラムの内容を取得して出力メッセージを盗むことができますか」と尋ねてきます。これはインストールの質問ではなく、Windowsのメッセージング/ウィンドウのメッセージループの質問です。

これらの設定で使用される検出方法は内部的にコード化されているため、これらのプログラムのコードが依存関係がインストールされていないことをどのように検出するのですか?ビットと64ビット)、それはウェブ上で利用可能かもしれませんが、再配布可能なすべての人がすぐに利用できるとは考えにくいです。

EULAにも問題がある可能性があります。再配布可能ファイルの中には、EULAを受け入れる必要があり、受け入れられないとインストールできない場合もあれば、ACCEPTEULA = 1のようなコマンドラインオプションがあるものもあります。

は基本的にあなたがする必要があります

  1. は、彼らが唯一の進捗状況を表示するオプションを持っているかどうかを確認するために、すべてのものを再配布可能のために利用可能なコマンドラインオプションを見つけ、その後、彼らはそれを示してみましょう。

  2. 同様に、終了コードが成功するかどうかを示すドキュメントがあるかどうかを確認してください。

  3. すべての検出方法を見つけようとするのではなく、ターゲットが既にインストールされている場合は何もしません。

最後に、ホイールを再発明しています。 WiX、ブートストラップマニフェストジェネレーター、InstallShield、拡張インストーラーなどはすべて、ソフトウェアをインストールするための前提条件としてこれを行うブートストラッププログラムを提供します。既存のソリューションが存在するため、これを行うコードは誰も作成しません。

関連する問題