Chemin relatif/absolu fichier [Résolu]

Signaler
Messages postés
9
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
2 février 2013
-
 Utilisateur anonyme -
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.

8 réponses

Messages postés
14796
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 juin 2021
155
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
---

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

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.

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.
Messages postés
9
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
2 février 2013

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.
Messages postés
9
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
2 février 2013

Super, ça marche avec Application.StartupPath() !!!

Merci
cmarcotte et merci NHenry
Messages postés
14796
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 juin 2021
155
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
---

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.