IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Système de mise à jour automatique


Sujet :

Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 9
    Par défaut Système de mise à jour automatique
    Salut , je dois réaliser un système de mise à jour automatique en java d'une application développée en JAVA/SWING , qui inclut une base de données locale . Le système devra permettre la mise à jour aussi bien de l'exécutable que de la base de données . J'ignore comment procéder , est-ce quelqu'un pourrait m'aider?

  2. #2
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    1) Vérification des mises à jour
    Une URL à appeler dans le code, ca permet soit de récupérer directement la date et le numéro de la dernière version, soit ca télécharge un fichier qui contient ces données.

    2) Téléchargement
    En règle en général, le téléchargement s'effectue sous la forme d'un patch (On ne retélécharge pas toute l'application. Le fichier mentionné au point (1) peut être utilisé pour récupérer une URL de téléchargement.

    3) Application de la mise à jour
    Soit l'application est construite sur un "socle de lancement" : un nombre minimal de classe qui vérifie s'il y a un patch, permet de lancer le programme principale dans un classloader spécifique, etc. Dans ce cas il faut arrêter le programme principale et exécuter la fonction patch du "socle de lancement". Celui-ci écrase les fichiers par celui du patch et relance l'application.
    La migration de la base de données peut soit être confier au "socle de lancement" via un script / jeu de classes présent dans le patch, soit par l'application principale qui vérifie l'état de la base de données à son redémarrage.

    Autrement je conseillerai de lancer un programme (qui est dans le patch) qui va attendre l'arrêt de l'application, arrêter l'application, ensuite le nouveau programme applique le patch (migration de la base de données en option) comme décrit précédemment. Puis relance l'application principale.
    (Je n'ai pas d'idée sur l'implementation de cette solution)
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 9
    Par défaut
    Merci de votre réponse .

    Dans mon cas , c'est plus simple . A chaque mise à jour , on doit re-télécharger toute l'application. Sauf que je dois gérer les dépendances , çad une mise à jour d'une base de donnnées doit marcher avec quelle fichier exécutable mis à jour .

    Quelqu'un a d'autres pistes ?

  4. #4
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Je te l'ai dit tu le fais au lancement de ton application ou alors via un script/programme après avoir fait l'installation de la nouvelle version.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 9
    Par défaut
    merci encore , est-ce que quelqu'un aurait un code source pour commencer?

  6. #6
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ALTER TABLE FOO ADD COLUMN BAR VARCHAR2(50);
    INSERT INTO CONSTANT(KEY,VALUE) VALUES ('FOO','BAR');
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 9
    Par défaut
    Citation Envoyé par Nemek Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ALTER TABLE FOO ADD COLUMN BAR VARCHAR2(50);
    INSERT INTO CONSTANT(KEY,VALUE) VALUES ('FOO','BAR');
    très drôle

  8. #8
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Soit plus précis alors ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    public class Main
    {
      public static void main(String[] args)
      {
        Connection conn = DriverManager.getConnnection(...);
        Statement stmt = conn.createStatement();
        ResultSet rset = stmt.executeQuery("SELECT numero FROM version");
        int version = -1;
        DbInstallationManager installer = new DbInstallationManager(conn)
        if (rset.next())
        {
          version = rset.getInteger(1);
          // Migration error
          if (rset.next())
          {
             installer.delete();
             installer.create();
          }
          // Launch migration (if required)
          else if (!installer.isCurrent(version))
          {
            // Launch migration process from given version to current
            // Throws an exception if migration from this version to current isn't supported
            installer.update(version);
          }
     
        }
        // No version
        else
        {
             installer.create();
        }
      }
    }
    Pense à gérer une numérotation différente entre la version de bases de données et celle du code.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

Discussions similaires

  1. Système de mise à jour automatique
    Par corgato dans le forum Qt
    Réponses: 9
    Dernier message: 30/11/2009, 22h36
  2. Mise en place d'un système de mise à jour automatique
    Par Diody dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 06/10/2009, 16h59
  3. Réponses: 0
    Dernier message: 29/06/2009, 17h55
  4. système de mise à jour automatique
    Par eponette dans le forum Web & réseau
    Réponses: 2
    Dernier message: 24/08/2005, 21h17
  5. Mise à jour automatique d'un JTextAera
    Par Vlakyron dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 25/09/2004, 21h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo