我正在用本机 C++/MFC 编写一个复杂的安装程序/安装程序。我非常希望能够检测到已安装的 Java 版本(如果有)。
这是可能的,那么,如何?
派生一个执行以下命令的进程: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 输出并对其进行解析。
您可以尝试java -version
在子进程中运行(使用管道读取该进程的输出)并解析结果(如果有);或者,您可能会弄乱 Windows 的注册表(感觉更复杂,但可能不那么笨拙)。
还要记住,一台机器上同时安装多个 JRE 是完全可能的。如果您的安装程序检测到多个 JRE,它应该为用户提供一个选择,而不是假设其中一个(例如最新的一个)应该是您的应用程序使用的那个。