【发布时间】:2010-10-28 15:16:50
【问题描述】:
我正在用原生 C++/MFC 编写一个复杂的设置/安装程序。我非常希望能够检测到已安装的 Java 版本(如果有的话)。
这可能吗?如何?
【问题讨论】:
我正在用原生 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,它应该为用户提供一个选择,而不是假设其中一个(例如最新的一个)应该是您的应用将使用的那个。
【讨论】: