OpenOffice-Benutzerverzeichnis automatisiert umbenennen

Diskussionen zu Projekten

Moderator: Moderatoren

Forumsregeln
Dieses Unterforum versteht sich als Plattform zur Diskussion/Bearbeitung komplexerer Anfragen bzw. konkret verabredeter Projekte. Das können Dinge sein wie eine komplexere Calc-Datei oder auch die gemeinsame Programmierung eines größeren Makros, wichtig ist immer die Absicht ein Thema über längere Zeit (z.B. 3 Monate) fortlaufend zu besprechen.
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

OpenOffice-Benutzerverzeichnis automatisiert umbenennen

Beitrag von Stephan »

Ich könnte Hilfe gebrauchen bei der Programmierung eines kleinen Tools für Linux/Unix/MacOS gebrauchen (im Folgenden erläutert)


Hallo,

wegen der Schwierigkeiten die Benutzer regelmäßig haben wenn sie ihr OpenOffice-Benutzerverzeichnis per Hand umbenennen müssen habe ich hier einmal versucht ein kleines Tool zu implementieren das das automatisiert erledigt.

Der derzeitige Stand ist die unten angehängte Datei "OO-Benutzerverzeichnis_umbenennen_1.0.0.odt", welche bei mir unter OOo und AOO (getestet OOo 3.3.0 und AOO 4.1.1) schon ganz ordentlich funktioniert, aber momentan eben nur unter MS Windows.
Wahrscheinlich funktioniert die Datei auch bereits unter LibreOffice Und MS Windows, ich habe das aber bisher noch nicht getestet.

Wegen der technischen Notwendigkeit das das OO-Benutzerverzeichnis nur umbenannt werden kann wenn OpenOffice nicht läuft besteht meine Lösung aus einer odt-Datei mit Makro PLUS ein kleines Programm (OO-BV.exe) das im Archiv der odt-Datei eingebettet ist.

Das Makro übernimmt die Initialisierung und startet danach OO-BV.exe, welche ihrerseits OpenOffice komplett beendet und das aktuielle OO-Benutzerverzeichnis umbenennt.

OO-BV.exe habe ich der Einfachheit halber mit AutoIT (http://de.wikipedia.org/wiki/AutoIt) erstellt, der derzeitige Quellcode steht weiter unten.

Es wäre nun nötig ein ähnliches Programm, Script etc. wie OO-BV.exe zu Programmieren, welches (standalone) unter Linux bzw. Unix bzw. MacOS läuft.
Wer kann und möchte mir dabei helfen?


Kontaktaufnahme bitte per PM oder auch direkt hier im Thread.

Das Ganze ist meinerseits ohne kommerzielles Interesse. Das Projekt steht meinerseits derzeitig unter ISC-Lizenz (http://de.wikipedia.org/wiki/ISC-Lizenz).


Gruß
Stephan


Quell-Code von OO-BV.exe:

Code: Alles auswählen

;ACHTUNG AutoIT-Quellcode
;Stand: 21.03.2015


#include <GUIConstantsEx.au3>
Global $ExitID

If $CmdLine[0] <> 2 Then help()

;-->etwas warten bevor soffice.bin beendet wird-------------------------
;um die Zeit zu überbrücken statt Sleep() Fortschrittsanzeige laufen lassen
ProgressOn("Bitte etwas Geduld", "Benutzerverzeichnis wird konsolidiert...")
For $i = 10 To 100 Step 10
	Sleep(300)
	$j = Random(0, 9, 1)
	$k = $i+$j
	If $k > 100 Then $k = 100 ;max. 100% möglich
	ProgressSet($k, $k & " %")
Next
Sleep(200)
ProgressOff()
;-------------------------etwas warten bevor soffice.bin beendet wird<--

;evtl. mehrere Instanzen vorhanden
;(jedoch Problem weil im Star-Basic-Makro nur die jeweilige Instanz angesprochen
;wird aus der heraus das Makro läuft, womit nicht das Vorhandensein ungespeicherter
;Dokumente in anderen Instanzen geprüft wird)
While ProcessExists("soffice.bin") ;
	ProcessClose("soffice.bin")
Wend

Sleep(500)

DirMove($CmdLine[1], $CmdLine[2])

Opt("GUIOnEventMode", 1)

_Main()

Func _Main()
	Local $YesID, $NoID

	GUICreate("OO-Benutzerverzeichnis wurde umbenannt", 600, 150)

	$tmp_text1 = "Das bisherige OpenOffice-Benutzerverzeichnis wurde umbenannt in:"
	$tmp_text2 = "Bitte starten Sie OpenOffice jetzt neu, dabei wird automatisch ein neues Benutzerverzeichnis erstellt."

	$tmp_var1 = "    " & CHR(34) & $CmdLine[2] & CHR(34)

	GUICtrlCreateLabel($tmp_text1 & CHR(13) & CHR(13) & $tmp_var1 & CHR(13) & CHR(13) & $tmp_text2, 10, 10, 580, 100, 0x0000)
	$YesID = GUICtrlCreateButton("OK", 275, 120, 50, 20)
	GUICtrlSetOnEvent($YesID, "OnOK")

	GUISetOnEvent($GUI_EVENT_CLOSE, "OnExit")

	GUISetState() ; display the GUI

	While 1
		Sleep(1000)
	WEnd
EndFunc   ;==>_Main

Func OnOK()
	Exit
EndFunc

Func OnExit()
	Exit
EndFunc

Func help()
    $msg = "OO-BV ist ein Tool zum Umbenennen des OpenOffice-Benutzerverzeichnisses." & @CR & _
            @CR & "Syntax:" & _
            @CR & "OO-BV.exe <Pfad des aktuellen OO-Benutzerverzeichnisses> <neuer Name des Verzeichnisses (Archiv)>" & @CR & _
            @CR & "Lizenz: ISC-Lizenz" & @CR & _
			"Copyright (c) Jörg Schmidt, www.jm-schmidt.de"
    MsgBox(0, "Hinweis zu OO-BV", $msg)
    Exit
EndFunc  ;==>help
Dateianhänge
OO-Benutzerverzeichnis_umbenennen_1.0.0.odt
(378.9 KiB) 868-mal heruntergeladen
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: OpenOffice Benutzerverzeichnis automatisiert umbenennen

Beitrag von Stephan »

Stand am 03.03.2018:
Die Dateiversion "OO-Benutzerverzeichnis_umbenennen_1.0.0.odt" entspricht auch weiterhin der aktuellen Version. Trotz >200 Downloads gab es bisher keine Fehlerrückmeldungen.

Versionen des Makros für Linux und MacOS gibt es weiterhin nicht, weil sich niemand gemeldet hat mich diesbezüglich zu unterstützen und mir dazu die Kenntnisse fehlen.


Gruß
Stephan
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: OpenOffice-Benutzerverzeichnis automatisiert umbenennen

Beitrag von Stephan »

Hallo Peter,

danke für das Skript.

Es wird etwas dauern bis ich Zeit finde das halbwegs ausführlich zu testen, wahrscheinlich erst im Juni. Ich schreibe dann auf jeden Fall etwas in den Thread hier.
Da Linux ein anderes Sicherheitskonzept als Windows hat, ist es dort nicht einfach so möglich Dateien automatisch zu starten.
Sie müssen zunächst ausführbar gemacht werden. So, wie Du das per Makro in Windows gelöst hast (Datei auspacken und aufrufen) geht das in Linux meines Wissens nicht.
Ich glaube es gab hier neulich einen Hinweis wie man mittels SHELL() auch aus StarBasic heraus Linux-Skripte ausführbar machen und starten kann, ich finde das aber momentan nicht.
Das könnte evtl. eine Möglichkeit sein.
Ich würde auch eine von OpenOffice unabhängige Lösung wählen, da eine ODF Datei nicht geöffnet werden kann, sollte OO richtig eingefroren sein. Eine unabhängigen Datei kann dann immer noch gestartet werden und OO in der Regel auch noch beenden.
Diese Überlegung ist schon richtig, aber Ziel meiner odt-Datei ist ja leichte Bedienbarkeit für Laien (eigentlich hätte ich das lieber in eine Extension gepackt, nur da man es ja nur ganz sporadisch braucht, schien mir das nicht so sinnvoll).

LibreOffice hat ja inzwischen (zeitlich nach dem Thread hier ;-)) eine ähnliche Lösung direkt ins Programm integriert. Ich kann noch nicht abschließend sagen wie zuverlässig das ist, dazu gibt es zu selten einen Anlass das unter Realbedingungen zu testen. Soweit ich bisher getestet habe funktioniert das gut, nur hätte man sich die Optionen sparen sollen/können.
Auch hierbei besteht natürlich das grundsätzliche Problem das LO noch starten können muss (bzw. ich weiß garnicht ob es dafür einen separaten Launcher, in der Art unopkg, gibt).

Ich fürchte es gibt da keinen Königsweg, denn irgendwie ist ja mein Anlass für das Tool gewesen, das ich häufig erlebe das Anwender nicht einmal i der Lage sind ein Verzeichnis zu finden und umzubenennen. Für solche Anwender ist wohl auch das manuelle Ausführbarmachen eines Scripts eine Hürde.



Gruß
Stephan

P.S.
sind die 3 Posts von Dir genau identisch? Dann lösche ich zwei. (ich nehme an da hat die Forumssoftware gehakt, so geht mir das auch gelegentlich)
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: OpenOffice-Benutzerverzeichnis automatisiert umbenennen

Beitrag von Stephan »

So, die zwei überflüssigen Posts habe ich gelöscht.
Ich staune, das überhaupt was angekommen ist, denn ich hatte immer Timeout und hab dann abgebrochen.
Genau erklären kann ich das auch nicht. Ich selbst erlebe es so das die Forumssoftware 'blockiert' und scheinbar nicht mehr reagiert, wenn man dann mehrfach den Beitrag absendet wird das offenbar noch in die Forumsdatenbank übernommen und steht beim automatischen Neustart (der Forumssoftware oder des Servers insgesamt - das weiß ich garnicht) dann später zur Verfügung.


Gruß
Stephan
Antworten