seareal
Messages postés24Date d'inscriptionmardi 20 juillet 2004StatutMembreDernière intervention 8 juin 2011
-
16 juin 2006 à 10:15
sheorogath
Messages postés2448Date d'inscriptionsamedi 21 février 2004StatutModérateurDernière intervention29 janvier 2010
-
16 juin 2006 à 17:09
Bonjour,
je suis pas sûr que ma question soit adéquate sur ce forum mais je tente ma chance.
voilà le problème :
j'ai créé une petite application java qui doit écrire des fichiers logs. J'ai exporté mon appli en .jar puis en .exe et je lui ai créé un installeur. L'objectif de l'installeur est d'associer une url de type bonzai:// à mon application (un peu comme ed2k pour emule).
Pour l'instant, l'installeur n'est que pour Windows : il associe l'url bonzai à mon application dans la base de registre en utilisant les clés :
L'association en elle-même fonctionne, mon programme est bien lancé, le problème est qu'il est lancé depuis le répertoire du bureau et non depuis son répertoire d'installation (System.getProperty("user.home") renvoie systématiquement mon bureau). Du coup, mes fichiers de logs sont enregistrés sur le bureau au lieu d'être enregistrés dans le répertoire de l'application.
J'ai bien trouvé une solution qui consiste à ajouter une clé dans la base de registre par l'installeur dans laquelle je spécifie le path de l'appli, puis je vais lire cette clé depuis mon programme mais je n'aime pas vraiment cette solution qui fait que mon appli devient spécifique windows (et que je ne trouve pas ça propre de toute façon).
J'en viens donc à ma question
Y'a-t-il un moyen en java de désigner le répertoire où se trouve physiquement l'application (pas forcément celui depuis lequel elle est lancée) ?
Y'a-t-il sinon un moyen de spécifier un répertoire de départ dans la base de registre pour lancer mon appli ?
(un peu comme les raccourcis windows où on spécifie la "cible" et le "démarrer dans", c'est ce "démarrer dans" que j'aimerais spécifier dans ma base de registre).
Merci d'avoir tout lu, j'espère que vous avez une solution
seareal
Messages postés24Date d'inscriptionmardi 20 juillet 2004StatutMembreDernière intervention 8 juin 2011 16 juin 2006 à 10:36
Autant pour moi je me suis trompé dans mon message initial, "user.home" n'est évidemment d'aucune utilité, c'était bien la variable "user.dir" qui renvoyait sur le bureau.
Je précise que le problème ne survient évidemment pas si je lance mon appli depuis son répertoire (ou via la commande Exécuter de windows) où là, je suis bien placé dans le bon répertoire.
Ce problème ne survient que lorsque mon appli est automatiquement lancée par Internet Explorer lorsqu'il reçoit une url de type bonzai://Test au lieu de http://.....).
Pour je ne sais quelles raisons, le répertoire courant dans mon application est le bureau, et ce que je voudrais changer
seareal
Messages postés24Date d'inscriptionmardi 20 juillet 2004StatutMembreDernière intervention 8 juin 2011 16 juin 2006 à 12:30
Si vous avez des idées pour obtenir l'information en Java, ou si vous connaissez un bon site qui expliquerait comment modifier correctement la base de registre (pas faute d'en avoir cherché pourtant ), je suis preneur
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 16 juin 2006 à 12:42
Salut,
en java pure il est IMPOSSIBLE de modifier la base de registre qui est exclusif à crosoft
cependant tu as 2 façon de le faire mais en utilisant ca ton appli ne
sera plus portable donc plus aucune raison d'utiliser java (le mieux
pour ca reste vb ou c# qui sont adapté a crosoft)
1 - tu developpe un lib dynamique (en c/c++) qui va manipuler la base de registre
2 - tu recupère je ne sais plus qu'elle api pour la manipulation de la base de registre
sinon en java pure tu as la class File qui permet de customizer le
repertoire de traivail ou encore si tu utilise la commande exec de la
class Runtime tu peux aussi customizer le repertoire de travail.
seareal
Messages postés24Date d'inscriptionmardi 20 juillet 2004StatutMembreDernière intervention 8 juin 2011 16 juin 2006 à 13:57
à l'heure actuelle je crée une nouvelle variable dans la base de registre dans laquelle je met le répertoire d'installation et je vais ensuite la rechercher via Preferences.userRoot().node(
"Mon Appli");
ça fonctionne bien mais c'est justement ce que je ne veux pas faire (rendre l'appli spécifique à un sytème). Je vais regarder les classes que tu m'as spécifié mais j'imagine que je ne trouverai pas la méthode qui va bien en Java.
Je pense que je vais plutot poser ma question sur un forum spécifique base de registre (si je trouve ça ) pour régler le problème à la base : lancer correctement mon appli depuis son répertoire de travail.
seareal
Messages postés24Date d'inscriptionmardi 20 juillet 2004StatutMembreDernière intervention 8 juin 2011 16 juin 2006 à 15:53
J'avoue que j'y connais pas grand chose (pour ne pas dire rien) sur l'étape entre le .jar et le .exe.
J'ai utilisé JSmoothGen avec les paramètre suivants :
Skeleton Chooser : Windowed Wrapper (je suppose que c'est celui à utiliser pour une appli graphique)
Executable : MonAppli.exe
Executable Icon: vide
Current Directory : vide (j'ai cru comprendre justement qu'il ne fallait rien y mettre)
puis mon jar et la classe main.
Je n'ai pas touché au reste.
Je précise bien que le .exe que je crée sera ensuite utilisé par un installeur qui doit permettre à l'utilisateur de spécifier n'importe quel répertoire évidemment.