Retrouver le chemin d'un exe

Signaler
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
3 décembre 2007
-
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
3 décembre 2007
-
Bonjour à tous,

J'ai un petit problème, supposont que les utilisateurs d'un programme X peuvent choisir l'emplacement de l'installation, et que mon programme Y veuille ouvrir l'exe du programme X, comment faire pour retrouver le chemin de l'.exe? (le processus peut-être lancé ou non).
J'ai cherché un peu partout et jai trouvé une solution si le processus est lancé, mais ca ne me convient pas car comment faire quand le processus X n'est pas lancé?

Merci  d'avance pour votre aide

17 réponses

Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
63
Hello,

Si ce n'est pas depuis tom programme, et donc que l'application peut être lancée ou non, le seul moyen, c'est de le mettre à un endroit fixe.

Ca peut être une Base de donnée, une clef de registre, ou un fichier.
Même si je n'aime pas toucher au registre, dans ton cas, c'est peut-être la solution la plus propre.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Salut,
Généralement, dans ce genre de situations, le programme check le répertoire par défaut d'install et s'il ne trouve pas son bonheur, demande à l'utilisateur de spécifier le path où se trouve le fichier nécessaire. C'est à mon sens la manière la plus propre ;-)

<hr />
-Blog-
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
63
C'est vrai, les solutions les plus simples sont souvent les meilleures.
Mais comme je travaille avec des services ces derniers temps, j'ai tendance à oublier qu'on peut demander quelque chose à l'utilisateur. 

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
3 décembre 2007

Effectivement je n'avais pas pensé à cette solution qui ets la base de registre...

Comment faire pour qu'au lancement de mon form donc dans l'évenement Form1_Load par exemple, mon programme aille lire l'emplacement du programme X dans la base de registre et l'enregistre dans la variable TextBox1 de mon programme?
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
3 décembre 2007

J'ai posté longuement désolé, quel méthode est la mieux selon vous?
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
63
Hello,

En principe, j'essaie autant que possible d'éviter de toucher au registre, non pas par peur , mais simplement parce que le .net ne devrait pas en avoir besoin.
C'est pour cette raison que j'ai mis "peut-être la solution la plus propre"

Donc, si ça ne pose pas de problèmes de demander le path à l'utilisateur, fais-le de cette manière.
Si tu veux automatiser au maximum, utilise quand même la base de registre.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Les accès à la registry sont très simples, tu trouves des exemples partout comme par exemple ici.
En ce qui me concerne, je choisirais la solution de demander à l'utilisateur le path lors du tout premier démarrage du programme (puis tu stockes sa saisie dans un fichier xml par exemple).

<hr />
-Blog-
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
3 décembre 2007

Merci pour vos réponses finalement je vais opter pour la solution du choix à l'utilisateur du path.

private void Form1_Load(object sender, EventArgs e)
{
    if (File.Exists("C:\\Program Files\\Repertoire\\programmex.exe) == true)
    {
       this.TextBox1.Text = "C:\\Program Files\\Repertoire\";
    }
    else
    {
       folderBrowserDialog1...
    }
}

J'ai essayé ceci mais j'aimerais plutot stocker dans un fichier .xml contenu dans mon exe comment faire? Est-ce correct mon code?
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
3 décembre 2007

Après avoir essayé dans tous les sens je me rend compte que la propriété folderBrowserDialog1.Filter n'éxiste pas... Comment faire pour que l'utilisateur puisser choisir le repertoire ou il est contenu un "programmex.exe" et ne sauvegarder dans le fichier .xml que le répertoire du style ""C:\\Program Files\\Repertoire\" dans une variable?
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Tu peux utiliser un OpenFileDialog pour qu'il puisse browser sur son fichier.
Ensuite tu récupères le path sélectionné (path complet ou juste répertoire parent selon le besoin).

Pour l'écritre dans Xml, voire Serialization (XmlSerializer), XmlDocument/XmlWriter

<hr />
-Blog-
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
3 décembre 2007

J'ai réussi à créer le code du OpenFileDialog mais je n'arrive pas à récupérer le repertoire parent et le stocker dans un .xml, une proposition? Merci beaucoup!
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
63
Hello,

Si tu as un OpenfileDialog ofd :

string parentDirectory=
null;

if (
ofd.
ShowDialog() ==
DialogResult.
OK)

   parentDirectory =
new DirectoryInfo(
ofd.
FileName).
Parent.
FullName;

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
3 décembre 2007

Bonjour,

Pourquoi passer l'argument "null" à la variable parentDirectory?

Merci
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
63
Par habitude, j'initialise tout mes objets à null si je ne connais pas leur valeur, mais ce n'est pas vraiment nécessaire.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
3 décembre 2007

Merci pour ta réponse SharpMao cela fonctionne, pour en revenir à la variable "parentDirectory" ici, quel est la meilleure méthode pour moi pour stocker ma variable et pouvoir la réutiliser n'importe ou dans le code? Le fichier .xml serait en plus de l'exe? ou serait compiler dans l'exe?
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Les references type sont automatiquement initialisés avec null.Pour les values types, ça dépend (int 0; bool false, etc).

Le fichier xml est en plus de l'exe. (c'est la façon la plus simple et la plus logique à mon avis...)

<hr />
-Blog-
Messages postés
89
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
3 décembre 2007

Le problème c'est que j"aimerais n'avoir aucun fichier à coter, le plus juducieux serait de faire avec la méthode textBox1 comme je l'avais cité? existe-t-il un autre moyen?