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