Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Invité de passage
    Inscrit en
    février 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : février 2011
    Messages : 3
    Points : 1
    Points
    1

    Par défaut Mise à jour auto de fichiers externes via JWS

    Bonjour à toutes les pointures en Java ! Je demande votre aide pour la mise en place d'un système de mises à jour pour un client Java. Après quelques recherches je suis tombé sur le système Java Web Start, effectivement après suivi des tutoriels et des tests ça répondrait aux spécifications, le problème c'est que l'application n'a pas été conçue pour être déployée par JWS ni même par un JAR mais via un installeur setup.exe.

    L'application peut s'exécuter sous la forme d'une archive JAR, mais le JAR n'est pas autonome. Il y a énormément de fichiers externes : des images pour la GUI, des fichiers de conf, de traduction... qui doivent être aussi mis à jour s'il y a changement. Or si j'ai bien lu les spécifications de JWS tout les éléments à déployer/mettre à jour doivent être sous la forme d'archives JAR.

    Il est hors de question (et beaucoup trop long) de modifier l'application à la base, donc je recherche plusieurs solutions :

    - Utiliser des méthodes DownloadService pour mettre à jour les ressources au démarrage de l'application (mais là je sèche)
    - Avoir un setup qui déploie les fichiers locaux non nécessaires à mettre à jour, puis lance un JNLP qui installerait l'application (les classes), les libs ainsi que tous les fichiers sujets aux mises à jour automatiques (encore faut-il que j'arrive a mettre ça dans des JAR).

    Je précise que le déploiement via JWS n'est pas obligatoire, uniquement la mise à jour, même si ça serait préférable d'avoir les deux.

    Donc question : est-il possible de mettre "n'importe quoi" dans un JAR et de mettre à jour ce n'importe quoi via Java Web Start, de façon incrémentale ?
    Si non, de quelles solutions dispose-je ?

  2. #2
    Invité de passage
    Inscrit en
    février 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : février 2011
    Messages : 3
    Points : 1
    Points
    1

    Par défaut

    J'ai réussi sans trop de problème à insérer les fichiers que je voulais dans les Jar et à automatiser toute cette exportation grâce à Eclipse et aux .jardesc, mais l'application ne peut s'exécuter qu'avec certains fichiers présents dans le répertoire d'installation (fichiers de conf...). Je ne peux pas mettre ces fichiers dans des Jar car ils doivent êtres accessibles et modifiables depuis le disque dur, alors que Java Web Start les stockerais dans le cache et les rendrais illisible.

    Mon soucis est donc de permettre à l'application JWS de se lancer avec un paramètre permettant d'importer/de mettre en relation les fichiers "locaux" et l'application. Un genre de "paramètre de répertoire d'exécution Java". Cela existe t-il ?

    Pour illustrer, l'exécution manuelle des Jar sous Linux échoue, alors qu'en lançant le jar avec la commande java -jar test.jar (en plaçant tout dans le répertoire local) fonctionne : le jar est lancé par défaut avec les paramètres de répertoire de la JVM, et n'est plus en relation avec les fichiers nécessaires.

  3. #3
    Invité de passage
    Inscrit en
    mars 2011
    Messages
    9
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2011
    Messages : 9
    Points : 2
    Points
    2

    Par défaut

    Bonjour , je relance le topic , est-ce que quelqu'un pourrait nous aider merci

  4. #4
    Expert Confirmé Sénior
    Avatar de tchize_
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    avril 2007
    Messages
    21 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Service public

    Informations forums :
    Inscription : avril 2007
    Messages : 21 580
    Points : 38 430
    Points
    38 430

    Par défaut

    Citation Envoyé par Djul_ Voir le message
    L'application peut s'exécuter sous la forme d'une archive JAR, mais le JAR n'est pas autonome. Il y a énormément de fichiers externes : des images pour la GUI, des fichiers de conf, de traduction... qui doivent être aussi mis à jour s'il y a changement.
    java webstart ou pas, c'est un très mauvaise habitude de les garder en dehors du jar. On met toujours les images, les ressources bundle (pour les traduction) et la configuration par défaut dans le jar. Après, la configuration spécifique de l'utilisateur (parce que ca existe souvent quand meme) et les trucs comme "les derniers fichiers ouverts" etc, on a plusieurs options.

    Soit on stocke dans un fichier à part (qu'on stockera par exemple dans la $HOME de l'utilisateur), soit en utiliser l'api Preferences, soit, si on est en javawebstart, on peux aussi utiliser l'api "PersistenceService" pour éviter d'avoir à signer les jars.
    Il est hors de question (et beaucoup trop long) de modifier l'application à la base, donc je recherche plusieurs solutions :
    Alors vous l'avez dans le baba. Vous êtes occupé de dire "je cherche une solution pour exécuter avec java webstart une application qui refuse d'être compatible". Rendez la compatible, retirez ou corriger les bourdes qui sont dedans.
    - Utiliser des méthodes DownloadService pour mettre à jour les ressources au démarrage de l'application (mais là je sèche)
    Ce n'est pas destiné à ça
    - Avoir un setup qui déploie les fichiers locaux non nécessaires à mettre à jour,
    Faut savoir, vous voulez les mettre à jour ou pas? Si pas, suffit dans le première ligne de votre main(), de copier depuis l'intérieur du jar vers un dossier quelconque les ressources dont vous avez besoin
    puis lance un JNLP qui installerait l'application (les classes),
    Retirez vous de la tete cette notion d'installation, on installe pas en jnlp.

    Je précise que le déploiement via JWS n'est pas obligatoire, uniquement la mise à jour, même si ça serait préférable d'avoir les deux.
    La mise à jour, c'est le déploiement :/

    Donc question : est-il possible de mettre "n'importe quoi" dans un JAR et de mettre à jour ce n'importe quoi via Java Web Start, de façon incrémentale ?
    Si non, de quelles solutions dispose-je ?
    Non, si c'est du n'importe quoi qui fait du n'importe quoi, écrivez un main qui fait le "nimporte quoi téléchargement" puis qui lancer (via java -jar) le n'importe quoi en question.
    Tchize (Чиз) faq java, cours java, javadoc. Pensez à et
    Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir.

  5. #5
    Invité de passage
    Inscrit en
    mars 2011
    Messages
    9
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2011
    Messages : 9
    Points : 2
    Points
    2

    Par défaut

    Merci de votre réponse , mais est-ce qu'on peut intégrer également la base de donnée locale de l'application client dans le fichier jar?

  6. #6
    Expert Confirmé Sénior
    Avatar de tchize_
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    avril 2007
    Messages
    21 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Service public

    Informations forums :
    Inscription : avril 2007
    Messages : 21 580
    Points : 38 430
    Points
    38 430

    Par défaut

    Tout ce qui est donnée modifiée par le client à perserver, voir mon message plus haut, le plus simple est de les stocker dans la Home directory de l'utilisateur. Pour ce faire:


    Code :
    1
    2
    File home= new File(System.getProperty("user.home"));
    File storageFolder = new File(home,"MonApplication");
    Tchize (Чиз) faq java, cours java, javadoc. Pensez à et
    Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •