Obtenir le n° de version de Oo par programmation via Java ?

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Sylvain Spinelli
Fraîchement OOthentifié
Messages : 2
Inscription : 30 mars 2006 19:22

Obtenir le n° de version de Oo par programmation via Java ?

Message par Sylvain Spinelli »

Bonjour,

Je pilote Oo (transformations, exports, extractions,...) via une application Java. Pour contourner les régressions de la 2.0.2 (l'export PDF notemment) je voudrais connaitre la version de Oo avec laquelle mon appli java "dialogue".

La solution doit être triviale, mais je n'ai pas trouvé ! Quelqu'un a une idée ?

Merci

Sylvain
Dernière modification par Sylvain Spinelli le 31 mars 2006 09:28, modifié 1 fois.
Oo 2.0.2, Windows XP
jeromeC
Membre OOrganisé
Membre OOrganisé
Messages : 50
Inscription : 24 mars 2006 22:19
Localisation : France - Nantes

Message par jeromeC »

Pour obtenir la dernière version d'OpenOffice manuellement, il suffit d'ouvrir un doc openoffice, faire Aide - A propos de... et on a la version installée.
Mais bon, je pense que tout le monde y avait pensé ! :wink:

Cette information se retrouve dans un fichier Setup.xcu qui se trouve dans :
C:\Documents and Settings\user\Application Data\OpenOffice.org2\user\registry\data\org\openoffice

C'est un fichier xml qu'on peut consulter en modifiant l'extension tout simplement.

Il y a cette macro BASIC qui permet de récupérer cette propriété :

Code : Tout sélectionner

Sub OOoVersion() As String
  Dim args(0) As new com.sun.star.beans.PropertyValue
  oConfigProvider = createUnoService("com.sun.star.configuration.ConfigurationProvider")
  args(0).Name = "nodepath"
  args(0).Value = "/org.openoffice.Setup/Product"
  oSettings = oConfigProvider.createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess", args())
  OOOVersion= oSettings.getByName("ooSetupVersion")
  msgbox OOOVersion
End Sub
Lancer OOoVersion() vous retournera la version OpenOffice.


Il y a bien aussi la commande

Code : Tout sélectionner

GetSolarVersion()

que l'on peut taper directement dans l'éditeur de macros mais c'est une commande StarBasic qui renvoie 645 pour les version 1.1.x et 680 pour les versions 2.x

Jérôme.
Windows XP SP2 + Ooo 2.0.2 (US)
glafa
Membre lOOyal
Membre lOOyal
Messages : 46
Inscription : 17 févr. 2006 09:43
Localisation : 27180

Message par glafa »

Bonjour,
Je suis étonné de cette question : d'une part parcequ'elle a déjà fait l'objet de plusieurs articles et surtout, et c'est pour cela que je me permets d'intervenir, parcequ'il s'agit d'un sujet commun à presque tous les logiciels.
D'une manière habituelle le menu "Aide" comporte un "À propos" qui donne la version du logiciel; même si, comme naguère pour OOo, ce n'est pas toujours suffisamment explicite.
OOo 2.0.2 sous WinXP SP2 - Que d'eau, que d'eau!
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25184
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Message par Dude »

glafa a écrit :D'une manière habituelle le menu "Aide" comporte un "À propos" qui donne la version du logiciel.
Sauf que :
Sylvain Spinelli a écrit :Je pilote Oo (transformations, exports, extractions,...) via une application Java.
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
glafa
Membre lOOyal
Membre lOOyal
Messages : 46
Inscription : 17 févr. 2006 09:43
Localisation : 27180

Message par glafa »

Dont acte; l'enthousiasme de la jeunesse est desservi par le manque d'attention (ou la vue qui baisse); avec mes excuses.
OOo 2.0.2 sous WinXP SP2 - Que d'eau, que d'eau!
Sylvain Spinelli
Fraîchement OOthentifié
Messages : 2
Inscription : 30 mars 2006 19:22

Message par Sylvain Spinelli »

Merci pour cette réponse qui m'éclaire un peu, mais la valeur renvoyée est seulement "2.0", sans précision du numéro mineur de version, ce qui m'intéresse.

Pour ceux que ca interresse, voici la traduction en java de la méthode :

Code : Tout sélectionner

        XComponentContext vBootstrapContext = Bootstrap.bootstrap();
        XMultiComponentFactory vServiceMgr = vBootstrapContext.getServiceManager();
        XMultiServiceFactory vConfigProvider = (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, vServiceMgr.createInstanceWithContext("com.sun.star.configuration.ConfigurationProvider", vBootstrapContext));

        PropertyValue vProps[] = new PropertyValue[1];
        vProps[0] = new PropertyValue();
        vProps[0].Name = "nodepath";
        vProps[0].Value = "/org.openoffice.Setup/Product";

        Object vSettings = vConfigProvider.createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess", vProps);
        XNameAccess vSettingsAccess = (XNameAccess) UnoRuntime.queryInterface(XNameAccess.class, vSettings);

        //Publication du numéro de version
        Object vVersion = vSettingsAccess.getByName("ooSetupVersion");
        System.out.println("version=" + vVersion);
        
        //Récupération de toutes les variables disponibles
        String[] vNames = vSettingsAccess.getElementNames();
        for (int i = 0; i < vNames.length; i++) {
            System.out.println(vNames[i] + " = " + vSettingsAccess.getByName(vNames[i]));
        }
Le dernière partie de la méthode nous affiche toutes les propriétés disponibles. Le résultat chez moi est le suivant :

ooName = OpenOffice.org
ooOpenSourceContext = 1
ooSetupExtension =
ooSetupVersion = 2.0
ooXMLFileFormatName = OpenOffice.org
ooXMLFileFormatVersion = 1.0


Quelqu'un connaitrait-il le moyen d'obtenir le numéro "complet" de la version ?


Merci

Sylvain
Oo 2.0.2, Windows XP
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Message par bm92 »

Sylvain Spinelli a écrit :Quelqu'un connaitrait-il le moyen d'obtenir le numéro "complet" de la version ?
Sous Windows et en version 2.0.2, il existe un fichier version.ini dans le répertoire \C:\Program Files\OpenOffice.org 2.0\program\
Ce fichier contient en texte, pour la version 2.0.2 :
buildid=680m5(Build:9011)
Je ne sais pas si ce fichier version.ini existe dans toutes les versions antérieures à 2.0.2. Il n'est pas disponible sous 1.1.x. Je ne sais pas s'il est disponible sous Linux ou Mac.

Pour la 2.0.1 le buildid est 680m1(Build:8990)
Pour la 1.1.4 le buildid est 645m52(Build:8824)

Je n'ai pas trouvé où est stocké le "2.0.2", qui serait bien plus pratique.
Bernard

OpenOffice.org 1.1.5 fr / Apache OpenOffice 4.1.1 / LibreOffice 5.0.5.2 (X64)
MS-Windows 7 SP1 64bits Familial
smonsarr
Fraîchement OOthentifié
Messages : 1
Inscription : 03 avr. 2006 08:32

Message par smonsarr »

bm92 a écrit : Je ne sais pas si ce fichier version.ini existe dans toutes les versions antérieures à 2.0.2. Il n'est pas disponible sous 1.1.x. Je ne sais pas s'il est disponible sous Linux ou Mac.
Pour la version 2.0.2, 2.0.1 (et je pense la 2 aussi) sous Mac et linux ce fichier s'appelle versionrc et il est également dans le dossier program de OO. Ce fichier contient:
buildid, ProductPatch, ProductSource, ProductMajor, ProductMinor, ProductBuildid et AllLanguages
Parcontre, pour les versions 2 betas soit 1.9.x (comme la 1.9.104 fourni avec fedora core 4 sans maj, ou dans ubuntu 5.10), ce fichier n'existe pas et cette info se trouve dans: bootstraprc (bootstrap.ini sous windows).