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? P>
Quelqu'un peut-il fournir un script NSIS pour vérifier l'installation Java basée sur des clés inscrites? P>
3 Réponses :
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
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 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. p> p> $ JavainStallationPath code>.
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