Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache NSIS:检测Tomcat安装_Apache_Tomcat_Nsis - Fatal编程技术网

Apache NSIS:检测Tomcat安装

Apache NSIS:检测Tomcat安装,apache,tomcat,nsis,Apache,Tomcat,Nsis,我一直在尝试在NSIS脚本中检测Tomcat是否安装在主机系统上 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 "$t

我一直在尝试在NSIS脚本中检测Tomcat是否安装在主机系统上

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”并检查该特定键的路径时,它有一个值,但print语句返回一个空白

有人能建议什么是解决此问题和/或我可能面临的任何错误的最佳方法吗

我注意到一件有趣的事情,如果在上面的代码中,如果我将ReadRegStr命令指向read

HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion"
它返回一个值,因此从语法上讲,代码可以工作。

  • 如果Tomcat安装程序是64位安装程序,那么32位进程将找不到该密钥,在NSIS中,您可以使用
    SetRegView 64

  • 如果您在脚本中使用
    requestExecutionLevel
    ,并且Tomcat安装程序是由UAC虚拟化的,那么您必须从中读取它(在您的情况下不太可能,因为您可以在regedit中看到密钥)

  • 还可以方便地调试注册表问题


派对有点晚了,但是如果你在谷歌上搜索“nsis安装tomcat”,就会出现这个线程,所以我想我会分享我发现的这个很好的例子


谢谢,这很有效。。在读取注册表之前添加行“SetRegView 64”提供了该值。