首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSIS -检测x64系统上java安装的问题

NSIS -检测x64系统上java安装的问题
EN

Stack Overflow用户
提问于 2011-08-18 20:00:19
回答 1查看 1.3K关注 0票数 4

我有一个NSIS安装程序,它必须检查系统中是否安装了java,如果没有,则必须静默安装。它还必须将路径返回到java,因为我必须创建JAVA_HOME环境变量。

这是我编写的函数,用于检查java安装并将路径保存到变量中:

代码语言:javascript
复制
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脚本的服务:

代码语言:javascript
复制
nsExec::ExecToLog 'jruby "$INSTDIR\Application\install\install_service.rb"' 

( .rb文件中的内容不会造成问题,因为我已经尝试硬编码到java的路径,并且一切正常)

然而,在32位操作系统上一切都很完美。但是,当我在64位系统上运行安装程序时,该服务将不会启动,返回错误1067.

起初,我认为FindJava 函数不能正常工作,它会导致服务安装错误,但我将所有结果都发送到了消息盒中,它们与预期的完全相同。

不幸的是,问题确实存在于这个函数中。我删除了这个函数,我已经硬编码了$JavaInstallationPath,安装程序也开始工作了.

我真的不知道是怎么回事。拜托救救我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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运行时,那么它可能根本不运行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7113392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档