Hi,
ich habe mittlerweile ein fertiges Batch-Skript mit dem das ganze echt gut funktioniert.
Hierzu muss in der bereits genannte Datei '\DokuWikiStick\server\conf\httpd.conf' ab Zeile 7 folgendermaßen geändert werden:
#DocumentRoot ./../dokuwiki
DocumentRoot ${DOKUWIKI_ROOT}\dokuwiki
In der abgeänderten run.cmd muss in Zeile 36 noch der Pfad zum Server angepasst werden:
@echo off
REM abgeändertes DokuWiki on a Stick Orignal-run.cmd-Skript für Netzwerkinstallationen
goto begin
:usage
echo Usage: %~n0
echo.
echo Starts DokuWiki on a Stick (http://www.dokuwiki.org/dokuwiki_on_a_stick)
echo and waits for user to press a key to stop.
goto end
:begin
if not "%1"=="" goto usage
REM Netzlaufwerk verbinden
REM https://www.heise.de/ct/hotline/Freien-Laufwerksbuchstaben-finden-322906.html
if not "%OS%"=="Windows_NT" exit /b
setlocal
REM set ll=V T R Q P O N M K J I W X Y Z L U S H G F E D
set ll=Z Y X W V U T S R Q P O N M L K J I H G F E D
for %%l in (%ll%) do (
set LW=%%l
mountvol %%l: /L >nul
if errorlevel 1 (
subst | findstr /B "%%l:" > nul
if errorlevel 1 (
net use %%l: >nul 2>&1
if errorlevel 1 goto gotone
)
)
)
echo Kein Laufwerksbuchstabe frei
pause
exit /b
:gotone
net use %LW%: \\Server\Verzeichnisse\DokuWikiStick
net use %LW%:\server
echo DokuWikiNetzlaufwerk verbunden mit %LW%
setx DOKUWIKI_ROOT %LW%:
cd server
start "Apache server" /B mapache.exe
echo DokuWiki on a Stick started...
echo.
:runbrowser
echo Your web browser will now open http://localhost:8800
echo.
REM if exist ..\dokuwiki\conf\local.php (
start http://localhost:8800/
REM ) else (
REM start http://localhost:8800/install.php
REM )
:wait
echo To stop DokuWiki on a Stick
pause
:stop
ApacheKill.exe
net use %LW%: /delete /yes
echo ... DokuWiki on a Stick stopped.
echo You can close this window now.
:end
In dem Netzwerksverzeichnis muss sich der Inhalt von "DokuWiki on a Stick" befinden, also:
\\Server\Verzeichnisse\DokuWikiStick\dokuwiki\
\\Server\Verzeichnisse\DokuWikiStick\server\
\\Server\Verzeichnisse\DokuWikiStick\run.cmd
Die mit obigen Skript versehene Datei '\\Server\Verzeichnisse\DokuWikiStick\dokuwiki' und der Ordner '\\Server\Verzeichnisse\DokuWikiStick\server\' müssen dann in ein lokales Verzeichnis aus dem ausgeführt werden darf, verschoben werden.
Das geänderte Run-Skript bindet dann den Ordner '\\Server\Verzeichnisse\DokuWikiStick' mit einem Laufwerksbuchstaben als Netzlaufwerk ein, speichert den Laufwerksbuchstaben in der Umgebungsvariable 'DOKUWIKI_ROOT' welche in der Registy für den aktuellen Benutzer gespeichert wird. Mit dem Parameter /m könnte man diese Variable übrigens auch für die komplette Maschine, also alle Benutzer setzen.
Mit dem korrekten Beenden wird das Netzlaufwerk nach dem Beenden des Apache-Servers getrennt und die Umgebungsvariable auf "" gesetzt.
Dadurch dass jetzt der Apache-Server, oder auch mehrere Apache-Server auf das gleiche Dokumentroot zugreifen, sind jetzt wieder die ins DokuWiki eingebauten "Editiersperrenmechamismen" am laufen. Somit wäre damit wohl sogar ein Mehrbenutzerbetrieb möglich, auch wenn ich den weder getestet habe, noch empfehlen würde.
Was zudem auffallen dürfte, ist dass ich die Abfrage nach '\dokuwiki\conf\local.php' auskommentiert habe. Hätte man auch auf das Netzlaufwerk umbiegen können, man wird die install.php allerdings wohl nur einmal brauchen, dann kann man da auch mal selbst "hinsurfen".
Wie gesagt würde ich das ganze irgendwann gerne noch in ein C#-Programm einbauen, welches es mir dann ermöglichen sollte, das eine oder andere weitere Extra zu verbasteln. Z.B. ist es da dann sehr einfach, mit Schließen des Programmes das DokuWiki on a Stick korrekt zu beenden, also nix mehr mit "To stop DokuWiki on a Stick press any Key".
Ach ja - Disclaimer, nix großartiges, eigentlich normaler Menschenverstand für solche Skripte:
Das geänderte Skript ist natürlich OpenSource, macht damit was ihr wollt solange ihr es nicht verkauft. Macht aber auf keinen Fall mich dafür verantwortlich, wenn da irgendwas schiefgeht, nicht funktioniert und/oder Datenverlust auftritt oder ähnliches.
Auch wenn ich eine Namensnennung nur als "wäre nett" fordern würde, gebt es nicht als eure eigene Arbeit aus.
Was natürlich auch schön wäre: Änderungen hier oder irgendwo anders bekannt machen, damit evtl. andere davon profitieren können.
Edit:
Mit ist aufgefallen, dass sich das Skript hin und wieder verschluckt. Warum weiß ich leider (noch) nicht, bis dato hat aber immer ein zweiter Versuch geklappt. Man muss hier aber manchmal in zuviel verbundenes Netzlaufwerk manuell trennen.