Chemin relatif/absolu fichier [Résolu]

quasar06 9 Messages postés lundi 2 mars 2009Date d'inscription 2 février 2013 Dernière intervention - 2 févr. 2013 à 17:14 - Dernière réponse :  Utilisateur anonyme
- 3 févr. 2013 à 01:45
Bonjour,


J'ai créé un programme VB.Net qui utilise un fichier mem.txt pour sauvegarder des données.

Dans le code j'ai utilisé le chemin relatif de ce fichier.

Ce prog développé avec Visual Studio 2010 et déployé avec Windows Installer s'exécute correctement et le fichier mem.txt est bien créé (et mis à jour) dans le répertoire d'installation comme souhaité.

Par contre, ce même prog réécrit dans Visual Studio 2012 et déployé avec InstallShield 2012 LE me pose problème.

Le fichier mem.txt est bien présent dans le dossier d'installation (comme paramétré dans le Setup) mais lorsque je lance le prog par un raccourci placé sur le bureau le fichier mem.txt est créé et mis à jour sur le bureau !!!

En résumé, le fichier est créé non pas dans le dossier d'installation mais dans le dossier à partir duquel je lance le prog !!!

Je pense à un pb de chemin relatif/absolu, mais je n'ai pas trouvé de solution malgré mes recherches sur le Net.

Avez-vous une idée ?

Merci d'avance pour votre aide.
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
NHenry 14272 Messages postés vendredi 14 mars 2003Date d'inscription 15 octobre 2018 Dernière intervention - 2 févr. 2013 à 18:17
3
Merci
Bonjour,

Peut être voir avec :
http://msdn.microsoft.com/fr-fr/library/system.windows.forms.application.startuppath%28v=vs.80%29.aspx

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---

Merci NHenry 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de NHenry
Meilleure réponse
Utilisateur anonyme - 2 févr. 2013 à 18:35
3
Merci
Bonjour,

Public Const fichier_mem As String = "mem.txt" 'le chemin, donc le nom, de mon fichier (chemin relatif ici car fichier dans rép du prog)


Donc, tel que c'est écrit-là c'est le dossier en cours. Quand tu le lances du bureau, le dossier en cours, c'est le bureau.

Essaie avec cela:

dim chemin as string = string.concat(application.startuppath,"","mem.txt")
Public Const fichier_mem As String = chemin

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 2 févr. 2013 à 17:44
0
Merci
Bonjour,

Avez-vous une idée ?


Attendre le devin de service qui va nous dire quel code tu utilises pour enregistrer ton fichier. Parce qu'il semblerait que ton programme se contente de reprendre un paramètre fixé par l'installateur et pas par ton programme. Re parce que pour VB 2010 update 1 et VB2012, c'est le même compilateur qui est supposé donner le même résultat avec la même source.
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 2 févr. 2013 à 17:53
0
Merci
Bonjour,

Et puis pourquoi cette manie presque généralisée de vouloir imposer automatiquement des dossiers de fichiers à l'utilisateur; d'autant plus que c'est très facile de les demander at l'utilisateur et de les enregistrer et récupérer en utilisant My.settings. C'est à l'utilisateur de décider comment il va utiliser sa machine, pas au développer. C'est comme tous les Norton et Avast de ce monde qui imposent des choses automatique à l'utilisateur sans possibilité de les changer comme si cela convenait à tout le monde de faire une mise à jour à 20 heures, ou au lancement de l'ordinateur; de vrais hackers.
Commenter la réponse de Utilisateur anonyme
quasar06 9 Messages postés lundi 2 mars 2009Date d'inscription 2 février 2013 Dernière intervention - 2 févr. 2013 à 18:08
0
Merci
Bonjour cmarcotte,

Voici le code que j'utilise :

DECLARATION :
Public Const fichier_mem As String = "mem.txt" 'le chemin, donc le nom, de mon fichier (chemin relatif ici car fichier dans rép du prog)

CREATION FICHIER :
If Not File.Exists(fichier_mem) Then 'si le fichier n'existe pas on le crée

File.WriteAllText(fichier_mem, "*** Ce fichier contient les résultats des tests, merci de ne pas l'effacer ***")

End If

ECRITURE DANS FICHIER :
File.AppendAllText(fichier_mem, vbCrLf + vbCrLf & resultat & " - " & Format(Today, "dddd d MMMM yyyy") & " - " & Format(TimeOfDay, "H:mm:ss"))


Je souhaite simplement que le fichier mem.txt soit créé et mis à jour dans le dossier d'installation et non pas dans le dossier à partir duquel on lance le programme (comme c'est le cas avec VS 2010 et Windows Installer).

Merci.
Commenter la réponse de quasar06
quasar06 9 Messages postés lundi 2 mars 2009Date d'inscription 2 février 2013 Dernière intervention - 2 févr. 2013 à 18:55
0
Merci
Super, ça marche avec Application.StartupPath() !!!

Merci
cmarcotte et merci NHenry
Commenter la réponse de quasar06
NHenry 14272 Messages postés vendredi 14 mars 2003Date d'inscription 15 octobre 2018 Dernière intervention - 2 févr. 2013 à 20:52
0
Merci
Bonjour,

Pour concaténer des chemins, préférer plutôt Io.Path.Combine, cette fonction se débrouille automatiquement avec le séparateur de chemin.

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Commenter la réponse de NHenry
Utilisateur anonyme - 3 févr. 2013 à 01:45
0
Merci
Bonjour,

Pour concaténer des chemins, préférer plutôt Io.Path.Combine, cette fonction se débrouille automatiquement avec le séparateur de chemin.


C'est bien vrai ça, mais je n'y pense jamais. C'est une "découverte récente" et j'ai eu le temps de trop m'habituer aux vieilles méthodes (&), un peu recyclées.
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.