NSIS installeur avec Java Web Start

Le client riche DocDoku est une application déployée à l’aide de Java WebStart. Cette technologie nous donne entière satisfaction et nos utilisateurs bénéficient ainsi du système de mise à jour automatique. Cependant, JWS a le léger inconvénient de nécessiter un environnement Java déjà installé.
Nous avons donc créé un setup.exe, avec NSIS. NSIS est un installeur open source uniquement pour Windows. Son utilisation à base de scripts sans assistant ni même interface graphique peut sembler un peu rugueuse mais on finit par s’y faire et apprécier la souplesse que cela procure.
Notre installeur devait être capable de :

  1. vérifier dans le registre la présence d’une JVM 1.5
  2. procéder à son téléchargement et son installation si besoin
  3. installer l’application DocDoku tout en maintenant le « lien » Java Web Start pour conserver la fonctionnalité de maj auto.

Voici notre script NSIS:


; Client Installer

;--------------

Name "DocDoku Client"
Caption "DocDoku Client Installer"
OutFile "docdoku.exe"

!define JRE_VERSION "1.5"
!define JRE_URL "http://dlc.sun.com/jdk/jre-1_5_0_01-windows-i586-p.exe"

Section

Call DetectJRE
ReadRegStr $1 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion"
ReadRegStr $0 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment\$1" "JavaHome"
ExecWait "$0\bin\javaws.exe -import -silent -shortcut http://www.docdoku.com/apps/docdoku_client.jnlp" $4

StrCmp $4 0 done
MessageBox MB_OK "Failed: your Java Runtime Environment is corrupted, please uninstall it and retry"
done:

SectionEnd

Function GetJRE

MessageBox MB_OK "DocDoku uses Java 1.5, it will now \
be downloaded and installed"
StrCpy $3 "$TEMP\Java Runtime Environment.exe"
nsisdl::download /TIMEOUT=30000 ${JRE_URL} $3
Pop $R0 ;Get the return value
StrCmp $R0 "success" +3
MessageBox MB_OK "Download failed: $R0"
Quit

ExecWait $3
Delete $3
FunctionEnd

Function DetectJRE
ReadRegStr $2 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" \
"CurrentVersion"
StrCmp $2 "" download
StrCpy $8 ${JRE_VERSION} 1
StrCpy $9 $2 1
IntCmp $9 $8 0 download done
StrCpy $8 ${JRE_VERSION} 1 2
StrCpy $9 $2 1 2
IntCmp $9 $8 done download done

download:

Call GetJRE

done:

FunctionEnd

Seul petit défaut, nous ne disposons pas d’URL permettant de télécharger (sans aucune interaction utilisateur) le JRE 1.6 ; mais seulement le 1.5.

3 Commentaires

  1. Flo

    Une autre solution pour éviter l’utilisation de NSIS aurait été de simplement créer une page HTML contenant du code permettant de vérifier la présence de Java et de le télécharger et l’installer si nécessaire. Cette page HTML aurait redirigé directement vers le JNLP lançant l’appli Java Web Start.

    Les utilisateurs cliqueraient sur le lien vers cette page HTML.

  2. The point of view of your article has taught me a lot, and I already know how to improve the paper on gate.oi, thank you. https://www.gate.io/pt/signup/XwNAU

  3. Can you be more specific about the content of your article? After reading it, I still have some doubts. Hope you can help me. https://www.binance.com/sk/register?ref=OMM3XK51

Comments are closed.