8
votes

Script NSIS pour l'installation Java

Je veux installer Java à l'aide d'un script NSIS, mais je dois savoir si Java est installé ou non dans le système (Windows). Basé sur les touches de registre, comment pouvons-nous vérifier si Java est installé ou non?

Quelqu'un peut-il fournir un script NSIS pour vérifier l'installation Java basée sur des clés inscrites?


0 commentaires

3 Réponses :


3
votes

Je ne l'ai pas compilé, mais je vais essayer de suivre. J'ai choisi la clé de registre basée sur Comment puis-je détecter l'installation? Sun Jre sur Windows? .

;--------------------------------
;Defines

  !define JavaRegKey 'HKLM "Software\JavaSoft\Java Runtime Environment" ""'

;--------------------------------
;Installer Sections
Section 'Java Runtime' SecJava

  SetOutPath '$TEMP'
  SetOverwrite on
  File 'c:\<yourdir>\javasetup.exe'
  ExecWait '$TEMP\javasetup.exe' $0
  DetailPrint '..Java Runtime Setup exit code = $0'
  Delete '$TEMP\javasetup.exe'

SectionEnd

;--------------------------------
;   Functions
Function .onInit

  ReadRegStr $R0 ${JavaRegKey}
  StrCmp $R0 "" JavaMissing JavaFound

  JavaFound: 
  !insertmacro UnselectSection ${SecJava}
  Goto JavaCheckDone

  JavaMissing:
  !insertmacro SelectSection ${SecJava}

  JavaCheckDone:

FunctionEnd


0 commentaires

3
votes

Le fragment suivant des chèques de code Si Java est installé (JRE ou JDK). Si Java n'est pas installé, cela l'installera. Le script enregistre également le chemin d'accès à Java dans une variable $ JavainStallationPath . xxx

Je pense que vous pouvez également mettre le code ci-dessus dans une fonction et l'appeler où que vous préférez dans votre script SNS.


0 commentaires

2
votes

Un autre exemple avec le programme d'installation en ligne et 64/32 bit

Java min Version P>

Function GetJRE
    MessageBox MB_YESNO "XXXXXX require at least Java 1.5! Do you want to download and install it now?" IDYES doInstall

    Abort
    doInstall:
    StrCpy $2 "$TEMP\Java Runtime Environment.exe"
    nsisdl::download /TIMEOUT=30000 ${JRE_URL} $2
    Pop $R0 ;Get the return value
        StrCmp $R0 "success" +3
        MessageBox MB_OK "Download failed: $R0"
        Quit
    ExecWait $2
    Delete $2  

    Call DetectJRE
FunctionEnd


0 commentaires