安装NSIS时Apache Tomcat服务无法识别JAVA_HOME- PowerShell脚本

nhn9ugyo  于 2022-11-13  发布在  Apache
关注(0)|答案(1)|浏览(166)

我正在为一个需要Apache Tomcat 8作为Windows服务的程序制作一个NSIS安装程序。JAVA_HOME被设置为NSIS安装程序脚本中的环境变量,我制作了Powershell脚本文件来处理Tomcat特定的变量(CATALINA_HOME, JvmMX, JvmArgs),并在最后运行service.bat install
当我独立运行下面的Powershell脚本(设置了JAVA_HOME环境变量)时,service.bat install会安装Tomcat服务,并找到正确的JAVA_HOME路径。
我依靠psExec.nsh插件来执行Powershell脚本(${PowerShellExecFileLog}
我似乎找不到发生这种情况的原因......任何帮助都将非常感谢!我唯一的猜测是,它与32位/64位有关。我确信我错了,所以请纠正我,但我的想法是:系统是64位的,JAVA_HOME环境变量是64位的,但安装程序是32位的,这使得它调用的Powershell是32位的,因此Powershell无法检索64位环境变量。
以下是相关的代码片段:
第一个

s4n0splo

s4n0splo1#

写入注册表不会影响安装程序和可能启动的任何子进程,您还应该更新安装程序进程本身:

!include "winmessages.nsh"
${registry::Write} ...
SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
System::Call 'KERNEL32::SetEnvironmentVariable(t "JAVA_HOME", ts)' "$INSTDIR\amazon_jdk\jdk11.0.12_7" ; Update this process
...
; Start Powershell script...

相关问题