我有一个NSIS安装程序,它必须检查系统中是否安装了java,如果没有,则必须静默安装。它还必须将路径返回到java,因为我必须创建JAVA_HOME环境变量。
这是我编写的函数,用于检查java安装并将路径保存到变量中:
Var JavaInstallationPath
Function FindJava
StrCpy $1 "SOFTWARE\JavaSoft\Java Runtime Environment"
StrCpy $2 0
ReadRegStr $2 HKLM "$1" "CurrentVersion"
${If} $2 == ""
Goto DetectTry2
${Else}
ReadRegStr $5 HKLM "$1\$2" "JavaHome"
${If} $5 == ""
Goto DetectTry2
${Else}
StrCpy $JavaInstallationPath $5
Messagebox MB_OK "Javahome value: $JavaInstallationPath"
${EndIf}
${EndIf}
DetectTry2:
ReadRegStr $2 HKLM "SOFTWARE\JavaSoft\Java Development Kit" "CurrentVersion"
${If} $2 == ""
Goto NoJava
${Else}
ReadRegStr $5 HKLM "SOFTWARE\JavaSoft\Java Development Kit\$2" "JavaHome"
${If} $5 == ""
Goto NoJava
${Else}
StrCpy $JavaInstallationPath $5
Messagebox MB_OK "Javahome value: $JavaInstallationPath"
${EndIf}
${EndIf}
NoJava:
Messagebox MB_OK "No Java installation detected. Installing Java."
# Install Java
Messagebox MB_OK "Running x32"
ExecWait "$INSTDIR\temp\jre-6u26-windows-i586.exe"
# get jre path value after installation
StrCpy $1 "SOFTWARE\JavaSoft\Java Runtime Environment"
StrCpy $2 0
ReadRegStr $2 HKLM "$1" "CurrentVersion"
ReadRegStr $5 HKLM "$1\$2" "JavaHome"
StrCpy $JavaInstallationPath $5
Messagebox MB_OK "Java installation path: $JavaInstallationPath"
FunctionEnd 在安装程序的后面,我安装了一个运行ruby脚本的服务:
nsExec::ExecToLog 'jruby "$INSTDIR\Application\install\install_service.rb"' ( .rb文件中的内容不会造成问题,因为我已经尝试硬编码到java的路径,并且一切正常)
然而,在32位操作系统上一切都很完美。但是,当我在64位系统上运行安装程序时,该服务将不会启动,返回错误1067.。
起初,我认为FindJava 函数不能正常工作,它会导致服务安装错误,但我将所有结果都发送到了消息盒中,它们与预期的完全相同。
不幸的是,问题确实存在于这个函数中。我删除了这个函数,我已经硬编码了$JavaInstallationPath,安装程序也开始工作了.
我真的不知道是怎么回事。拜托救救我。
发布于 2011-11-12 02:54:48
然而,
在32位操作系统上一切都很完美。但是,当我在64位系统上运行安装程序时,该服务将不会启动,返回错误1067。
Windows退出代码1067引用“进程意外终止”。请参阅http://www.chicagotech.net/troubleshooting/exitcode2.htm
我试着检查在Windows64位上运行JRuby是否有任何问题,并且存在!请查看此链接:
http://hype-free.blogspot.com/2011/09/running-jruby-on-64-bit-windows.html
但是,我确实认为,如果JRuby .jar依赖于当前安装的.jar运行时来运行,但是没有安装Java运行时,那么它可能根本不运行。
https://stackoverflow.com/questions/7113392
复制相似问题