Bonjour,
Je suis novice en programmation C#. Donc la question va vous paraître simple, mais moi, je bataille depuis plusieurs jours.

Je dois créer une petite appli "A" qui va s'occuper de supprimer une autre appli "B". Apparemment, il suffi de supprimer le répertoire d'installation de "B" ainsi que ses raccourcis.
J'ai donc réussi à réaliser "A", dans le cas d'une installation par défaut de "B"(c:/programfile/appliB/).

Premier problème, je ne sais pas supprimer un raccourcis.

Deuxième problème, dans le cas où on installe "B" dans une autre partition que (c:/) cela me pose problème.
Pour cela, j'ai réussi a lister les différentes partitions du poste local, que j'insère dans un ComboBox:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
public Form2()
        {
            InitializeComponent();
            comboBox1.BeginUpdate();
            string[] unites_logiques = Directory.GetLogicalDrives();
 
            for (int j = 1; j < unites_logiques.Length; j++)
            {
                comboBox1.Items.Add(unites_logiques[j]);
 
            }
            comboBox1.EndUpdate();
        }
Pour l'instant...no problem! Mais c'est à ce moment là que ça se gâte. Il faut que l'utilisateur choisisse une partition proposée dans le combobox et puis qu'il clique sur "désinstaller" pour que la magie opère!

CODE du combobox où l'on choisi la partition:

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
 
private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e)
        {
            button2_clear.Enabled = true;
 
 
            string combo_tab = this.comboBox1.SelectedItem.ToString();
 
            //apparemment il faut un chemin du style: @"X:\\"
            change_path="@"+"\"" + combo_tab +"\""; 
            //la variable change_path a été déclarée au début de la classe                                                 
            //comme : public string change_path
 
            return ;
        }
CODE du bouton "désinstaller":

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
 
private void button2_clear_Click(object sender, EventArgs e)
        {
 
 
            label2.Text = "Recherche du dossier d'installation de appli_B.";
            try
            {
                DialogResult key = MessageBox.Show("Etes-vous sûr de vouloir désinstaller appli_B?", "Procédure de désinstallation", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
 
                bool oui = (key == DialogResult.Yes);
                if (oui)
                {
 
 
 
                    this.Cursor = Cursors.WaitCursor;
 
                    bool applic = false;
                    search_folder("appli_B", change_path ); 
 
                    this.Cursor = Cursors.Default;
 
                    if (!applic)
                    {
 
                        MessageBox.Show("Impossible de trouver le répertoire\nd'installation de appli_B dans le lecteur " + comboBox1.SelectedItem.ToString(), "Erreur!", MessageBoxButtons.OK, MessageBoxIcon.Error);
 
                    }
 
                }
                else 
                {
                    Application.Exit();
                }
 
            }
 
            catch (Exception ex)
            {
                // en quittant on enregistre les infos dans le fichier log
                StreamWriter Log = new StreamWriter(MyLog, true);
                Log.WriteLine(DateTime.Now);
                Log.WriteLine(ex.Message);
                Log.WriteLine("\nFermeture du programme---------------------------------------------------------");
                Log.WriteLine("\n");
                Log.Close();
            }
 
        }
CODE de la méthode search_folder("appli_B", change_path ):

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
 
private void search_folder(string foldername, string path)
        {
            this.Cursor = Cursors.WaitCursor;
 
 
            DirectoryInfo[] MyDirectories;
            DirectoryInfo Da = new DirectoryInfo(path);
            label2.Text = "suppression du dossier d'installation.";
 
            try
            {
                MyDirectories = Da.GetDirectories();
                if (MyDirectories.Length > 0)
                {
                    foreach (DirectoryInfo D_In in MyDirectories)
                    {
                        this.search_folder(foldername, D_In.FullName);
 
                        if (D_In.Name.ToLower() == foldername.ToLower())
                        {
 
                            //affichage et mise en route de la progressBar
                            progressBar1.Visible = true;
                            this.progressBar1.Maximum = MyDirectories.Length;
                            for (int i = 0; i < MyDirectories.Length; i++)
                            {
                                this.progressBar1.Value = i;
                                Refresh();
                            }
 
                            //efface de façon irréversible, tous les dossiers, sous dossiers et les fichiers, sans aucunes conditions.
                            Directory.Delete(D_In.FullName, true);
 
                            progressBar1.Visible = false;
                            button2_clear.Enabled = false;
                            label2.Text = "";
                            applic = true;
 
                            MessageBox.Show("Désinstallation réussie!", "Procédure de désinstallation", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            Application.Exit();
                        }
 
                    }
                }
                else
                {
                    applic = false;
 
 
                }
 
 
            }
            catch (Exception mes)
            {
                // on enregistre les infos dans le fichier log
                StreamWriter Log = new StreamWriter(MyLog, true);
                Log.WriteLine(DateTime.Now);
                Log.WriteLine(mes.Message);
                Log.WriteLine("\n");
                Log.Close();
 
            }
        }
Voilà tout! Si vous pouviez m'aider, ça m'aiderait énormément!
Merci