我一直在尝试检测 Tomcat 是否安装在我的 NSIS 脚本中的主机系统上。这是执行此操作的部分
Section Tomcat
ClearErrors
Var /GLOBAL tomcatVersion
ReadRegStr $tomcatVersion HKLM "SOFTWARE\Apache Software Foundation\Tomcat\7.0\Tomcat7" "InstallPath"
;ExecWait "$EXEDIR\apache-tomcat-7.0.22.exe"
DetailPrint "$tomcatVersion"
SectionEnd
当我转到“regedit”并检查该特定键的路径时,它有一个值,但打印语句返回空白。
有人可以建议解决此问题和/或我可能遇到的任何错误的最佳方法是什么吗?
我注意到一件有趣的事情,如果在上面的代码中,如果我将 ReadRegStr 命令指向读取
HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion"
它返回一个值,因此从语法上讲,代码确实有效。
最佳答案
如果 Tomcat 安装程序是 64 位安装程序,则 32 位进程将找不到该 key ,在 NSIS 中,您可以使用
SetRegView 64
。如果您在脚本中使用
RequestExectionLevel
并且 Tomcat 安装程序由 UAC 虚拟化,那么您必须从 VirtualStore 中读取它(在你的情况下不太可能,因为你可以在 regedit 中看到 key )Process Monitor调试注册表问题也很方便...
关于apache - NSIS:检测 Tomcat 安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12739044/