ネイティブ C++/MFC で複雑なセットアップ/インストーラー アプリケーションを作成しています。インストールされている Java のバージョン (存在する場合) を検出できるようにしたいと考えています。
これは可能ですか?
次のコマンドを実行するプロセスを fork します: java -version
. 出力を収集して解析します。次のようになります。
java version "1.5.0_16"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b06-284)
Java HotSpot(TM) Client VM (build 1.5.0_16-133, mixed mode, sharing)
これは stderr に書き込まれます。stderr 出力を収集して解析する必要があります。
サブプロセスで実行java -version
し(そのプロセスの出力をパイプで読み取る)、結果を解析する(存在する場合)ことができます。または、Windows のレジストリをいじることができます (これはさらに複雑に感じますが、それほど厄介ではないかもしれません)。