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

C# Discussion :

Désinstalation d'un programme C#


Sujet :

C#

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 5
    Par défaut Désinstalation d'un programme C#
    Bonjour à tous et à toutes,

    Après de nombreuse recherche sur internet qui furent plus ou moins fructueuse, j'ai décidé de vous poser, mon problème.

    Avec un ami, nous développons une application qui sera utiliser dans la maintenance d'ordinateur.
    Notre programme doit-être portable car il sera copier depuis le réseau et coller sur l'ordinateur à réparer.

    Une fois que l'utilisateur auras fini, il devra appuyer sur un bouton qui permettra la suppression du programme de l'ordinateur.

    Je me suis retrouver avec deux choix:
    -Le 1er : utiliser un fichier .bat qui me supprimera le dossier (et lui-même), or problème, le programme s'installe donc il est toujours présent dans les "programmes et fonctionnalités".

    -Le 2eme : je me suis dis qu'il y avais surement via Windows des lignes de commandes qui permettrait la désinstallation de mon programme avant ça suppression, or je n'ai trouver que du code permettant de supprimer via la cmd.


    Ma question est donc, comment faire pour désinstaller mon programme de l'ordinateur avant de pouvoir le supprimer?

  2. #2
    Membre très actif
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Billets dans le blog
    9
    Par défaut
    tu pux voire cet exemple

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 5
    Par défaut
    Merci, je vais lire tous ça, si d'autres ont des idées n'hésitez surtout pas à me les dire

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par datare Voir le message
    -Le 1er : utiliser un fichier .bat qui me supprimera le dossier (et lui-même), or problème, le programme s'installe donc il est toujours présent dans les "programmes et fonctionnalités".
    A-t-il vraiment besoin de s'installer ? Ne peut-il pas s'exécuter directement en "standalone" ? En général les applis dites "portables" ne s'installent pas...

    Sinon, un programme ne peut pas se supprimer lui-même, car le fichier est verrouillé pendant l'exécution. Par contre, il est possible de dire à Windows de supprimer le programme au prochain redémarrage. L'utilitaire MoveFile de SysInternals sert à ça. Tu peux embarquer cet outil dans ton appli (en tant que ressource) et l'utiliser pour programmer la suppression de ton programme, ou alors tu peux faire toi-même la manip dans le registre. En gros, il faut écrire dans HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations. Chaque entrée est composée de 2 lignes :
    - le chemin du fichier, préfixé par "\??\"
    - le nouvau chemin du fichier (pour renommage ou déplacement), ou une ligne vide pour le supprimer

    Voilà un bout de code qui fait la manip dans le registre :
    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
    static void ScheduleDelete(string path)
    {
        ScheduleRename(path, null);
    }
     
    static void ScheduleRename(string path, string newPath)
    {
        if (string.IsNullOrEmpty(path))
            throw new ArgumentNullException("path");
        path = @"\??\" + path;
        if (!string.IsNullOrEmpty(newPath))
            newPath = @"\??\" + newPath;
        else
            newPath = string.Empty;
     
        using (var key = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Session Manager", true))
        {
            var strings = ((string[])key.GetValue("PendingFileRenameOperations")).ToList();
            if (strings.Count % 2 != 0) strings.Add(string.Empty);
            strings.Add(path);
            strings.Add(newPath);
            key.SetValue("PendingFileRenameOperations", strings.ToArray());
        }
    }
    (attention, il faut que le programme s'exécute en tant qu'administrateur)

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 5
    Par défaut
    Merci tomlev, la version bêta de notre projet doit-être rendue aujourd'hui, je modifierai mon code avec ce que tu ma donné plus tard, en attendant les utilisateurs feront eux même la manipulation pour supprimer le programme

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 5
    Par défaut
    Bonjour, j'ai eu des modifications.

    Le programme étant lancé sur des ordinateur infecté, il me faut limiter au maximum les accès au réseau.

    Suite aux conseils d'un de mes professeurs, j'ai décider d'établir mon programme sur une clé USB en lecture seul.
    L'utilisateur copierai le programme sur l'ordinateur sur lequel il travail. Une fois son boulot effectuer il appuierai sur un bouton "désinstalation" qui supprimerai le programme du pc via l'éxecution d'un fichier .bat.

    Or avez-vous des conseils sur comment "kill" le processus ou de détecter ça fin (fermeture du programme via un this.close) du programme afin de permettre la suppression du dossier qui le contient.
    Actuellement j’effectue une tempo via un ping afin d'attendre la fin du processus.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 5
    Par défaut
    Pour le kill du processus, le problème est régler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     private void button1_Click(object sender, EventArgs e)
            {
     
                this.Close();
                Process.Start("C:/Users/Stagiaire-Albin/Desktop/suppr_Bat.bat");
            }
    Le programme ce ferme, puis lance le fichier .bat en arrière plan, j'ai malgré tous un petit soucis. Le fichier .bat sera dans le dossier ou est compris le code or comment sélectionner son chemin d'accès par défaut?

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/12/2014, 22h08
  2. probleme avec la désinstallation d'un programme
    Par kroma23 dans le forum Windows XP
    Réponses: 2
    Dernier message: 27/03/2013, 13h32
  3. Message lors de la désinstallation d'un programme
    Par joujou_le_fou dans le forum Windows
    Réponses: 2
    Dernier message: 06/08/2008, 08h45
  4. Désinstallation d'un programme VB
    Par olive_le_malin dans le forum Installation, Déploiement et Sécurité
    Réponses: 2
    Dernier message: 03/01/2006, 23h13
  5. [DELPHI 2005] Désinstaller un programme par programmation
    Par danbern dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 02/06/2005, 17h05

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