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 :

Quelles sont les différentes méthodes pour paramétrer un exécutable?


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 64
    Points : 34
    Points
    34
    Par défaut Quelles sont les différentes méthodes pour paramétrer un exécutable?
    Bonjour !
    Personne n'ayant répondu à mon premier soucis, je retente une formulation différente en espérant que quelqu'un ait une réponse...

    Pour être simple, j'ai un projet en C# pour lequel je génère un exécutable. J'aimerais que le programme publié soit portable sur d'autres machines.
    Le hic, c'est qu'il doit pouvoir recevoir des paramètres "externes" au programme dépendant de la machine sur lequel il est installé.

    J'ai joint un fichier de config au projet et tenté de modifié celui résultant de la publication maiis rien ne se passe... ce fichier là étant visiblement utile pour des données non modifiables après compilation...

    Quelqu'un pourrait-il m'aider ??

    C'est pas que c'est urgent... mais presque

    Merci d'avance !

  2. #2
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 29
    Points : 32
    Points
    32
    Par défaut
    Bonjour,

    J'aimerais t'aider malgré mes connaissances limitées en terme d'exécutable !
    J'ai toutefois déjà mis les mains dans ce genre de choses et je comprends que tu puisses avoir des problèmes avec ce genre de choses !

    Par conséquent je voudrais savoir comment tu utilises les paramètres que tu passes à ton exécutable.
    Et surtout comment as-tu configuré les propriétés de ton projet dans VS?
    Peux-tu également me donner un aperçut du bout de code qui utilise les paramètres passés à ton .EXE ?

    En espérant pouvoir t'aider !

  3. #3
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    Si j'ai bien compris, tu voudrais avoir un fichier ini dans lequel tu définis différemment certains paramètre selon la machine sur lequel se trouve l'application ?

  4. #4
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 29
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par ppphil Voir le message
    Si j'ai bien compris, tu voudrais avoir un fichier ini dans lequel tu définis différemment certains paramètre selon la machine sur lequel se trouve l'application ?
    En effet cela pourrait être une solution !
    Toutefois, cela dépend de ce que tu cherches à obtenir comme paramètres en fonction des machines.

    Affin que je comprenne mieux ton problème il me faudrai plus d'infos (cf: message précédent)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 64
    Points : 34
    Points
    34
    Par défaut
    Alors... je vais tenter d'être clair.
    En fait c'est une application qui se connecte à un serveur, et qui permet de scanner des docs et de les envoyer vers ce serveur. Du coup je stocke temporairement ces fichiers scannés en local, puisqu'il me faut les fusionner en un seul doc. Il y aura éventuellement plus tard plusieurs utilisateurs possibles...

    Donc mon fichier .ini devrait contenir des infos telles que l'adresse d'un serveur, son mdp, et le lien du répertoire stockant les fichiers scannés. Et donc éventuellement login + mdp de l'utilisateur

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    salut

    Le fichier de config est spécialement fait pour faire celà.

    Suffit d'ajouter les entrées dans ce fichier, et de les utiliser ensuite dans le programme

    Rien de vraiment compliqué ou de jamais fait !
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 64
    Points : 34
    Points
    34
    Par défaut
    Oui je me doute que ce n'est pas sorcier ni très compliqué ... Mais bon quand on débute ou qu'on n'avait fait face à ce cas de figure ... Ca semble être une montagne ... Surtout que rien sur le net de manière explicite m'aide ...

    Un exemple de code ou d'utilisation ??

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 64
    Points : 34
    Points
    34
    Par défaut
    Ou au moins un lien me permettant d'avancer

  9. #9
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Salut.

    D'abord, tu crées un fichier de config ("Add > New Item > Application Configuration File"). Ensuite, dans ton projet, tu ajoutes une référence à System.Configuration.

    Après, voici un petit exemple de fichier de config "app.config" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0"?>
    <configuration>
      <appSettings>    
        <add key="myKey" value="myKeyValue"/>
      </appSettings>
    </configuration>
    Pour accéder à une valeur du bloc appSettings :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    using System.Configuration;
    // ...
    string myKeyValue = ConfigurationManager.AppSettings["myKey"];
    Voilà, il existe également d'autres sections prédéfinies comme connectionStrings, mais tu peux en définir de nouvelles, etc., etc..

    Bon courage

    Edit : Pour récupérer une section créée à la main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0"?>
    <configuration>
      <mySection>
        ...
      </mySection>
    </configuration>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    object mySection= ConfigurationManager.GetSection("mySection");

  10. #10
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    J'avais fait un truc dans le genre, je te le livre brut

    Mais je peux aussi te dire que quand je connaissais rien en cSharp et j'ai du abordé le problème que tu cite je m'etais fait un bete fichier texte style.ini que je parsais moi meme
    Au dela tu peux utiliser les primitives de l'api windows pour liore et ecrire un ini
    Et une etape plus loin encore c'est la classe que je te propose "brut de décofrage" a toi de voir

    Fais attention il y a un bug potentiel dans l'assignation du path de sauvetage

    fileMap.ExeConfigFilename="??"

    Je te conseille de forcer un full path relatif a ton app !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    using System;
    using System.Windows.Forms;
    using System.Configuration;
     
     
    namespace BCPhoto
    {
     
      class ConfigPhoto
      {
        System.Configuration.Configuration Config;
     
        const string CST_SRC = "ImgPathSrc";
        const string CST_DST = "ImgPathDst";
        // ************************************************************************
        public String ImgPathSrc
        {
          get
          {
            if (Config.AppSettings.Settings[CST_SRC] == null)
            {
              return "";
            }
            return Config.AppSettings.Settings[CST_SRC].Value;
          }
          set
          {
            if (Config.AppSettings.Settings[CST_SRC] == null)
            {
              Config.AppSettings.Settings.Add(CST_SRC, value);
              Config.Save();
              return;
            }
            Config.AppSettings.Settings[CST_SRC].Value = value;
            Config.Save();
          }
        }
        // ************************************************************************
        public String ImgPathDst
        {
          get
          {
            if (Config.AppSettings.Settings[CST_DST] == null)
            {
              return "";
            }
            return Config.AppSettings.Settings[CST_DST].Value;
          }
          set
          {
            if (Config.AppSettings.Settings[CST_DST] == null)
            {
              Config.AppSettings.Settings.Add(CST_DST, value);
              Config.Save();
              return;
            }
            Config.AppSettings.Settings[CST_DST].Value = value;
            Config.Save();
          }
        }
        // ************************************************************************
        public ConfigPhoto()
        {
          ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
          fileMap.ExeConfigFilename = @"Photo.config";
          Config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
          if (Config.AppSettings.Settings[CST_DST] == null)
          {
            MessageBox.Show("Warning no Photo path defined ! Please select one");
            FolderBrowserDialog opf = new FolderBrowserDialog();
            opf.ShowNewFolderButton = false;
            opf.ShowDialog();
            Config.AppSettings.Settings.Add(CST_DST,opf.SelectedPath);
            Config.Save();
          }
        }
      }
    }
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  11. #11
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Et un tuto dvp de nico-pyright sur l'utilisation des fichiers de config

  12. #12
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,

    Sinon, un executable accepte des arguments lors de l'appel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static void Main(string[] args)
    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 64
    Points : 34
    Points
    34
    Par défaut
    Merci pour toutes vos réponses ...

    Je vais répondre un peu clairement à chacune de vos réponses...

    Déjà pour eusebe19, c'est ce que j'ai actuellement, mais lorsque j'exporte mon exécutable sur un poste différent, il y a problème car les éléments rentrés sur une des lignes dépend de l'ordinateur sur lequel on lance l'application et il ne prend malheureusement en compte que la donnée entrée lors de la publication de l'exécutable.
    Par contre, en bidouillant un peu, lorsque j'installe mon exécutable sur machine, je me suis rendu compte sous Vista que un espèce de dossier temporaire était généré au niveau des dossiers Utilisateurs de Windows... Et si on modifie le fichier.exe.config se situant là ... ça passe... mais c'est lourd à utiliser pour un utilisateur lambda ... C'est une solution mais si il y a plus simple je prends... Par contre, je n'ai pas réussi à trouver ce dossier sous XP... Quelqu'un a-t-il une idée ?? Mon exe doit être portable et installable sur plusieurs machines donc c'est relativement important on va dire ...

    Pour olibara, la solution proposée a l'air sympa mais ça me semble très bourrin ... A la rigueur une solution toute bête avec un fichier ini me paraitrait plus simple ... mais comment faire ?? Here is the question

    Enfin pour immobilis, j'y ai pensé ... mais le soucis c'est que l'utilisateur n'a pas accès au code et le paramètre doit varier selon la machine... C'est moi qui vais procéder aux installations sur machine, mais après il faut que ça soit transparent pour l'utilisateur... Donc un peu dur à mettre en place...

    Bon voilà... peut etre que je me suis viander sur certaines de mes explications ... J'espère qu'au pire vous me remettrez dans le droit chemin à défaut d'être un peu plus "éclairci" !
    Merci encore pour vos réponses !

Discussions similaires

  1. Réponses: 33
    Dernier message: 18/04/2009, 12h36
  2. Réponses: 7
    Dernier message: 23/03/2009, 22h38
  3. Réponses: 17
    Dernier message: 04/07/2008, 11h20
  4. Réponses: 1
    Dernier message: 07/12/2007, 15h28
  5. Quelles sont les compétences à avoir pour devenir un bon graphiste ?
    Par sidahmed dans le forum Webdesign & Ergonomie
    Réponses: 6
    Dernier message: 05/10/2007, 10h31

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