【发布时间】:2019-01-14 03:10:29
【问题描述】:
安装程序在 Win-7、Win-8 上运行良好,但在 Win-10 上运行异常。 我的 Java 版本检查功能是 -
Function checkJavaVersion
${If} ${RunningX64}
${registry::Read} "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environmen" "JAVA_HOME" $0 $1
MessageBox MB_OK "64 bit JAVA Home - $0"
MessageBox MB_OK "64 bit JAVA Home - $1"
${registry::Read} "HKLM\SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion" $0 $1
MessageBox MB_OK "64 bit JRE - $0"
MessageBox MB_OK "64 bit JRE - $1"
${If} $0 == ""
${registry::Read} "HKLM\SOFTWARE\JavaSoft\Java Development Kit" "CurrentVersion" $0 $1
MessageBox MB_OK "64 bit JDK - $0"
MessageBox MB_OK "64 bit JDK - $1"
${EndIf}
${registry::Read} "HKLM\SOFTWARE\WOW6432Node\JavaSoft\Java Runtime Environment" "CurrentVersion" $0 $1
MessageBox MB_OK "32 bit JRE - $0"
MessageBox MB_OK "32 bit JRE - $1"
${If} $0 == ""
${registry::Read} "HKLM\SOFTWARE\WOW6432Node\JavaSoft\Java Development Kit" "CurrentVersion" $0 $1
MessageBox MB_OK "32 bit JDK - $0"
MessageBox MB_OK "32 bit JDK - $1"
${EndIf}
${Else}
${registry::Read} "HKLM\SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion" $0 $1
MessageBox MB_OK "32 bit JRE - $0"
MessageBox MB_OK "32 bit JRE - $1"
${EndIf}
FunctionEnd
在不同系统中运行此示例安装程序后,我发现安装了 Java 8(64 位)的 Win-10(64 位系统)无法识别 JAVA 版本,即使在提升模式下也无法识别.
对于安装了 JAVA 8(32 位)的 Win-10(64 位系统)HKLM\SOFTWARE\JavaSoft\Java Runtime Environment,此路径将注册表搜索重定向到 HKLM\SOFTWARE\WOW6432Node\JavaSoft\Java Runtime Environment,因此在这两种情况下(32 位和 64 位 Java 版本检查)即使在 Elevated 模式下也可以找到 Java 版本,其行为相同,
请查看附件结果以获得更详细的结果。
可以参考这个未解决的问题NSIS installer issue 以获得更清晰的信息。
【问题讨论】:
标签: java windows registry installation nsis