OpenOffice.org 2.0.x für Windows mit integr. Rechtschreibung

Post Reply
User avatar
MVdl
Posts: 2
Joined: 21. Dec 2004, 13:40
Location: Horstmar (bei Münster, Westf.)
Contact:

OpenOffice.org 2.0.x für Windows mit integr. Rechtschreibung

Post by MVdl » 27. Oct 2005, 14:49

:wink: OOo_Win_de kommt in der Version 2.0 (am 20.10.2005 veröffentlicht) mit einer MSI-Installation einher. :idea: Damit kann auf die entspr. Methode des Packagers zurück gegriffen werden. :shock: Es gab dabei zwar Problemchens; :lol: die konnten aber gemeistert werden.
:? Leider ist die deutsche Rechtschreibung wieder nicht enthalten und :roll: wie man das DicOOO-tool ohne Mausklicks bedient, konnte ich nicht so recht in Erfahrung bringen. :wink: Letztlich war die Integration mit Empirum dann doch kein großes Problem.

:arrow: Erfahrunsbericht zur Erstellung des MSI-Paketes
Vorbetrachtung:
Das Setup von OpenOffice.org bedurfte zwar der vorherigen Lektüre, bot aber immer wieder die nötigen Optionen zur mehrnutzerfähigen und letztlich auch der unberührten Installation.

Auf die Installation der Vorversionen soll nicht weiter eingegangen werden. Der Aufruf war mit entsprechenden Antwortdateien bzw. Schaltern (von Windows-Klicktokraten als kryptische Befehlsoptionen verunglimpft) aus dem Paket realisierbar. Dabei musste man sich nur etwas orientieren, zu welchem Zeitpunkt die Setup.exe auf dem Server oder auf dem PC lag...

Paketerstellung zur Version 2.0:
Ab Version 2 kommt OOo_Win via MSI daher, sodass man die entsprechende Methode zur Paketierung anwenden kann. Sie verhält sich im Zusammenspiel mit dem "Package Wizard" etwas spröde; die Paketerstellung ist aber dennoch möglich.
OpenOffice rät dringend von einem Update vorheriger Versionen wie 1.1.5 ab; es sei besser, beide Versionen nebeneinander in unterschiedlichen Ordnern zu betreiben. Soll OOo_v2 nicht in "%\ProgramFiles%\OpenOffice.org2" landen (Empirum organisiert ja einen ordentlichen Versionswechsel samt vorheriger Deinstallation der alten Version und mehrere Office-Versionen auf einem PC brauchen bei OOo nicht unbedingt vorgehalten werden...), sollte man im Installationsdialog rechtzeitig von der Standard- zur Benutzerdefinierten Installation wechseln.
Nun aber zurück zur Paketierung mit MSI:
Bei der Installation aus einem Serververzeichnis kam der Packager nicht so recht zum Ziel... Wie auch immer; lag der Installationsordner auf der lokalen Festplatte, war die Paketerstellung doch möglich und die erste Klippe umschifft.
Nachdem das erzeugte Paket auf den Server verschoben war, beschwerte sich allerdings Microsofts msiexec, dass die entsprechenden Dateien nicht mehr im ursprünglichen Ordner zu finden seien! Glücklicherweise ist Empirum ein modulares System und so kam der "MSITransformer" zum Einsatz, der die entsprechende Ziel-MSI auch im Serverordner erstellen konnte und somit die nächste Klippe umschiffte.
Die Installation des Paketes konnte nun endlich getestet werden, scheiterte aber immer wieder, wobei auffiel, dass die blanke MSI-Installation gelaufen sein musste. Ein versehentlicher Deinstallationsaufruf zum Paket brachte aber das erfolgreiche Löschen des Paketes, obwohl es ja eigentlich nicht fertig installiert worden war. Die Analyse ergab, dass OOo meldet den Erfolg der Installation nicht mit dem erwarteten Text meldet (auch bei anderen Produkten gut zu wissen). Folgende Änderung im Environment-Abschnitt der Setup.inf brachte das rettende Ufer mit sonnigem Strand:
;InstSuccessMessage1031=Installationsvorgang erfolgreich abgeschlossen.
InstSuccessMessage1031=Die Installation wurde erfolgreich beendet.


Ein Pferdefuß bleibt noch:
Bis hierhin ist das Paket als reine Maschinen-Installation lauffähig und einige Ferninstallateure meinen, dass das durchaus reicht (bei "KleinWeich" funkt's ja [Räusper] ... also funkt's überhaupt [Räusper, Räusper]).
In den Vorversionen konnte die Mehrnutzerinstallation per Netz- und Clientinstallation bewerkstelligt werde; die Clientinstallation gibt es bei Msi aber nicht mehr und die Reparatur für den Nutzer (msiexec /fu ...) brachte auch nicht das, was man erwartet hätte. Für die Nutzerdaten greift man also besser auf die gute alte SysDiff-Methode zurück.
Beim jeweils ersten Aufruf von OpenOffice werden die Nutzer[innen] um die Angabe ihres Namens sowie die Onlineregistrierung ihrer OOo-Nutzung gebeten und letztlich mit der Übernahmemöglichkeit vorheriger Open-/StarOffice-Einstellungen belohnt. Dagegen ist auch nichts einzuwenden; die Einstellungsübername ist löblich und man darf ja auch sagen, dass die Registrierung schon gemacht wurde - Wer aber keinen uneingeschränkten Internetzugang hat, sieht nun die Möglichkeit, entsprechende Erfordernisse zu begründen (in manchen Häusern beobachtet man diese Problematik)...
Andererseits möchte man gerne ein Paket liefern, dessen Applikation auch sofort nach der Installation genutzt werden kann. Da kommt man um die Client-Installation nicht herum; sie wurde aber in diesem Zusammenhang nicht weiter verfolgt.


Keine Rose ohne Dornen:
In Windows ist es möglich, spezielle Ordner systemintern umzulenken; das macht im Vergleich zu anderen Betriebsystem- oder Netzwerkkonzepten sogar Sinn, Windows-Verknüpfungen ganz 'was anderes sind als Unix-Links... Beispielsweise könnte es ganz nett sein, wenn die "Applikationsdaten", "Eigene Dateien",... im persönlichen Ordner des Dateiservers liegen statt mit dem servergespeicherten Nutzerprofil hoch und runter, kreuz und quer und hin und wieder durcheinander kopiert werden... Obendrein gibt es für mobile oder netzunsichere Maschinen noch den Synchronisationsmechanismus, sodass keine Wünsche mehr offen bleiben (außer vielleicht, dass das Ganze auch gelegentliche Unzulänglichkeiten funktionieren sollte).
Wie auch immer, OpenOffice hat gewisse Probleme mit Microsofts MobSync auf die Applikationsdaten (wo üblicherweise Dateien zu personenbezogenen Einstellungen abgelegt werden); nach jedem Windowsstart brauchts dann in der jeweils ersten Sitzung jeweils jeder Person keine gute Kaffeemaschine, denn, bis das erste Dialog- oder Dokumentfenster kommt, hat man die Kaffeemaschine gesäubert, notfalls neu in Betrieb genommen, Kaffe kochen lassen und den Kaffee auf.

:arrow: Beschreibung zur Erstellung des Gesamtpaketes und des Hilfskommandos DicOOo.bat:
Zur Integration der Rechtschreibunterstützung(en) (DicOOo) in das SWPaket von OpenOffice.org soll die beiliegende DicOOo.bat beitragen.
Sie bastelt 'ne DicOOo.inf, die dann in die Setup.inf eingearbeitet werden muss...


Voraussetzungen:
- vorgefertigtes Empirum-SWPaket zur MSI-Installation von OOo
- paketgerechter Pfad zum Rechtschreibordner von OOo
- dictionary.org.lst als Kopie der originalen dictionary.lst
- entpackte Rechtschreiberweiterungsdateien im Paketordner
- diese Datei im SrcDir-Ordner des zu erstellenden Paketes


Vorgehensweise:

1. Entpacken der Installationsdateien (z.B. nach dem Download der OOo[...].exe von HTTP://de.OpenOffice.org bzw.HTTP://www.OpenOffice.org)
Wie das geht, erfährt man spätestens, wenn man die Installations-exe mit Schalter "/?" aufruft...

2. Entpacken der Rechtschreibunterstützung (z.B. nach dem Download von HTTP://de.openoffice.org/spellcheck/abo ... oinfo.html)
Man sollte sich vorm Zusammenklauben der Dateien noch 'n paar Minuten für die Dokumentationen gönnen; z.B. braucht OpenOffice ab Version 2 'ne neue Thesaurenunterstützung...

3. Erstellen des SWpaketes
Näheres dazu steht in der EmpOOo.txt.

4. Positionieren der entpackten Rechtschreibdateien im Paket
Versionsübergreifend kommen die Dateien in den Ordner:
<SrcDir>\Share\Dict\OOo

5. Kopieren der originalen dictionary.lst
Natürlich wird man die Installation des nackten OOo-Paketes testen...
Je nach Version... wird die dictionary.lst im DOS(\Windows)- oder Unix-Format erzeugt. Da wir unser Windows ohne WSH-Script Nachkitten aus dem Resourcekit oder sonstigem nicht zum Schreiben im Unix-Format bewegen können, sollte zur Vermeidung eigener Verwirrungen die dictionary.lst ins Dos-Format konvertiert werden.
Man muss deshalb eine Kopie der (direkt aus der OOo-Installation erzeugten) <App>\Share\Dict\OOo\dictionary.lst als "dictionary.org.lst" im Ordner <SrcDir>\Share\Dict\OOo ablegen; die unix2dos-Konvertierung zur <SrcDir>\Share\Dict\OOo\dictionary.lst erledigt die DicOOo.bat mir recht einfachen Mitteln.

6. Positionierung und Aufruf der DicOOo.bat
Um mit paketkonformen Pfaden arbeiten zu können, erwartet die DicOOo.bat, dass sie beim Aufruf im SrcDir des Paketes liegt.
Sie referiert im Ordner <Aufrufpfad>\Share\Dict\OOo nach den Dateien zur Erweiterungen der Rechtschreibkontrolle von OpenOffice.org und teilautomatisiert deren Integration in ein Configurator-Paket von Empirum. Es werden im Ordner der Setup.inf eine DicOOo.inf und im Ordner mit den Rechtschreiberweiterungen aus der dictionary.org.lst eine dictionary.lst im DOS-Format erzeugt. Zusätzlich werden in einer dictionary.mig.lst Erweiterungseinträge gesammelt, die aus den vorgefundenen Dateien resultieren und in der dictionary.lst nicht vorkommen.
Wurden zuvor zur Setup.inf noch eine Setup.1st mit dem Inhalt aus der Setup.inf bis zum Ende des Product-Abschnitts sowie die Setup.2nd mit dem Inhalt ab der Leerzeile vor dem Set:Product-Abschnitt erstellt, erzeugt das Kommando kommentarlos eine neue Setup.inf als unformatierte Aneinanderreihung der Inhalte von Setup.1st, DicOOo.inf und Setup.2nd. (Der Inhalt der DicOOo.inf ist so Organisiert, dass die Installation ohne Nacharbeit funktionieren sollte)
Ohne Setup.inf-Baukasten werden nacheinander die Setup-Info-Dateien je in einem Editor-Fenster zur Bearbeitung angeboten. Man hat somit die Möglichkeit, den Inhalt der DicOOo.inf z.B. auf rechtsbündige Spalten zu korrigieren und ihn letztlich über die Zwischenablage in die Setup.inf zu kopieren, um den Product-Option-Eintrag sowie die Set:DicOOo- und Folgeabschnitte zu nach eigenen Wünschen zu positionieren.

:idea: die DicOOo.bat selbst:

@echo off
REM ----------------------------------------------------------------------------------------------------------------------------------------------
REM erstellt von MVdl am 30.09.2005
REM erneuert von MVdl am 25.10.2005
REM DicOOo[.bat]
REM
REM
REM Referiert nach Dateien zur Erweiterungen der Rechtschreibkontrolle
REM von OpenOffice.org und teilautomatisiert deren Integration in ein
REM Configurator-Paket von Empirum.
REM Es werden im Ordner der Setup.inf eine DicOOo.inf und im Ordner mit
REM den Rechtschreiberweiterungen, falls dort die dictionary.org.lst (als
REM Kopie der originalen dictionary.lst) liegt, eine unix2dos-konvertierte
REM dictionary.lst sowie eine dictionary.mig.lst mit den Eerweiterungen
REM für die dictionary.lst erzeugt.
REM Nacheinander werden die Setup-Info-Dateien je in einem Editor-Fenster
REM zur Barbeitung angeboten, sodass der Inhalt der DicOOo.inf in die
REM Setup.inf kopiert und positioniert werden kann.
REM Voraussetzungen:
REM - vorgefertigtes Empirum-SWPaket zur MSI-Installation von OOo
REM - paketgerechter Pfad zum Rechtschreibordner von OOo
REM - dictionary.org.lst als Kopie der originalen dictionary.lst
REM - entpackte Rechtschreiberweiterungsdateien im Paketordner
REM - diese Datei im SrcDir-Ordner des zu erstellenden Paketes
REM Hinweis:
REM Wurden zuvor zur Setup.inf noch eine Setup.1st mit dem Inhalt aus der
REM Setup.inf bis zum Ende des Product-Abschnitts sowie die Setup.2nd mit
REM dem Inhalt ab der Leerzeile vor dem Set:Product-Abschnitt erstellt,
REM erzeugt das Kommando kommentarlos eine neue Setup.inf als unformatierte
REM Aneinanderreihung der Inhalte von Setup.1st, DicOOo.inf und Setup.2nd.
REM ----------------------------------------------------------------------------------------------------------------------------------------------


Rem Das Ganze macht nur Sinn, wenn entsprechende Paketinformationen vorliegen
Rem (Aus der Paketinstallation kann letztlich ersehen werden, was DicOOo schon kennt...)
set DicOOoInf=
for /D %%A in ("%~dp0Install*.*") do set DicOOoInf=%%~fA
if "%DicOOoInf%" EQU "" goto FehlerE
set DicOOoInf=%DicOOoInf%\%~n0.inf
Rem Ergebnis: vollst. Name der InfoDatei, die später in die eigentliche Setup.inf integriert werden kann

Rem Im passenden Unterordner sollten auch die entsprechenden Requisiten paketgerecht vorliegen!
set DicOOoDir=
for /D %%A in ("%~dp0Share\Dict\OOo*") do set DicOOoDir=Share\Dict\OOo
if "%DicOOoDir%" EQU "" goto FehlerD
Rem Ergebnis: vollst. Name des Ordners zur Rechtschreibkontrolle

Rem Die Kopie der Originalliste bezeugt die Ausenandersetzung mit dem DicOOo.
if not exist "%~dp0%DicOOoDir%\dictionary.org.lst" goto FehlerO
Rem Der Form halber wird die Originalliste noch unix2dos-transformiert
Rem Der Sinn im Dumm bringt eine leere Liste.
echo Dumm | find "Sinn" > "%Temp%\%~n0.lst"
for /F "tokens=*" %%A in ('type "%~dp0%DicOOoDir%\dictionary.org.lst"') do echo.%%A>> "%Temp%\%~n0.lst"
move /Y "%Temp%\%~n0.lst" "%~dp0%DicOOoDir%\dictionary.lst"
Rem Ergebnis: Originalliste in Dos(Windows)-Format

Rem Die Erweiterung zu den Paketinformationen kann nun in Angriff genommen werden.
echo.--Set:DicOOo> "%DicOOoInf%"
echo.>> "%DicOOoInf%"
echo.>> "%DicOOoInf%"
echo.[Set:DicOOo]>> "%DicOOoInf%"
echo.; Zusatz zur deutschen Rechtschreibung >> "%DicOOoInf%"
echo.WaitUntilFileExists "%%App%%\Share\Dict\OOo\dictionary.lst" >> "%DicOOoInf%"
Rem Tausch der neuen Originalliste organisieren
for %%A in ("%~dp0%DicOOoDir%\*dictionary.lst") do call :LST "%%A"
Rem Ergebnis: Paketerweiterungsdatei mit einem Abschnitt,
Rem in dem das Erscheinen der (Rechtschreib-)Buchliste erwartet und
Rem ggF. deren "unix2dos"-Tausch abgeregt wird

Rem ... nun die (neuen) DicOOo-Dateien
Rem Der Sinn im Dumm bringt einen leeren Listenanhang.
echo Dumm | find "Sinn" > "%Temp%\%~n0.lst"
Rem Beteiligte Dateien ermitteln und notwendige Informationen zusammen klauben.
for %%A in ("%~dp0%DicOOoDir%\*.*") do call :Dic "%%A" "%Temp%\%~n0.lst"
echo.>> "%DicOOoInf%"
Rem Ergebnis: Datei zum Anhang der Rechtschreiberweiterung

Rem Wurden Listen in den Anhang gestellt?
set DicText=
for /F "tokens=*" %%B in ('type "%Temp%\%~n0.lst"') do set DicText=%%B
Rem Ergebnis: u.A. Variable mit Text zum letzten Anhang (wird in der "Setup.inf" hinterfragt)
if "%DicText%" EQU "" del "%Temp%\%~n0.lst"
if not exist "%Temp%\%~n0.lst" goto Sense

Rem Neuen Listenanhang und entsprechende Informationen ins Paket stellen
move /Y "%Temp%\%~n0.lst" "%~dp0%DicOOoDir%\dictionary.mig.lst"
for %%A in ("%~dp0%DicOOoDir%\*dictionary.mig.lst") do call :DicOOoDa "%%A" dictionary.lst
echo.>> "%DicOOoInf%"
Rem Ergebnis: Erweiterung vom "Set:DicOOo"-Abschnitt um die Rechtschreiblisten

:Sense
Rem Zum Schluss kommt die Einpflege der Informationen!
call :SetupInf "%DicOOoInf%"
goto :EOF


:LST
Rem (Paket-)Information zur Originalliste (Tausch in Dos(Windows)-Format) bereit stellen
echo.If FileSize ("%%Src%%\%DicOOoDir%\dictionary.org.lst") == FileSize ("%%App%%\%DicOOoDir%\dictionary.lst") Then "Set:DosDic" EndIf>> "%DicOOoInf%"
echo.>> "%DicOOoInf%"
goto :EOF

:DosDic
Rem (Paket-)Information zum Tausch der Originalliste gegen die im Dos(Windows)-Format) bereit stellen
echo.[Set:DosDic]>> "%DicOOoInf%"
echo.; Tauschen der Originalliste gegen die im Dos(Windows)-Format >> "%DicOOoInf%"
echo.1:%DicOOoDir%\%~nx1, , ALWAYS, %~z1>> "%DicOOoInf%"
echo.>> "%DicOOoInf%"
goto :EOF

:Dic
Rem (Paket-)Informationen (nur zu relevanten Dateien) bereit stellen.
if /I "%~x1" EQU ".txt" goto :EOF
if /I "%~x1" EQU "%~x2" goto :EOF
echo.1:%DicOOoDir%\%~nx1, , NORMAL, %~z1>> "%DicOOoInf%"
Rem Zu den entsprechenden Dateien auch passende DicOOo-Informationen sammeln.
if /I "%~x1" EQU ".dic" goto DICT
if /I "%~x1" EQU ".dat" goto THES
goto :EOF

:DICT
Rem Trennsilben- sind keine Wortlisten!
echo %~n1 | find /I "HYPH" > nul
if not errorlevel 1 goto HYPH
Rem Wortliste registrieren!
for /F "tokens=1,2 delims=_ " %%B in ('echo %~n1') do set DicText=DICT %%B %%C %~n1
goto Anhang

:HYPH
Rem Trennsilbenliste registrieren!
for /F "tokens=2,3 delims=_ " %%B in ('echo %~n1') do set DicText=HYPH %%B %%C %~n1
goto Anhang

:THES
Rem Wortzusammenhangsliste registrieren!
for /F "tokens=2,3 delims=_ " %%B in ('echo %~n1') do set DicText=THES %%B %%C %~n1

:Anhang
Rem Die registrierte Liste kommt nur in den Anhang, wenn sie nicht im Lieferumfang war!
find /I "%DicText%" "%~dp0%DicOOoDir%\dictionary.org.lst" > nul
if not errorlevel 1 goto :EOF
echo.%DicText%>>"%~f2"
goto :EOF


:DicOOoDa
Rem Im Paket muss noch verzurrt werden, dass der Anhang ggF. gemacht wird.
echo.If DoesTextInFileExist ("%DicText%", "%%App%%\%DicOOoDir%\dictionary.lst") == "0" Then "DicOOoDa" EndIf>> "%DicOOoInf%"
echo.>> "%DicOOoInf%"

Rem ggF. muss auch noch der "unix2dos"-Tausch der Originalliste abgewickelt werden
for %%A in ("%~dp0%DicOOoDir%\*dictionary.lst") do call :DosDic "%%A"
Rem Ergebnis: Abschnitt, in dem der Tausch abgewickelt wird

Rem Und ggF. muss der Anhang abgewickelt werden
echo.[DicOOoDa]>> "%DicOOoInf%"
echo.; Aktivieren der deutschen Rechtschreibung >> "%DicOOoInf%"
echo.Append "%%Src%%\%DicOOoDir%\%~nx1" "%%App%%\%DicOOoDir%\%~nx2" >> "%DicOOoInf%"
echo.>> "%DicOOoInf%"
Rem Ergebnis: Abschnitt, in dem der Anhang abgewickelt wird
goto :EOF


:SetupInf
Rem Einpflege der Rechtschreiberweiterung
Rem Ist ein Baukasten vorhanden, werden die neuen Paketinformationen zusammen gesetzt.
if exist "%~dp1Setup.1st" copy /Y "%~dp1Setup.1st" "%~dp1Setup.inf"
if exist "%~dp1Setup.1st" type "%~f1" >> "%~dp1Setup.inf"
if exist "%~dp1Setup.2nd" type "%~dp1Setup.2nd" >> "%~dp1Setup.inf"
Rem Ohne Baukasten droht Handarbeit; die kann auch gleich zur Spaltenformatierung genutzt werden...
rem if not exist "%~dp1Setup.1st" notepad "%~dp0%DicOOoDir%\dictionary.lst"
rem if not exist "%~dp1Setup.1st" notepad "%~dp0%DicOOoDir%\dictionary.mig.lst"
if not exist "%~dp1Setup.1st" notepad "%~f1"
if not exist "%~dp1Setup.1st" notepad "%~dp1Setup.inf"
goto :EOF


:FehlerE
echo %~n0[%~x0] muss bei seinem Aufruf im SrcDir des Paketes liegen!
goto Pause

:FehlerD
echo Das ist hier aber noch kein kein Paket oder?
goto Pause

:FehlerO
echo Doku lesen!
echo on
start"%~dp0..\%~n1.txt
@echo off

:Pause
pause


... ich wünsche gutes Gelingen
MVdl
Last edited by MVdl on 13. Feb 2006, 14:48, edited 1 time in total.

User avatar
mniemann
Administrator
Administrator
Posts: 574
Joined: 25. Nov 2005, 17:03
Location: Mainz
Contact:

Post by mniemann » 18. Jan 2006, 10:21

schankedön :)
Visit my Blog: "DiEW - Das inoffizielle Empirum Weblog" (http://www.diew.eu)

Martin Niemann
Manager Support (Service Management)

Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of matrix42 AG or of the support team.

Post Reply

Return to “Biete”

Who is online

Users browsing this forum: No registered users and 3 guests