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

Windows Forms Discussion :

Setup et écriture/lecture de données [Débutant]


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2020
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2020
    Messages : 16
    Par défaut Setup et écriture/lecture de données
    Bonjour à toutes et tous

    Voici mon problème :

    J'ai créé un jeu accessible à tout le monde. Chaque nouveau joueur donne un pseudo et un mot de passe.
    Quand il valide, ceux-ci sont mémorisés dans un dossier personnalisé à son nom. Dans mon cas, cela donne :
    C:\Users\malco\Desktop\MOT_MYSTERE\Mot_Mystere 7.0\Mot_Mystere 5.0\bin\Debug\netcoreapp3.1\nomDuJoueur
    car c'est là que par défaut la propriété "WriteAllText" de C# enregistre des fichiers.
    Je sais créer un dossier "JOUEURS" dans mon projet et y mettre toutes les infos des joueurs mais cela ne change rien au problème de chemin relatif !!

    J'ai tenté de créer un dossier d'installation de 2 façons :

    1. avec Publier>ClickOnce : cela ne fonctionne pas.
    2. avec un Setup cela ne fonctionne pas non plus.
    Dans les 2 cas l'appli s'installe bien mais quand je la lance rien ne se passe.

    Le seul cas où cela fonctionne c'est si je l'installe sur MON ordinateur ! (il écrit les fichiers dans le chemin écrit plus haut)

    La raison je pense :
    le chemin d'accès aux fichiers écrit dans mon projet pour lire et écrire les données du joueur sur disque passe par un chemin local, celui de mon ordinateur.
    Je sais que la solution idéale serait d'utiliser la sérialisation mais je ne veux pas réécrire tout mon projet car cela fait un an que je travaille dessus et il est enfin prêt !!

    comment puis-je faire ?
    y a t'il un moyen d'inclure un dossier dans mon projet qui servirait de référence de chemin d'accès à l'écriture/lecture des données du joueur (avec "WriteAllText/ReadAllText") et d'importer celui-ci dans mon installation ?

    Je reste disponible si vous avez besoin d'autres infos. Au secours !! Je suis si proche de la fin !!

    Merci d'avoir pris le temps de me lire

    Bonne journée

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 987
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 987
    Par défaut
    Quand tu utilises File.WriteAllText tu dois lui fournir un chemin.
    Qu'as tu mis ?

    Et puisque j'ai une petite idée de la réponse, voici un peu de doc qui te sera utile
    https://docs.microsoft.com/fr-fr/dot...r?view=net-5.0

  3. #3
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2020
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2020
    Messages : 16
    Par défaut Application.StartupPath
    Bonjour popo

    Merci déjà d'avoir pris le temps de lire mon problème car j'en ai mis une tartine.

    Pour répondre à ta question sur le chemin que je fournis à File.WriteAllText c'est celui que j'ai mis dans mon 1er message. Il accède au dossier : bin\Debug\netcoreapp3.1 de mon projet.

    En fait, tout fonctionne sur mon ordinateur comme tu l'as compris. Cet idiot de programme (le miens ^^) écrit toutes les données de l'application publiée dans mon projet en cours !!
    je sais bien qu'il ne fait que ce que je lui programme de faire. C'est pourquoi j'ai besoin de lui donner un chemin qu'il pourra gérer quand il sera publié.

    Et là... j'en trouve de toutes les couleurs sur le net. : Application.StartupPath , "Accéder aux données locales et distantes dans les applications ClickOnce", utiliser le fichier temp de l'ordinateur distant. Waouh !! ma tête explose. Il y a tellement de possibilités, comment trouver la mienne ?

    Bon je vais lire la doc que tu m'a mis en lien et je t'en remercie.

    Espérons que ça va m'aiguiller vers la solution.

    Bonne journée

    PS : En temps j'ai essayé d'autres solutions. J'ai remplacé mon chemin d'accès par :

    1. private readonly string dossierDesJoueurs = Application.StartupPath; et la publication fonctionne bien sur mon ordinateur mais pas sur un autre ordinateur identique au mien.

    2. private readonly string dossierDesJoueurs = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); Idem, l'application s'installe parfaitement mais rien ne se passe (sur l'autre ordinateur).

    Mon dossier d'installation comprends ceci : Nom : dossier publication.png
Affichages : 223
Taille : 10,4 Ko (hmmm c'est sensé être une image en png mais je ne la vois pas dans ce message)

    Il comporte : dossier : Application Files + Launcher.exe + Mot_Mystere 5.0.application + Mot_Mystere 5.0.deps.json + Mot_Mystere 5.0.exe + Mot_Mystere 5.0.pdb + Mot_Mystere 5.0.runtimeconfig.json + setup.exe

    C'est tout .
    Depuis cette modification de chemin d'accès je je sais même plus où vont se nicher les dossiers des joueurs mais bon, ca fonctionne ... sur mon ordinateur seulement.. sniff... ne sais plus où chercher.

  4. #4
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2020
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2020
    Messages : 16
    Par défaut impossible de lire ma publication sur un autre ordinateur similaire
    En temps j'ai essayé d'autres solutions. J'ai remplacé mon chemin d'accès par :

    1. private readonly string dossierDesJoueurs = Application.StartupPath; et la publication fonctionne bien sur mon ordinateur mais pas sur un autre ordinateur identique au mien.

    2. private readonly string dossierDesJoueurs = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); Idem, l'application s'installe parfaitement mais rien ne se passe quand je lance l'application via le menu programme (sur l'autre ordinateur).

    Mon dossier d'installation comprends ceci :
    Nom : dossier publication.png
Affichages : 266
Taille : 11,3 Ko

    C'est tout .

    Depuis cette modification de chemin d'accès je je sais même plus où vont se nicher les dossiers des joueurs mais bon, ca fonctionne ... sur mon ordinateur seulement.. sniff... ne sais plus où chercher.
    Images attachées Images attachées   

  5. #5
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 987
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 987
    Par défaut
    Application.StartupPath, c'est le chemin où est exécutée ton application.
    Si tu l'installes dans un endroit requérant une élévation de privilège (genre un sous répertoire dans progam files), ça ne pourra pas fonctionner en l'état.

    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), c'est le répertoire C:\Users\<User>\AppData\Roaming.
    où <User> est le nom de l'utilisateur, donc malco chez toi.

    Tu as normalement le droit d'écrire dedans mais ce n'est pas une bonne pratique, il faut créer un sous répertoire portant le nom de ton application.

    Pour info :
    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
    ProgramFiles            C:\Program Files (x86) 
    ProgramFilesX86         C:\Program Files (x86) 
    CommonProgramFiles      C:\Program Files (x86)\Common Files 
    CommonProgramFilesX86   C:\Program Files (x86)\Common Files 
    CommonApplicationData   C:\ProgramData 
    CommonStartMenu         C:\ProgramData\Microsoft\Windows\Start Menu 
    CommonPrograms          C:\ProgramData\Microsoft\Windows\Start Menu\Programs 
    CommonAdminTools        C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools 
    CommonStartup           C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup 
    CommonTemplates         C:\ProgramData\Microsoft\Windows\Templates 
    UserProfile             C:\Users\<User> 
    LocalApplicationData    C:\Users\<User>\AppData\Local 
    CDBurning               C:\Users\<User>\AppData\Local\Microsoft\Windows\Burn\Burn 
    History                 C:\Users\<User>\AppData\Local\Microsoft\Windows\History 
    InternetCache           C:\Users\<User>\AppData\Local\Microsoft\Windows\INetCache 
    Cookies                 C:\Users\<User>\AppData\Local\Microsoft\Windows\INetCookies 
    ApplicationData         C:\Users\<User>\AppData\Roaming 
    NetworkShortcuts        C:\Users\<User>\AppData\Roaming\Microsoft\Windows\Network Shortcuts 
    PrinterShortcuts        C:\Users\<User>\AppData\Roaming\Microsoft\Windows\Printer Shortcuts 
    Recent                  C:\Users\<User>\AppData\Roaming\Microsoft\Windows\Recent 
    SendTo                  C:\Users\<User>\AppData\Roaming\Microsoft\Windows\SendTo 
    StartMenu               C:\Users\<User>\AppData\Roaming\Microsoft\Windows\Start Menu 
    Programs                C:\Users\<User>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs 
    AdminTools              C:\Users\<User>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools 
    Startup                 C:\Users\<User>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 
    Templates               C:\Users\<User>\AppData\Roaming\Microsoft\Windows\Templates 
    Desktop                 C:\Users\<User>\Desktop 
    DesktopDirectory        C:\Users\<User>\Desktop 
    Favorites               C:\Users\<User>\Favorites 
    MyMusic                 C:\Users\<User>\Music 
    MyDocuments             C:\Users\<User>\OneDrive\Documents 
    MyDocuments             C:\Users\<User>\OneDrive\Documents 
    MyPictures              C:\Users\<User>\OneDrive\Pictures 
    MyVideos                C:\Users\<User>\Videos 
    CommonDesktopDirectory  C:\Users\Public\Desktop 
    CommonDocuments         C:\Users\Public\Documents 
    CommonMusic             C:\Users\Public\Music 
    CommonPictures          C:\Users\Public\Pictures 
    CommonVideos            C:\Users\Public\Videos 
    Windows                 C:\Windows 
    Fonts                   C:\Windows\Fonts 
    Resources               C:\Windows\resources 
    System                  C:\Windows\system32 
    SystemX86               C:\Windows\SysWoW64

  6. #6
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2020
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2020
    Messages : 16
    Par défaut Merci
    Bonjour popo

    Tout d'abord milles excuses de ne pas t'avoir répondu avant mais je te remercie de ton post qui m'a vraiment aidé.

    J'ai un autre problème :

    Je cherche une choser simple et pourtant je rame depuis une semaine :
    Je développe un jeu en WPF.
    J'ai un dossier "jeu" que je sais créer et auquel je sais accéder (grâce à toi). Dedans j'ai des dossiers "joueur1, joueur2 etc..
    Sur un click je veux tester si le nom du dossier du "joueur1" par exemple existe bien dans le dossier "jeu".

    Je ne te listerai pas toutes les propriétés system IO que j'ai testé ce serait trop long.
    Franchement j'ai tout regardé (mal sans doute) sur internet avec toutes les possibilités mais je n'arrive pas à synthétiser toutes les solutions proposées et je suis en panne.

    Pourrais-tu à nouveau m'aider ?
    Merci

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

Discussions similaires

  1. Écriture/Lecture et traitement de données situées dans un .txt
    Par Zoqire dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 12/12/2017, 18h19
  2. Réponses: 3
    Dernier message: 03/12/2015, 11h02
  3. Réponses: 7
    Dernier message: 27/06/2005, 11h33
  4. [JList] Lecture des données sauvegardées dans un fichier
    Par Myogtha dans le forum Composants
    Réponses: 7
    Dernier message: 10/06/2004, 21h05
  5. lecture de données a partir de fichier
    Par sana dans le forum MFC
    Réponses: 5
    Dernier message: 21/01/2004, 12h57

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