• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Browser unter MacOSX geht nicht

fogg

Geomaster
Hallo,

Cachewolf läuft ja wunderbar auf dem Mac :2thumbs: . Allerdings kann ich den Browser aus Cachewolf heraus offensichtlich nicht aufrufen. Trage ich "/Applications/Safari.app" oder "/Applications/Firefox.app" in die entsprechende Zeile ein, bekomme ich keine Fehlermeldung, aber er geht leider kein Browserfenster auf.

Grüße - Fogg
 

MiK

Geoguru
Ich vermute, dass auch hier ein EWE-Bug zuschlägt, der fast alle Plattformen betrifft. Dieser bewirkt, dass sich aus EWE-Anwendungen (wie CW) keine externen Programme aufrufen lassen.

Workaround: Lege in Safari ein Lesezeichen auf die temp.html im CW-Verzeichnis an. Diese wird immer erstellt, wenn man "im Browser offline öffnen" wählt. Von dort kommt man dann über den Link oben rechts zur online-Version.
 

Silas

Geocacher
Unter Linux (Jar-Version, Sun-JVM 1.6) hats bei mir geholfen, im CWWrapper die zusätzlichen Anführungszeichen zu entfernen, obwohl sie laut Kommentar ja benötigt werden. Wenn du möchtest, mail ich dir die Version mal.

Auf PDAs funktioniert das leider nicht, da ist tatsächlich ein Bug in ewe 1.49, für den es zwar einen Fix gäbe, aber den hat wohl nie jemand in ewe eingepflegt: http://www.ewesoft.com/cgi-local/yabb2/YaBB.pl?num=1141309107;start=all
 

greiol

Geoguru
unter linux hilft es wirklich. ich werds mal noch unter windows testen und falls es auch unter osx klappt, könnte man es als fix einsteuern
 

pfeffer

Geowizard
Silas schrieb:
Unter Linux (Jar-Version, Sun-JVM 1.6) hats bei mir geholfen, im CWWrapper die zusätzlichen Anführungszeichen zu entfernen, obwohl sie laut Kommentar ja benötigt werden. Wenn du möchtest, mail ich dir die Version mal.
Und was ist, wenn in einem der Pfade ein Leerzeichen ist? - Kann man dieses Problem irgendwie lösen? - Ich vermute, dass das der Grund war, warum die " eingeführt wurden.

Gruß,
Pfeffer.
 

Silas

Geocacher
Nein, das funktioniert leider nicht. Auch nicht mit Backslash als Escape-Zeichen. Aber ich für meinen Teil hätte doch lieber eine Version, die nur mit Browser-Pfaden ohne Leerzeichen funktioniert (zumal diese unter Linux eh üblich sind) als eine, die nie klappt.

Um keine Funktionalität unter Windows zu gefährden [Funktioniert das Aufrufen denn da auch mit der Jar-Version? Für die Exe gibts eh einen anderen Ausführungszweig.], kann man ja immer dann Anführungszeichen ergänzen, wenn Leerzeichen im Aufruf oder den Parametern vorkommen.

Grüße, Silas
 

pfeffer

Geowizard
ja, das klingt mir vernünftig. Auch wenn ich es schade finde, wenn das unter Linux gar nicht gehen soll mit Leerzeichen.
Ich meine es damals getestet zu haben, dass es so wie jetzt der Code ist unter Win XP mit der .jar funktioniert.

Gruß,
Pfeffer.
 

UncleOwen

Geocacher
Das Problem ist, soweit ich das sehe, ein anderes: Cachewolf benutzt

static int exec(String command, String args, int launchCode, boolean wait)

besser wäre

static Process exec(String[] command)

Was ist der Unterschied? Bei letzterer Variante braucht ewe keinerlei Parsing zu machen, das heisst, man hat auch keinerlei Probleme mit Leerzeichen...
 

greiol

Geoguru
UncleOwen schrieb:
Bei letzterer Variante braucht ewe keinerlei Parsing zu machen, das heisst, man hat auch keinerlei Probleme mit Leerzeichen...
die probleme hast du solange cachewolf es zulässt, dass du einen wegpunkt mit der id
"A \x /? -h
anzulegen :/
 

UncleOwen

Geocacher
Hier mal meine Lösungsvariante ohne CWWrapper:

http://www.uncleowen.de/patches/cwwrapper-is-not-needed.patch

Unter Linux funktioniert's, wie sieht's unter OSX und Windows aus?
 

UncleOwen

Geocacher
greiol schrieb:
UncleOwen schrieb:
Bei letzterer Variante braucht ewe keinerlei Parsing zu machen, das heisst, man hat auch keinerlei Probleme mit Leerzeichen...
die probleme hast du solange cachewolf es zulässt, dass du einen wegpunkt mit der id
"A \x /? -h
anzulegen :/
Mit solchen Dateinamen muss man natürlich aufpassen, aber ich seh da kein grundsätzliches Problem bei.
 

UncleOwen

Geocacher
Silas schrieb:
Unter Linux (Jar-Version, Sun-JVM 1.6) hats bei mir geholfen, im CWWrapper die zusätzlichen Anführungszeichen zu entfernen, obwohl sie laut Kommentar ja benötigt werden. Wenn du möchtest, mail ich dir die Version mal.

Du meinst, die Zeile
Code:
cmd = "\"" + cmd + "\"";
einfach löschen? Immerhin geht dann bei mir der Firefox auf (tut er ohne nicht), aber versucht, die falsche Datei zu öffnen:
file:///home/uo/cachewolf/work/"file:///home/uo/cachewolf/work/temp.html"
Keine Ahnung, warum das plötzlich alles doppelt ist...

Auf PDAs funktioniert das leider nicht, da ist tatsächlich ein Bug in ewe 1.49, für den es zwar einen Fix gäbe, aber den hat wohl nie jemand in ewe eingepflegt: http://www.ewesoft.com/cgi-local/yabb2/YaBB.pl?num=1141309107;start=all
Autsch... Wenn das stimmt, was da steht, vergesst meinen Ansatz schnell wieder...
Les ich das richtig? Die 4-Parameter-Version von exec ist die einzig zuverlässige?
 

pfeffer

Geowizard
soweit ich mich an meine Tests erinnere ist keine wirklich zuverlässig. Ich hatte jedenfalls das mal probiert, was da im ewe-Forum steht und es war leider nicht die aller Heil bringende Lösung :-(

Wir brauchen entweder einen Fix von Ewe (bzw. jemanden, der das für Windows compilieren kann) oder wir müssen für jede Plattform einzeln herausfinden, wie es funktioniert. Das ist der Weg, den wir bisher gagangen sind.

Auf Linux habe ich selbst das noch nicht getestet. Könntet Ihr Euch auf eine Variante einigen?

Man muss wahrscheinlich auch unterscheiden zwischen der .jar und der .ewe in Linux.

Gruß,
Pfeffer.
 

Silas

Geocacher
UncleOwen schrieb:
[...]
Du meinst, die Zeile
Code:
cmd = "\"" + cmd + "\"";
einfach löschen? Immerhin geht dann bei mir der Firefox auf (tut er ohne nicht), aber versucht, die falsche Datei zu öffnen:
file:///home/uo/cachewolf/work/"file:///home/uo/cachewolf/work/temp.html"
Keine Ahnung, warum das plötzlich alles doppelt ist...
[...]
Auch die für arg. Ich hab in meiner Version tatsächlich den ganzen Java-Zweig rausgenommen. Allerdings müsste man den natürlich wieder reinnehmen für Fälle, in denen Leerzeichen vorkommen, damit das wenigstens unter Windows klappt.

Ich warte noch auf die Rückmeldung von fogg, ob das auch unter OS X was bringt.

pfeffer schrieb:
soweit ich mich an meine Tests erinnere ist keine wirklich zuverlässig. Ich hatte jedenfalls das mal probiert, was da im ewe-Forum steht und es war leider nicht die aller Heil bringende Lösung :-(

Wir brauchen entweder einen Fix von Ewe (bzw. jemanden, der das für Windows compilieren kann) oder wir müssen für jede Plattform einzeln herausfinden, wie es funktioniert. Das ist der Weg, den wir bisher gagangen sind.

Auf Linux habe ich selbst das noch nicht getestet. Könntet Ihr Euch auf eine Variante einigen?

Man muss wahrscheinlich auch unterscheiden zwischen der .jar und der .ewe in Linux.

Gruß,
Pfeffer.
Heißt du hast "mal probiert, was da im ewe-Forum steht", du hast ewe 1.49 für WinCE schon mal mit dem genannten Fix neukompiliert, aber es hat nichts gebracht?

Falls nein, haben wir jemanden mit VC++ 6, der das mal testen könnte?

Alternativ dazu möchte ich mal ganz unbedarft fragen, ob es zwischen ewe 1.48 und 1.49 Unterschiede gibt, die 1.49 zwingend erforderlich machen, da der Aufruf ja in 1.48 noch funktioniert haben soll.
 

UncleOwen

Geocacher
Silas schrieb:
UncleOwen schrieb:
[...]
Du meinst, die Zeile
Code:
cmd = "\"" + cmd + "\"";
einfach löschen? Immerhin geht dann bei mir der Firefox auf (tut er ohne nicht), aber versucht, die falsche Datei zu öffnen:
file:///home/uo/cachewolf/work/"file:///home/uo/cachewolf/work/temp.html"
Keine Ahnung, warum das plötzlich alles doppelt ist...
[...]
Auch die für arg. Ich hab in meiner Version tatsächlich den ganzen Java-Zweig rausgenommen.
Gut, damit funktionierts bei mir jetzt auch ohne dass die URL verdoppelt wird.
 

UncleOwen

Geocacher
pfeffer schrieb:
Wir brauchen entweder einen Fix von Ewe (bzw. jemanden, der das für Windows compilieren kann) oder wir müssen für jede Plattform einzeln herausfinden, wie es funktioniert. Das ist der Weg, den wir bisher gagangen sind.
Irgendwie hab ich so meine Zweifel, ob wir ersteres jemals bekommen werden. Und wenn, ob die Benutzer den dann auch installieren... Bleibt also nur zweiteres.

Vielleicht sollte man dabei aber mal etwas systematischer vorgehen. Erstmal die Frage: Was brauchen wir genau?
  • Wir brauchen 2 Funktionen:
    Code:
    static void exec(String cmd, String arg);
    static void exec(String cmd, String[] args);
    Letztere fehlt im aktuellen CWWrapper, wir brauchen sie aber, um gpsbabel mit mehreren Parametern aufrufen zu können.
  • Die Funktionen sollen sich, wenn nötig, selber ums escaping kümmern, d.h.
    Code:
    exec("Programm mit Leerzeichen im Namen", "Parameter mit Leerzeichen im Namen + mit \"Sonderzeichen\"")
    sollte funktionieren.
    CWWrapper macht da zwar irgendwas in die Richtung, aber, wie man an diesem Thread sieht, irgendwie nicht richtig.
Nimmt man das alles zusammen, bleibt vom aktuellen CWWrapper nicht mehr viel übrig...
 

Silas

Geocacher
Naja, inwieweit sich der Dreizeiler CWWrapper jetzt ändert oder nicht, halte ich für weniger wichtig. Der Knackpunkt ist meiner Meinung nach, dass ewe 1.49 auf WinCE keine externen Programme mehr aufrufen kann. Einen Fix scheint es ja zu geben (ob er funktioniert sei mal dahingestellt), nur müsste jemand ewe für Windows kompilieren können.

Ggf. könnte man auch ENI nutzen, um das Problem zu umgehen, aber da bräuchten wir auch eine native DLL für WinCE (also jemanden mit Compiler). Oder kann man mit ENI auch direkt auf die coredll.dll zugreifen, um CreateProcess aufzurufen?
 

pfeffer

Geowizard
der CWWrapper darf gerne geändert und um Methoden erweitert werden.
Dabei aber bitte beachten:
1. bei mirabilos auf mirOS funzt es so (obwohl hmmm - es ist nicht auszuschließen, dass er bei sich den Bug in ewe direkt behoben hat?)
2. in Windows funzt es so.

Deswegen: wenn es bei Euch irgendeiner Änderung bedarf, dann bitte genau Eure Kombination von Plattformen (java/ewe und Linux/Windows/MacOS) filtern und dafür eine funktionierende Variante einbauen. Oder noch besser: eine generelle Lösung finden und auf allen Kombinationen testen ;-)

Nein, ich habe Ewe nicht selbst gebaut. Aber es gibt mehrere Leute, die Ewe für *nix selbstgebaut haben. Unter denen: mirabilos. Leider kenne ich niemanden, der das für Windows Mobile kann. Wenn wir den hätten, wäre das die schönste Lösung. Ich habe auch wenig bedenken, dass die Leute eine VM, die von uns bereitgestellt würde, nicht nehmen würden. Mit Ewe v1.48 zu testen ist vielleicht wirklich eine gute Idee. da sollte man aber am besten dann mal einen diff auf die Sourcen zwischen v1.48 und v1.49 machen, damit man abschätzen kann, was für Bugs wir uns damit einhandeln würden. (kann man v1.48 überhaupt noch bekommen?)

Gruß,
Pfeffer.
 

pfeffer

Geowizard
Silas schrieb:
Ggf. könnte man auch ENI nutzen, um das Problem zu umgehen, aber da bräuchten wir auch eine native DLL für WinCE (also jemanden mit Compiler). Oder kann man mit ENI auch direkt auf die coredll.dll zugreifen, um CreateProcess aufzurufen?
Das scheint mir eine super Idee zu sein!

Gruß,
Pfeffer.
 

UncleOwen

Geocacher
Silas schrieb:
Naja, inwieweit sich der Dreizeiler CWWrapper jetzt ändert oder nicht, halte ich für weniger wichtig. Der Knackpunkt ist meiner Meinung nach, dass ewe 1.49 auf WinCE keine externen Programme mehr aufrufen kann.
Achso, so gar nicht? Ich hatte halt noch Hoffnung, dass zwischen den 5 verschiedenen exec()-Varianten eine funktionierende ist. Und man nur auf jeder Plattform die richtige raussuchen muss. Aber wenn auf WinCE gar keine funktioniert...
 
Oben