Bonjour,
nous avons développé une application RCP (basée sur Eclipse Indigo SR2) contenant un certain nombre de features:
- MyFeatureProduct (qui contient les features dépendantes suivante)
- Feature1
- Feature2
- Feature3
J'ai configuré l'application pour la rendre "updatable" en suivant le tutoriel suivant : http://www.ralfebert.de/archive/ecli...s_tutorial_36/
Voici les différentes questions et les différents problèmes que je rencontre.
J'ai créé et buildé un site contenant toutes les features pouvant être mises à jour dans l'application. J'y ai ajouté la feature de mon product MyFeatureProduct.
- Action d'installation (getProvisioningUI().openInstallWizard): mon action ouvre le wizard d'install, je configure l'adresse de l'update site et toutes les features apparaissent. Je masque les features déjà installées avec la checkbox prévue à cet effet, et il ne reste plus que Feature1en version 1.0.1 (version incrémentée pour mon test) qui est sélectionnable.
Lorsque je clique sur le bouton next, j'ai le message d'erreur suivant qui apparait:
Je pensais que c'était parceque la version de MyFeatureProduct version était tuojours 1.0.0 donc j'ai ajouté la version 1.0.1 au fichier site.xml que j'ai buildée, mais quand j'essaye de mettre à jour MyFeatureProduct et Feature1 de la version 1.0.0 à la version 1.0.1 j'ai la même erreur (mais sur MyFeatureProduct ).
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 Your original request has been modified. "Feature1" is already installed, so an update will be performed instead. Cannot complete the install because of a conflicting dependency. Software being installed: Feature1 1.0.1 (my.feature1.feature.feature.group 1.0.1) Software currently installed: MyFeatureProduct 1.0.0 (my.myfeatureproduct 1.0.0) Only one of the following can be installed at once: Feature1 1.0.0 (my.feature1.feature.feature.jar 1.0.0) Feature1 1.0.1 (my.feature1.feature.feature.jar 1.0.1) Cannot satisfy dependency: From: MyFeatureProduct 1.0.0 (my.myfeatureproduct 1.0.0) To: my.feature1.feature.feature.group [1.0.0] Cannot satisfy dependency: From: Feature1 1.0.0 (my.feature1.feature.feature.group 1.0.0) To: my.feature1.feature.feature.jar [1.0.0] Cannot satisfy dependency: From: Feature1 1.0.1 (my.feature1.feature.feature.group 1.0.1) To: my.feature1.feature.feature.jar [1.0.1]
Je suis persuadé d'avoir oublié ou mal compris un détail important mais je n'arrive pas à mettre le doigt dessus.
- Action de mise à jour (getProvisioningUI().openUpdateWizard(false, operation, job)): j'ai ajouté un fichier p2.inf à côté de mon .product, je l'ai ajouté à mon build.properties:
Lorsque j'essaye de mettre à jour, j'ai le message => No update has been found.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 instructions.configure=\ org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(type:0,location:file${#58}/C:/path_to_my_update_site/);\ org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(type:1,location:file${#58}/C:/path_to_my_update_site/);
J'ai ajouté le code suivant à la méthode ApplicationWokbenchAdvisor::postStartup:
=> No update has been found.
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 static String configureRepositoryManager(final String repo) { final ProvisioningSession session = ProvisioningUI.getDefaultUI().getSession(); final RepositoryTracker repoMan = ProvisioningUI.getDefaultUI().getRepositoryTracker(); if (repo == null || repo.isEmpty()) { if (repoMan != null) { repoMan.removeRepositories(repoMan.getKnownRepositories(session), session); repoMan.clearRepositoriesNotFound(); } return null; } URI uri = repoMan.locationFromString(repo); if (uri == null) { return getI18N().getString("error.malformed.uri.repository"); } else { if (uri.getScheme() == null || !uri.getScheme().equals("http")) { try { uri = repoMan.locationFromString("file://" + repo); uri.toURL(); } catch (MalformedURLException e) { try { uri = repoMan.locationFromString("http://" + repo); uri.toURL(); } catch (MalformedURLException e1) { // Error return getI18N().getString("error.malformed.uri.repository"); } } } } repoMan.removeRepositories(repoMan.getKnownRepositories(session), session); repoMan.clearRepositoriesNotFound(); repoMan.addRepository(uri, "My application repository", ProvisioningUI.getDefaultUI().getSession()); return null; }
Je bloque depuis longtemps sur ces problèmes, donc n'importe quelle piste sera la bienvenue.
Merci d'avance
PS: Concernant la partie "install", ce qui est étrange, c'est que lorsque je lance l'application à partir d'un Run Eclipse, il détecte bien les features de l'update site mais ne les considère pas comme installées (la case à cocher ne masque aucune feature), et si je clique sur next, l'install se déroule sans problème...
Partager