apache - NSIS:检测 Tomcat 安装

标签 apache tomcat nsis

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

相关文章:

apache - haproxy 和 apache tomcat 堆栈上的 HTTP/2 使用

electron - 将自定义页面/字段添加到使用 electron-builder 创建的 NSIS 设置

powershell - 安装其他安装程序?

nsis - 我可以在 NSIS 卸载程序中有可选部分吗?

php - PHP 文件上的缓存 header 不起作用

apache - mod_rewrite 使用专有协议(protocol)重定向到 URL

node.js - 当我启动 .js 服务器文件时出现错误 : connect ECONNREFUSED into node. js

java - 域名+nginx+tomcat设置

iphone - 在 iOS 设备上运行 PHP 服务器和 MySQL

tomcat - 指定的服务不作为已安装的服务存在