NSIS – detect problems with Java installations on x64 systems

I have an NSIS installer. At some point, I must check whether Java is installed in the system. If not, it must install it silently It must also return the path to Java because I have to create Java_ Home environment variable

This is the function I wrote to check the Java installation and save the Java path in the variable:

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
            Message@R_721_2419@ 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
             Message@R_721_2419@ MB_OK "Javahome value: $JavaInstallationPath"
        ${EndIf}
     ${EndIf}

NoJava:  
    Message@R_721_2419@ MB_OK "No Java installation detected. Installing Java."
     # Install Java 
    Message@R_721_2419@ 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     
    Message@R_721_2419@ MB_OK "Java installation path: $JavaInstallationPath"    
FunctionEnd

Later in the installer, I installed a service that runs Ruby scripts:

nsExec::ExecToLog 'jruby "$INSTDIR\Application\install\install_service.rb"'

(. RB file will not cause problems, because I tried to hard code the Java path, and everything is normal)

However, everything applies to 32 - bit operating systems However, when I run setup on a 64 bit system, the service will fail to start with error 1067

At first, I thought the findjava function didn't work properly and led to the installation error of the service, but I sent all the results to the message box, and they were exactly what I expected

Unfortunately, the problem is actually this function I deleted this function, I have hard coded $Java installationpath, and the installer works normally

I really don't know what's wrong Please help.

Solution

Windows exit code 1067 refers to "unexpected termination of the process" see http://www.chicagotech.net/troubleshooting/exitcode2.htm

I try to check if there is any problem running jruby on Windows 64 bit, and there is! Check this link:

http://hype-free.blogspot.com/2011/09/running-jruby-on-64-bit-windows.html

But I think if jruby Jar depends on the currently installed Java runtime to run it, but without the Java runtime installed, it may not run at all

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>