Versionsabfrage LO - AOO

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

moritz
*****
Beiträge: 216
Registriert: Mi, 20.10.2004 20:54

Versionsabfrage LO - AOO

Beitrag von moritz »

Hallo, mittlerweile gibt es Unterschiede zwischen ApacheOpenOffice und LibreOffice, z.B. kennt LO Borderline2, AOO aber nicht.
Wie kann man die genaue Programmversion abfragen?
Oder wie kann man testen, ob Boderline2 eine gültige Struktur ist?
Die Abfrage soll aus einem Delphi- Programm erfolgen.
Danke
Moritz
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Re: Versionsabfrage LO - AOO

Beitrag von pmoegenb »

Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
moritz
*****
Beiträge: 216
Registriert: Mi, 20.10.2004 20:54

Re: Versionsabfrage LO - AOO

Beitrag von moritz »

Danke, das ist wirklich eine blöde Situation.
Trotzdem muss es eine Möglichkeit geben, mit der man ermitteln kann, ob das Makro unter AOO oder LO und in welcher Version von AOO oder LO läuft. Wenn ich die Abfrage in Starbasic weiß, sollte eine Abfrage auch mit delphi möglich sein.
Vielen Dank
Moritz
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Re: Versionsabfrage LO - AOO

Beitrag von pmoegenb »

Z. B. hiermit http://www.dannenhoefer.de/faqstarbasic ... tstel.html. Übrigens http://www.dannenhoefer.de/faqstarbasic/index.html ist die erste Anlaufstelle wenn es um StarBasic geht.
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
moritz
*****
Beiträge: 216
Registriert: Mi, 20.10.2004 20:54

Re: Versionsabfrage LO - AOO

Beitrag von moritz »

Ich danke dir, aber so richtig hilft das noch nicht weiter.
Bei mir wird dann 4.1 angezeigt. OK, AOO hat noch keine Version 4.1.
Ich denke, hier werden die Entwickler noch was tun müssen.
Trotzdem vielen Dank für deine Hilfe.
Moritz
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Re: Versionsabfrage LO - AOO

Beitrag von pmoegenb »

moritz hat geschrieben:Ich denke, hier werden die Entwickler noch was tun müssen.
Das glaube ich nun weniger, dass sich daran etwas ändern wird. Stattdessen müsstest Du über Object-Pascal die Registry auslesen.
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Versionsabfrage LO - AOO

Beitrag von balu »

Hallo Moritz,

normalerweise sind die Seiten von Dannenhöfer schon mal nicht schlecht, aber in diesem Falle helfen sie nicht wirklich weiter. Denn das verlinkte Beispielmakro gibt ja nur eine 2-stellige Zahl aus. Und außerdem geht es auch extrem kürzer, bei einer 3-stelligen Zahl.

Code: Alles auswählen

sub Versionsnummer
	print GetSolarVersion
end sub
Das Ergebnis ist dann ein String in der Art von z.B.: 330


Dann gibts noch eine Versionsnummer ausgabe mit diesem Code.

Code: Alles auswählen

sub versi
	print ThisComponent.BuildId
end sub
Das könnte dann z.B. so aussehen: 330$9567



Beide Code Beispiele helfen dir aber nicht wirklich weiter um zu erfahren welches Office verwendet wird. Das könntest Du auf Basis des folgenden Code erfahren.

Code: Alles auswählen

sub versi
	print ThisComponent.getDocumentInfo.DocumentProperties.Generator
end sub
Das Ergebnis könnte dann z.B. bei OOo so aussehen:
OpenOffice.org/3.3$Win32 OpenOffice.org_project/330m20$Build-9567

Und bei LO:
LibreOffice/3.3$Win32 LibreOffice_project/330m19$Build-401

Wie unschwer zu erkennen ist, habe ich das mit OOo 3.3.0 und LO 3.3.0 getestet. Ich habe wohl auch noch andere OOo/LO/AOO-Office, aber die beiden genannten sind momentan als einzige mit xray ausgestattet. Ob Du ein verwertbares Ergebnis in den xxx-4.x.x Versionen bekommst, kann ich dir nicht sagen, da ich diese nicht habe.
Deshalb such hier im Forum mal nach den nützlichen Tools; xray oder mri.

Du könntest dann ja wie folgt vorgehen, um dein Ziel zu erreichen.
1.
Mit GetSolarVersion die Versionsnummer auslesen, und verarbeiten.

2.
Mit dem letzt zitierten Code und ein paar Funktionen zur Stringverarbeitung, das verwendete Office auslesen.




Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
moritz
*****
Beiträge: 216
Registriert: Mi, 20.10.2004 20:54

Re: Versionsabfrage LO - AOO

Beitrag von moritz »

Danke Balu,
so gehts. Unter LO 4.1 lautet der Befehl
ThisComponent.GetDocumentProperties.Generator

Mit AOO kann ichs jetzt nicht mehr testen, habs erstmal wieder entfernt.
Trotzdem will ich AOO im Auge behalten, da die Verwaltungen wohl mehr AOO einsetzen als LO.
Bei AOO sind zwar die bunten Desktop- Icons schöner, in LO habe ich aber die Personas und ich denke, LO ist in der Entwicklung etwas weiter. Da kann ich mich aber auch täuschen. Jetzt habe ich ich jedenfalls die Desktop- Icons von LO bei Windows durch Icons von AOO ersetzt und AOO wieder gelöscht.
Vielen Dank
Moritz
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Versionsabfrage LO - AOO

Beitrag von RobertG »

Hallo *,

ich muss diesen Thread noch einmal aufgreifen, weil ich vor dem gleichen Problem stehe (Versionsabfrage), die gezeigten Wege aber bisher nur begrenzt für mich nutzbar sind.
GetSolarVersion() gibt mir die Version des Nutzers mit den ersten beiden Ziffern aus. Eigentlich benötige ich auch die dritte Ziffer, da sich z.B. in LO bei der 4.1.1 die Behandlung des Datumsformates geändert hat. Das kann ich aber noch irgendwie umgehen.
ThisComponent.getDocumentInfo.DocumentProperties.Generator gibt mir das Programm an, mit dem eine bestimmte Datei erstellt wurde. Egal, ob ich das Makro in AOO oder LO starte, egal auch mit welcher Version: Ich sehe immer, dass das Dokument unter LibreOffice 3.3.0 erstellt wurde.
Ich suche also weiterhin danach, wie ich so etwas auslesen kann wie z.B. "AOO400m3" - eben die Information, die unter Hilfe → Info zu ... zu lesen ist.

Gruß

Robert
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Versionsabfrage LO - AOO

Beitrag von F3K Total »

Hallo Robert,
hilft dies?
Bei mir kommt:
Version.png
Version.png (5.63 KiB) 7176 mal betrachtet
Gruß R
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Versionsabfrage LO - AOO

Beitrag von RobertG »

Hallo R.,

das hatte ich auch gefunden, aber noch nicht getestet. Unter LO gibt mir das Ganze aber auch nur die ersten beiden Ziffern, jetzt getrennt durch einen Punkt, heraus: 4.1

Die wesentliche Information fehlt weiterhin: AOO oder LO? Jetzt hätte ich allerdings ein Hintertürchen: Ich lasse das entsprechende Makro durchlaufen und sehe nach, ob 3 Ziffern enthalten sind - dann ist's AOO. Aber ob das auf Dauer der richtige Weg ist ...

Gruß

Robert
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Versionsabfrage LO - AOO

Beitrag von F3K Total »

hallo Robert,
mach mal ein XRAY auf aSettings(hier LO 4.2.0):

Code: Alles auswählen

ooName                    string                           "LibreOffice" 
ooOpenSourceContext       long                                         1  
ooSetupExtension          string                                  ".0.4" 
ooSetupVersion            string                                   "4.2"  
ooSetupVersionAboutBox    string                               "4.2.0.4"  
ooSetupVersionAboutBoxSuffix string                                   ""  
ooVendor                  string               "The Document Foundation"  
ooXMLFileFormatName       string                        "OpenOffice.org"  
ooXMLFileFormatVersion    string                                   "1.0" 
Alles da!
Du kannst also

Code: Alles auswählen

OOOVersion = aSettings.getByName("ooSetupVersion")
durch

Code: Alles auswählen

OOOVersion = aSettings.getByName("ooSetupVersionAboutBox")
ersetzen um den Wert der Hilfe (About) zu bekommen.
Gruß R
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Versionsabfrage LO - AOO

Beitrag von RobertG »

Hallo R,

das wars!

Code: Alles auswählen

FUNCTION OfficeVersion() AS STRING
  Dim aSettings, aConfigProvider
  Dim aParams2(0) As new com.sun.star.beans.PropertyValue
  Dim sProvider$, sAccess$
  sProvider = "com.sun.star.configuration.ConfigurationProvider"
  sAccess   = "com.sun.star.configuration.ConfigurationAccess"
  aConfigProvider = createUnoService(sProvider)
  aParams2(0).Name = "nodepath"
  aParams2(0).Value = "/org.openoffice.Setup/Product"
  aSettings = aConfigProvider.createInstanceWithArguments(sAccess, aParams2())
  OfficeVersion = aSettings.ooName + "|" + aSettings.ooSetupVersionAboutBox
END FUNCTION
Das zeigt mir die Officeversion ausgeschrieben und die genaue Version an.

Vielen Dank.

Robert
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Makro Version LO AOO LibreOffice OpenOffice auslesen

Beitrag von F3K Total »

Hallo Robert,
einen habe ich noch gefunden, mit

Code: Alles auswählen

Function OOoBuildID() As String
  Dim aSettings, aConfigProvider
  Dim aParams2(0) As new com.sun.star.beans.PropertyValue
  Dim sProvider$, sAccess$
  sProvider = "com.sun.star.configuration.ConfigurationProvider"
  sAccess   = "com.sun.star.configuration.ConfigurationAccess"
  aConfigProvider = createUnoService(sProvider)
  aParams2(0).Name = "nodepath"
  aParams2(0).Value = "/org.openoffice.Setup/Office"
  aSettings = aConfigProvider.createInstanceWithArguments(sAccess, aParams2())
  OOoBuildID = aSettings.getByName("LastCompatibilityCheckID")
End Function
bekommt man zusätzlich die BuildID
BuildID.png
BuildID.png (6.1 KiB) 7152 mal betrachtet
Zuletzt geändert von F3K Total am Sa, 08.02.2014 21:48, insgesamt 1-mal geändert.
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Versionsabfrage LO - AOO

Beitrag von RobertG »

Hallo R.,

ich merke jetzt erst richtig, wozu doch XRay taugt. Da hätte ich mir schon früher so manchen Code vereinfachen können.

Mir reicht auf jeden Fall in diesem Zusammenhang die Art des Offices, damit ich LO und AOO unterscheiden kann, und eben die genaue Version, damit solche Sachen wie die unterschiedliche Ansprache des Datumsfeldes berücksichtigt werden können.
Ich nehme an, dass gerade die unterschiedliche Entwicklung des Codes dazu beiträgt, dass noch viele Leute nach einem Thread wie diesem suchen. Leider ist der Thread ja über die Suchfunktion für den Nichtwissenden nicht so leicht zu finden. Gebe ich in der Suchfunktion des Forums "Version" ein, so sagt mir das natürlich: viel zu viele Treffer. Erst als ich GetSolarversion() als Tipp aus der LO-Mailingliste bekam habe ich hier einen Ansatz gefunden, um schließlich einen passenden Thread zu finden.

Gruß

Robert
Antworten