Dein Skript aus deinem Beitrag oben, habe ich jetzt für Mac OSX "portiert" und getestet.
Mein Testsetup war: 1 Rechner mit Windows 10 und 1 Rechner mit OSX 10.10.5.
Der Code des SH-Skripts (ist sowas wie eine .bat unter Windows) sieht so aus.
Tipp: Wenn man der Datei unter Mac OSX die Endung .command gibt, kann man Sie einfach durch Anklicken ausführen.
Code: Alles auswählen
#!/bin/sh
# Nachfolgende drei Zeilen bitte anpassen
# JAMEICA_DATADIR muss angegeben werden, selbst wenn der Standard-Pfad verwendet wird. Es reicht dabei den Pfad bis zur jameica.app anzupassen, falls notwendig.
JAMEICA_APP_PATH="/Applications/jameica.app/"
# Pfad zu dem Ort, an dem der jameica-Benutzerordner liegt. Ersetze <DeinUserName> durch Deinen Mac-Benutzernamen. Eine Liste aller Benutzer kann man sehen, wenn man unter /Users bzw. /Benutzer sich die dort liegenden Ordner ansieht.
JAMEICA_DATADIR="/Users/<DeinUserName>/Desktop/jameica/"
# Kopiert aus dem Original jameica-Startskript. Entspricht dem Standard aus OSX 10.10
JAVACMD="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java"
######################################### Ab hier keine Änderungen mehr notwendig
LOCKFILE_MY="${JAMEICA_DATADIR}/my.lock"
# Prüfen, ob Lockfile existiert
if [ -f "$LOCKFILE_MY" ];then #Jameica in Verwendung, da Lock-File existiert
JAMEICA_USER=$(cat $LOCKFILE_MY)
echo "**********"
echo "* Jameica wird gerade benutzt von"
echo "* $JAMEICA_USER"
echo "**********"
echo "* Jameica kann erst gestartet"
echo "* werden, wenn obiger Benutzer das"
echo "* Programm beendet hat."
echo "**********"
else #Jameica nicht in Verwendung, da das Lock-File nicht existiert
echo "**********"
echo "* Jameica wird gestartet"
echo "**********"
echo "* ACHTUNG:"
echo "* Dieses Fenster NICHT schließen, es wird"
echo "* automatisch geschlossen sobald Jameica"
echo "* beendet wurde."
echo "**********"
echo "${USER}@${HOSTNAME}\r\n" > $LOCKFILE_MY
# In das .app-Verzeichnis wechseln
cd $JAMEICA_APP_PATH
# Jameica nicht über die jameica.app aufrufen sondern mit java das JAR-Archiv aufrufen
# da sonst der Batch gleich weiterläuft und nicht wartet bis Jameica beendet wurde.
$("${JAVACMD}" -Xdock:name="Jameica" -Xmx256m -XstartOnFirstThread -jar "${JAMEICA_APP_PATH}/jameica-macos64.jar" -f "${JAMEICA_DATADIR}" -o "$@" > /dev/null) > /dev/null
rm -f $LOCKFILE_MY
fi
- Wenn das Locking-Skript nicht im jameica-Programmordner liegt stimmen die Pfade nicht. Das kann man heilen, wenn man vor dem Programmstart noch ein cd %JAMEICA_PROGDIR% einfügt.
- Das Auslesen des Benutzernamens und schreiben in die Variable JAMEICA_USER hat überhaupt nicht funktioniert. Das liegt aus meiner Sicht daran, dass die Variable auf der linken Seite der Zuweisung auch in % gehüllt ist, was aus meiner Sicht dort nicht sinnvoll ist. Habe die Zeile so abgeändert: set /p JAMEICA_USER=<%LOCKFILE_MY%
Code: Alles auswählen
@echo off
rem Nachfolgende drei set-Zeilen bitte anpassen
rem JAMEICA_DATADIR muss angegeben werden, selbst wenn der Standard-Pfad verwendet wird
rem JAMEICA_3264 muss -je nach eigener Umgebung- auf 32 oder 64 eingestellt werden
set JAMEICA_PROGDIR=C:\Program Files (x86)\jameica\
set JAMEICA_DATADIR=C:\Users\<DeinBenutzername>\Documents\jameica\
set JAMEICA_3264=32
rem
rem Ab hier keine Änderungen mehr nötig
set JAMEICA_BIN=jameica-win32.exe
set JAMEICA_JAR=jameica-win32.jar
if %JAMEICA_3264%==64 (
set JAMEICA_BIN=jameica-win64.exe
set JAMEICA_JAR=jameica-win64.jar
)
set LOCKFILE_MY="%JAMEICA_DATADIR%\my.lock"
rem Prüfen ob Lockfile exitiert
if exist %LOCKFILE_MY% goto jameica_in_use
goto jameica_start
:jameica_start
echo **********
echo * Jameica wird gestartet
echo **********
echo * ACHTUNG:
echo * Dieses Fenster NICHT schliessen, es wird
echo * automatisch geschlossen sobald Jameica
echo * beendet wurde.
echo **********
echo %USERNAME%@%COMPUTERNAME% > %LOCKFILE_MY%
rem Jameica nicht mit der Starter-EXE aufrufen sondern mit javaw das JAR-Archiv aufrufen
rem da sonst der Batch gleich weiterläuft und nicht wartet bis Jameica beendet wurde.
cd %JAMEICA_PROGDIR%
javaw -jar "%JAMEICA_PROGDIR%\%JAMEICA_JAR%" -f "%JAMEICA_DATADIR%"
del %LOCKFILE_MY%
goto ende
:jameica_in_use
echo %LOCKFILE_MY%
set /p JAMEICA_USER=<%LOCKFILE_MY%
echo **********
echo * Jameica wird gerade benutzt von
echo * %JAMEICA_USER%
echo **********
echo * Jameica kann erst gestartet
echo * werden wenn obiger Benutzer das
echo * Programm beendet hat.
echo **********
pause
goto ende
:ende
Viele Grüße
Philipp