0

我一直在尝试检测 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"

它返回一个值,因此在语法上,代码确实有效。

4

2 回答 2

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

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

  • 进程监视器也很方便调试注册表问题......

于 2012-10-05T04:56:38.150 回答
0

聚会有点晚了,但是如果你用谷歌搜索“nsis install tomcat”,这个帖子就会出现,所以我想我会分享这个我发现的好例子......

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

于 2013-03-27T14:24:24.170 回答