Nous sommes le Sam 19 Juil, 2025 20:20
Supprimer les cookies

Portabilisation - gestion des préférences

Image Image Forum dédié à notre projet de clé USB nomade libre sous Windows

Mar 02 Juin, 2009 12:18

Bonjour,

Je cherche à portabiliser une application java. En suivant le tutoriel du site framakey, j'arrive à quelque chose qui fonctionne.

Le seul problème, c'est que les préférences sont stockées dans le registre et non dans un fichier. En regardant les sources j'ai vu qu'elles sont gérées par le package java.util.refs* ou quelque chose comme ça, et d'après ce que j'ai pu comprendre de la doc java, ce package gère automatiquement les préférences en fonction du système d'exploitation, en l'occurrence pour windows il les stocke dans le registre.

Y a-t-il un moyen simple de dire à java de mettre les préférences dans un fichier sans devoir tout coder (je ne suis pas programmeur, et je n'ai pas trop de temps pour apprendre) ? Ou alors est-ce qu'il pourrait être envisageable de faire une copie des clés de registre concernées pendant la fermeture de l'appli, pour les réinjecter lors d'une ouverture suivante ? (mais dans ce cas il faut aussi une copie des clés originales du pc hôte pour ne pas modifier la config locale...)

Bref, que me conseillez-vous ?

Merci d'avance
Agent Ty

Messages : 169
Géo : Lyon / St Etienne

Mar 02 Juin, 2009 13:19

Je laisse un expert java te répondre (ça n'est clairement pas mon langage de prédilection).

Par contre, si tu veux un exemple de "substitution" de base de registre, tu peux télécharger PortablePaint.net et son fichier /PortablePaintNetCode/portablePaintNet.au3 :

Code: Tout sélectionner
RunWait("regedit /ea BackupFK\origine.reg HKEY_CURRENT_USER\Software\Paint.NET")      ;on fait un backup si nécessaire
RunWait("regedit /s BackupFK\PaintNETDEL.reg")                                 ;on importe du vide (= on fait le vide dans la clé)
RunWait("regedit /s BackupFK\PaintNET.reg")                                    ;on importe l'éventuel backup
RunWait("Paint.NET\PaintDotNet.exe", "Paint.NET")                              ;on lance paint.net
RunWait("regedit /ea BackupFK\new.reg HKEY_CURRENT_USER\Software\Paint.NET")         ;on a quitté paint.net, on exporte les nouvelles clés dans new.reg
FileMove(@ScriptDir & "\BackupFK\new.reg", @ScriptDir & "\BackupFK\PaintNET.reg", 1)   ;on écrase le backup par new.reg
FileDelete(@ScriptDir & "\BackupFK\new.reg")                                 ;on efface l'export new.reg
RunWait("regedit /s BackupFK\PaintNETDEL.reg")                                 ;on importe du vide (= on fait le vide dans la clé)
RunWait("regedit /s BackupFK\origine.reg")                                    ;on remet les clés d'origine
FileDelete(@ScriptDir & "\BackupFK\origine.reg")                              ;on efface l'export des clés d'origine


Le fichier au3 est à recompiler avec autoIt (sapusépalibre).
Avec de mini adaptations, tu devrais t'en tirer, je pense.
*Nouveau venu ? Lisez les règles d'utilisation de ce forum
*Une question à poser ? Assurez vous qu'on vous répondra
*Soutenir Framasoft ? Participez à l'annuaire !
*"T'es où ?" Inscrivez vous sur la FramaMap
pyg

Avatar de l’utilisateur
Messages : 7858
Géo : Lyonnais

Mar 02 Juin, 2009 15:46

Merci pyg pour ta réponse.

L'idéal pour moi serait de trouver un moyen simple de modifier le code source, en effet en cas de plantage on risque de ne pas restaurer la config d'origine, ce qui pourrait être gênant.

Cela dit, si ce n'est pas possible je vais regarder ce que tu m'as conseillé du côté du lanceur, soit via autoIt soit via NSIS avec le plugin registry.nsh qui permet de faire globalement la même chose (cf ce tutoriel). Ca a l'air à ma portée.
Agent Ty

Messages : 169
Géo : Lyon / St Etienne

Mar 02 Juin, 2009 18:41

Salut,

Modifier le code source signifie devoir le faire à chaque mise à jour d'où une belle galère rapidement.

En cas de plantage, c'est l'appli principale qui plante, pas le lanceur. Il suffit donc de mettre un test à la fin du lanceur pour voir si la sortie s'est réalisée normalement.
C'est l'idée générale, je n'ai pas réfléchi à ton cas particulier.

Privilégie NSIS, AutoIt sapusépalibre :twisted:


EDIT :
En cherchant autre chose, je suis tombé sur un petit utilitaire permettant de convertir un fichier reg en script NSIS avec les commandes qui vont bien.
Je ne l'ai pas testé mais si besoin le voilà => http://nsis.sourceforge.net/Reg2Nsis_-_ ... S_commands
Vécu : "J'ai une version crackée d'OpenOffice, c'est pour ça qu'elle est en anglais"
fat115

Avatar de l’utilisateur
Messages : 930
Géo : Ardèche ... du nord

Ven 05 Juin, 2009 09:15

Je n'avais pas vu ton programme, ça semble intéressant, ça m'aurait peut-être évité de galérer.

En fait j'ai un petit souci avec la gestion du registre, java colle ses préférences dans HK_USERS/numéro-qui-représente-un-utilisateur/... et apparemment on n'y a pas accès avec HK_CURRENT_USER (je pensais que c'était juste un lien vers le numéro qui va bien...)

Quelqu'un aurait une idée ?
Agent Ty

Messages : 169
Géo : Lyon / St Etienne

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit