C
Claude M
Gast
Hallo Forum!!
Ich habe Probleme mein Programm an Vista anzupassen. Es gibt zwar Dokumente im Internet die einem dabei helfen sollen aber nichts speziell für Java. Oder ich hab's nur nicht gefunden.
Vielleicht hat mir jemand einen Link?
Ein grosses Problem welches ich habe ist folgendes:
Wie teste ich die Schreibrechte bei Vista?
new File("foo").canWrite() gibt praktisch immer true zurück, auch wenn man nur mit Adminrechten die Datei ändern darf. Ich muss eine bestehende Datei umbenennen (renameTo) und das wieder rückgängig machen um zu sehen ob ich Schreibrechte habe. Ist das ein Bug von Vista oder von Java oder mache ich was falsch?
Was ich konkret anstellen will:
Also ich hab ein Programm mit Updatefunktion. Als Installer wird install4j verwendet.
Normalerweise wird Software als Admin installiert. Das ist auch gut so und ich will auf keinen Fall den User zwingen das Programm im home zu installieren, das wäre wirklich sehr unschön.
Das Update ist so gelöst:
Das Haupt-Jar startet per exec() ein update.jar welches das Programm mit einer runtergeladen Version ersetzen soll.
(Anmerkung: Das ist nur auf Win so, denn auf Unix kann ein Jar sich selbst ersetzen.)
Die Mac- und Linux-User haben eh keine andere Möglichkeit als das Tool als root zu starten denn sonst geht garnichts.
Auf WinXP ist man meist eh Admin und somit hat der User kein Problem mit dem Update (dafür einige Sicherheitsprobleme, aber das ist ein anderes Thema).
Auf Vista klappt das Update nicht, denn der User hat keine Adminrechte, wenn er eine Applikation wie die meine normal startet. Nur wenn Vista erkennt, dass es ein Installer oder Update-Tool ist gibt er dem Programm mehr Rechte. da ich aber /bin/java starte und nicht ein eigenes binary hat mein updater diese Rechte nicht.
Momentan gebe ich eine Meldung aus dass der User das Programm als Administrator starten muss (Rechtsklick) und dann klappts auch. Schöner wärs wenn ich so eine Vistameldung bringen kann und der User bestätigen muss dass es ok ist was mein Programm da tun will. (Wer gksudo kennt weiss was ich meine.)
Claude
Ich habe Probleme mein Programm an Vista anzupassen. Es gibt zwar Dokumente im Internet die einem dabei helfen sollen aber nichts speziell für Java. Oder ich hab's nur nicht gefunden.
Vielleicht hat mir jemand einen Link?
Ein grosses Problem welches ich habe ist folgendes:
Wie teste ich die Schreibrechte bei Vista?
new File("foo").canWrite() gibt praktisch immer true zurück, auch wenn man nur mit Adminrechten die Datei ändern darf. Ich muss eine bestehende Datei umbenennen (renameTo) und das wieder rückgängig machen um zu sehen ob ich Schreibrechte habe. Ist das ein Bug von Vista oder von Java oder mache ich was falsch?
Was ich konkret anstellen will:
Also ich hab ein Programm mit Updatefunktion. Als Installer wird install4j verwendet.
Normalerweise wird Software als Admin installiert. Das ist auch gut so und ich will auf keinen Fall den User zwingen das Programm im home zu installieren, das wäre wirklich sehr unschön.
Das Update ist so gelöst:
Das Haupt-Jar startet per exec() ein update.jar welches das Programm mit einer runtergeladen Version ersetzen soll.
(Anmerkung: Das ist nur auf Win so, denn auf Unix kann ein Jar sich selbst ersetzen.)
Die Mac- und Linux-User haben eh keine andere Möglichkeit als das Tool als root zu starten denn sonst geht garnichts.
Auf WinXP ist man meist eh Admin und somit hat der User kein Problem mit dem Update (dafür einige Sicherheitsprobleme, aber das ist ein anderes Thema).
Auf Vista klappt das Update nicht, denn der User hat keine Adminrechte, wenn er eine Applikation wie die meine normal startet. Nur wenn Vista erkennt, dass es ein Installer oder Update-Tool ist gibt er dem Programm mehr Rechte. da ich aber /bin/java starte und nicht ein eigenes binary hat mein updater diese Rechte nicht.
Momentan gebe ich eine Meldung aus dass der User das Programm als Administrator starten muss (Rechtsklick) und dann klappts auch. Schöner wärs wenn ich so eine Vistameldung bringen kann und der User bestätigen muss dass es ok ist was mein Programm da tun will. (Wer gksudo kennt weiss was ich meine.)
Claude