IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Où sauvegarder des données d'application?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 44
    Par défaut Où sauvegarder des données d'application?
    Bonjour,

    Je voudrais savoir s'il y avait des recommandations concernant la sauvegarde de certaines données d'une application?
    Je m'explique, j'ai une application pour laquelle j'aimerai sauvegarder certaines préférences et je voudrai le faire dans un fichier. Ces préférences peuvent être de différents types, par exemple : dernier fichier utilisé, log d'actions, ...

    Supposons que j'ai une application "monappli", la première idée qui m'est venu était d'enregistrer un fichier de préférence "mypref.xml" dans le répertoire :
    #sous windows
    "%USERPROFILE%/.monappli"
    #sous unix
    "$HOME/.monappli"

    Le répertoire .monappli me permettant ainsi de regrouper d'autres fichiers.

    Serait-ce la bonne méthode?
    J'ai constaté que certaines applications mettaient certains de leurs fichiers dans "%USERPROFILE%/Application Data/monappli" où mon appli est un nom d'application quelconque (par exemple Mozilla).
    Je me dis que je pourrais aussi le faire mais une autre question se pose : Le répertoire "Application Data" s'appelle t'il toujours ainsi? Selon la langue, est-ce que ça ne va se changer en "Données d'application" (pour le fr) par exemple?
    Dans ce cas existe t'il une variable d'environnement définissant le nom de "Application Data"?
    J'ai vu qu'il y avait une variable d'environnement %APPDATA%. Est t'elle forcément définie?
    Sous Vista, ces variables restent t'elles les mêmes?
    Sous Windows, je pourrais aussi mettre mes données d'application dans %ALLUSERSPROFILE% mais sous Unix?
    Sous Unix, on a la variable $HOME pour le compte utilisateur mais existe t'il une variable permettant de définir des données globales à tous les utilisateurs?

    Autre truc, j'ai un fichier de licence pour cette application. Où serait t'il le plus simple de le copier? dans le répertoire %USERPROFILE%/.monappli (et $HOME/.monappli) ? Je sais que le plus simple serait le répertoire où est déployé mon application mais là ce qui m'embête c'est Unix! On doit faire face à des sociétés qui gèrent de façon très stricte les droits sur les répertoires. Du coup c'est souvent un administrateur système qui s'occupe de faire les installs et quand un utilisateur lambda veut utiliser une application, il ne pourra pas les droits pour modifier le repertoire de l'application du coup enregistrer automatiquement un fichier dans le répertoire de l'appli me semble pas la bonne solution.

    Tous vos conseils, avis sur la question seront les bienvenus

  2. #2
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    La façon de faire des applications "sérieuses" c'est bien celle qui consiste à mettre dans Application Data sous win, dans ~/.ton_appli sous linux.

    La license tu peux aussi la mettre là.

    Qu'est-ce qui te gêne dans cette perspective ?

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Un autre choix mais qui ne concerne que l'environnement Microsoft, c'est la base de registres

    HKEY_LOCAL_MACHINE pour tout ce qui est global
    et HKEY_CURRENT_USER pour les données spécifiques utilisateur
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 44
    Par défaut
    La façon de faire des applications "sérieuses" c'est bien celle qui consiste à mettre dans Application Data sous win, dans ~/.ton_appli sous linux.
    Sous linux, supposons que l'admin installe l'application dans le répertoire /opt/monappli (accessible par tous). Soit un utilisateur User1, il va lancer l'appli et elle va lui demander un fichier de licence. L'appli va copier automatiquement cette licence dans le répertoire ~/.monappli. OK ça marchera toujours pour User1. Si un utilisateur User2 lance l'appli, celle-ci va chercher dans ~/.monappli pour voir si la licence y est or elle n'y sera pas puisqu'elle est dans le $HOME de User1. L'appli va lui redemander la licence mais, justement, c'est ce que je voudrais éviter. Tu vois mon souci?

    Y'a pas une variable d'environnement APPDATA ?
    À part ça, pas de grand rapport avec le C++.
    Pour APPDATA, je sais qu'elle existe (j'en ai parlé dans mon post) mais la question c'était est t'elle toujours définie? Bon j'ai eu ma réponse, elle est toujours définie au niveau Windows (de la même façon que USERPROFILE)

    À part ça, pas de grand rapport avec le C++.
    Désolé je ne l'ai pas précisé mais je suis dans un contexte C++. Du coup, je voulais savoir s'il existait une méthode C++ qui permette de récupérer un répertoire accessible pour ajouter des données d'application, une sorte de getSystemAppData() ou un truc dans le genre comme ça ça serait encore plus simple, ça serait standard et je serai bien content .

    HKEY_LOCAL_MACHINE pour tout ce qui est global
    et HKEY_CURRENT_USER pour les données spécifiques utilisateur
    Effectivement, mais malheureusement on veut éviter d'aller fouiller dans la base de registres. Si ça tenait qu'à moi, je le ferai mais bon...

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Pour obtenir le chemin de Application Data sous Windows, on est supposé utiliser la fonction SHGetFolderPath().

    Ou bien, pour des paramètres de configuration, les mettre dans HKEY_CURRENT_USER\Software\titchagui\MonApplication
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 106
    Par défaut
    Sous windows, si on separe en 3 les types fichiers necessaires:

    A. les fichiers statiques d'application commun (en general "program files").

    B. CSIDL_COMMON_APPDATA / les fichiers temporaires d'application (par example un systeme d'auto update qui doit telecharger un patch, car impossible de creer un fichier dans "program files" sans les droits superuser).

    C. CSIDL_LOCAL_APPDATA / les fichiers de config pour chaque utilisateurs.
    Plutot que d'utiliser la registry, pourquoi ne pas mettre un fichier de config xml la dedans?

    Sachant que pour modifier B et C tu n'a pas besoin d'avoir de droits super user (elevated pour Vista). Pour modifier A, tu dois relancer ton application avec ShellExecuteEx et le verb a "run as". Et moi qui pensait qu'il allait simplifier leur systeme avec Vista...

  7. #7
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Y'a pas une variable d'environnement APPDATA ?
    À part ça, pas de grand rapport avec le C++.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Généralités] Sauvegarde des données saisies d'une application Windev dans un disque DVD
    Par zonoelson dans le forum WinDev
    Réponses: 6
    Dernier message: 14/01/2014, 06h54
  2. Réponses: 5
    Dernier message: 27/02/2012, 10h44
  3. [VB.NET] Comment sauvegarder des données ?
    Par Aspic dans le forum VB.NET
    Réponses: 14
    Dernier message: 15/07/2007, 15h47
  4. Sauvegarder des données de configuration
    Par Yepazix dans le forum Débuter
    Réponses: 7
    Dernier message: 10/04/2006, 13h35
  5. sauvegarde des données des tables
    Par tomm dans le forum Bases de données
    Réponses: 18
    Dernier message: 27/04/2004, 21h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo