2011-08-18 45 views
4

我有一個NSIS安裝程序,它必須檢查系統中是否安裝了java,如果沒有,它必須靜默安裝它。它也必須返回到java的路徑,因爲我必須創建JAVA_HOME環境變量。NSIS - 在x64系統上檢測java安裝的問題

這是我寫檢查Java安裝和保存路徑到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和一切就OK的了)

但是,在32位操作系統上,一切正常。但是,當我在64位系統上運行安裝程序,該服務將無法啓動,並返回錯誤1067

起初我以爲FindJava功能無法正常工作,它引起的安裝故障服務,但我將所有結果都發送到了消息框中,而且它們完全如預期。

不幸的是,問題真的在那個功能。我刪除了函數,我已經硬編碼$ JavaInstallationPath,並且安裝程序工作。

我真的不知道什麼是錯的。 請幫忙。

+0

你有沒有得到這個地方?我正在尋找相同的東西 – Simon

回答

1

但是,一切在32位操作系統上都能正常工作。但是, 當我運行在64位系統上安裝程序,該服務將無法啓動, 返回錯誤1067

Windows退出代碼1067是指「進程意外終止。」請參閱http://www.chicagotech.net/troubleshooting/exitcode2.htm

我嘗試檢查在Windows 64位上運行JRuby是否有問題,並且存在!檢查此鏈接:

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

但是,我認爲,如果當前已安裝的JRuby的.jar依賴於Java運行時,使之運行,但沒有安裝,它可能無法運行在所有沒有Java運行時。

相關問題