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

Eclipse Platform Discussion :

Système de mise à jour - Supprimer une feature


Sujet :

Eclipse Platform

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 15
    Points : 15
    Points
    15
    Par défaut Système de mise à jour - Supprimer une feature
    Bonjour et bonne année à tous !

    Je suis entrain de développer un système de mise à jour pour une application eclipse RCP, j'arrive bien à mettre à jour les features de mon application, seulement les jars des anciennes features qui ont étés mises à jour sont toujours dans le répertoire plugins/, ceux-ci ne s'effacent pas automatiquement, quelqu'un serait-il comment effacer une feature ?
    peut être peut on passer par l'objet IFeatureReference mais je n'ai pas trouvé de moyen ...

  2. #2
    Membre habitué
    Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2007
    Messages : 177
    Points : 145
    Points
    145
    Par défaut
    je crois que tu dois gérer le versionning de feature, si la feature telechargée est plus recente qu'une que tu possede deja elle doit etre supprimée.
    par contre je ne sais pas trop comment cela fonctionne !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Salut stachus,

    Je gère déjà les versions de mes features, j' installe toutes les features distantes qui ont une version supérieure à celles en locales. Mais apparemment ça remplace une ancienne feature par la nouvelle (dans la liste des références de features de l'appli) mais ça ne supprime pas physiquement les fichiers de l'ancienne : dans le répertoire features/ de mon appli, pour une feature qui vient d'être remplacée, j'ai 2 répertoires :
    -> nomFeature_1_12/ (l'ancienne)
    -> nomFeature_1_13/ (la nouvelle)

    Hors quand je relance l'appli une fois upgradée et que je liste les features locales, on ne voit pas apparaître l'ancienne (1.12)
    C'est donc la nouvelle qui est bien utilisée mais les fichiers de l'ancienne ne sont pas supprimés...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 145
    Points : 179
    Points
    179
    Par défaut
    C'est la même chose dans Eclipse.
    Tu remarqueras qu'après une mise à jour, les anciens plugins existent toujours.

    Dans Eclipse tu peux les supprimer en ouvrant Help>Software Updates>Manage Configuration

    Il y a un bouton 'show disabled features' (le 3ème) qui permet d'afficher tout.
    Un clic droit sur un item permet d'effectuer une désinstallation.

    Par contre, je ne sais pas comment intégrer ça dans une appli RCP.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    merci Jense, j'ai un peu avancé grâce à ton renseignement... mais c'est pas encore ça :

    Ce que j'ai fait c'est qu'au Démarrage de l'appli je vérifie systématiquement si il existe des Features dont le status est 'IFeature.STATUS_DISABLED' et je les supprime grâce à la méthode "feature.getSite().remove(feature.getFeature(), monitor);".

    mais ceci a un comportement bizarre :
    1) je lance l'application en version 1.12
    2) L'application ne détecte aucune Feature à effacer, ce qui est normal ...
    3) L'application va chercher les dernières mises à jour sur le site distant et trouve une mise à jour (1.13) , elle installe la mise à jour et force à fermer l'application.
    4) je relance donc l'application en version 1.13
    5) L'application trouve bien la feature 1.12 qui est disabled, et appelle la fonction d'effacement sans erreur.
    6) je ferme l'application et regarde dans le répertoire features/, la 1.13 est présente , mais la 1.12 est toujours aussi présente ...
    7) Je relance l'application et la il trouve que la nouvelle version 1.13 est disabled !!! et lance sa suppression, là je regarde dans le répertoire features et celle-ci est bien supprimée ...
    La je comprends mais vraiment pas ce qu'il se passe ... quelqu'un a une idée???

    Voici le code de ma méthode qui est lancée au tout debut de l'appli pour supprimer les features dont le status est disabled :
    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
    36
    37
    38
    39
    40
    41
    42
    43
     
     /**
         * efface la liste des features non utilisées
         */
       private static void deleteLocalDisabledFeatures(){
            ProgressMonitorDialog pgmD = new ProgressMonitorDialog(Display.getCurrent().getActiveShell());
            try {
                pgmD.run(false, false, new IRunnableWithProgress(){
                    public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
                        ILocalSite ls;
                        try {
                            ls = SiteManager.getLocalSite();
                            final IConfiguredSite ics = ls.getCurrentConfiguration().getConfiguredSites()[0];
     
                            final IFeatureReference[] lfrs = ics.getFeatureReferences();
     
                            for(int i = 0 ; i < lfrs.length ; i++) {
                                IFeatureReference feature = lfrs[i];
     
                                if (ls.getFeatureStatus(feature.getFeature()).getCode() == IFeature.STATUS_DISABLED) {
                                    System.out.println("Suppresion de la fonctionnalité " + feature.getVersionedIdentifier().getIdentifier() 
                                            + " " + feature.getVersionedIdentifier().getVersion().toString());
                                    MessageTools.flashMessage("Removing : " + feature.getVersionedIdentifier().getIdentifier() 
                                            + " " + feature.getVersionedIdentifier().getVersion().toString(),2000);
                                    feature.getSite().remove(feature.getFeature(), monitor);
                                }
                            }
                            ls.save();
                        } catch (CoreException e) {
                            MessageTools.flashMessage("erreur lors de la suppression de la fonctionnalité : " + e,6000);
                            e.printStackTrace();
                        }
     
     
                    }});
            } catch (InvocationTargetException e) {
                // TODO Bloc catch auto-généré
                e.printStackTrace();
            } catch (InterruptedException e) {
                // TODO Bloc catch auto-généré
                e.printStackTrace();
            }
        }

Discussions similaires

  1. Système de mise à jour d'une web application asp.net?
    Par infostars dans le forum ASP.NET
    Réponses: 6
    Dernier message: 10/02/2009, 15h52
  2. Réponses: 3
    Dernier message: 23/05/2008, 09h42
  3. Réponses: 4
    Dernier message: 25/04/2006, 19h41
  4. Mise à jour d'une table avec un fichier csv
    Par blackangel dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 26/05/2005, 14h46

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