NSIS:检测Tomcat安装

时间:2012-10-05 03:22:48

标签: 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 "$tomcatVersion"
SectionEnd

当我转到“regedit”并检查该特定键的路径时,它有一个值,但print语句返回一个空白。

有人可以建议解决此问题的最佳方法和/或我可能遇到的任何错误吗?

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

HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion"

它返回一个值,从语法上讲,代码确实有效。

2 个答案:

答案 0 :(得分:1)

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

  • 如果您在脚本中使用RequestExectionLevel并且UAC虚拟化了Tomcat安装程序,那么您必须从VirtualStore读取它(不太可能在您的情况下,因为您可以看到密钥注册表编辑器)

  • Process Monitor也可以方便地调试注册表问题......

答案 1 :(得分:0)

派对有点晚了,但如果你谷歌为“nsis安装tomcat”这个帖子出现了,所以我想我会分享这个我发现的好例子......

https://github.com/mathiaslin/openmrs-pgh-190/blob/master/metadata/installer/installer_setup.nsh

相关问题