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

Langage Delphi Discussion :

Auto-déstruction


Sujet :

Langage Delphi

  1. #1
    En attente de confirmation mail Avatar de Matt2094
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 295
    Points : 237
    Points
    237
    Par défaut Auto-déstruction
    Bonjour à tous,

    J'ai créé un logiciel ainsi que son programme d'installation, mais la désinstallation a un problème ; je supprime le répertoire du logiciel qui est aussi celui du prog de désinstallation , et puisque le programme de désinstallation est en cours d'éxécution, rien de se passse ...

    Je me demandait donc si quelqu'un savait comment faire en sorte qu'une application "s'auto-détruise" ...

    P.S : je préfère ne pas utiliser de logiciel d'installation automatique

  2. #2
    Membre confirmé

    Homme Profil pro
    Chef de Projet ATIC
    Inscrit en
    Novembre 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de Projet ATIC
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 274
    Points : 508
    Points
    508
    Par défaut
    3 méthodes que j'ai déjà utilisé :

    1/ Créer un fichier .CMD qui est appelé après ton programme d'installation et qui supprime le répertoire (un .CMD peut s'auto-supprimer)

    2/ Stocker le programme de d'installation dans le répertoire de Windows et finir par un DEL "mon prog" dans le RunOnce (plus propre que le 3 pour l'utilisateur car le répertoire est supprimé tout de suite)

    3/ Tu peux supprimer ton programme au prochain redémarrage du PC, en plaçant une commande DOS dans la base de registre [RunOnce] :
    RD /S /Q "Répertoire"

    Il existe surement d'autres méthodes...

  3. #3
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    La 3 est sympa je trouve.

    Sinon pour la 2, bien aussi, mais je mettrais la commande plutot dans le dossier temporaire du user et non dans le dossier Windows
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  4. #4
    En attente de confirmation mail Avatar de Matt2094
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 295
    Points : 237
    Points
    237
    Par défaut
    Citation Envoyé par Okaryn
    3 méthodes que j'ai déjà utilisé :

    1/ Créer un fichier .CMD qui est appelé après ton programme d'installation et qui supprime le répertoire (un .CMD peut s'auto-supprimer)

    2/ Stocker le programme de d'installation dans le répertoire de Windows et finir par un DEL "mon prog" dans le RunOnce (plus propre que le 3 pour l'utilisateur car le répertoire est supprimé tout de suite)

    3/ Tu peux supprimer ton programme au prochain redémarrage du PC, en plaçant une commande DOS dans la base de registre [RunOnce] :
    RD /S /Q "Répertoire"

    Il existe surement d'autres méthodes...
    Mais, c'est quoi un .CMD ?

  5. #5
    Membre confirmé

    Homme Profil pro
    Chef de Projet ATIC
    Inscrit en
    Novembre 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de Projet ATIC
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 274
    Points : 508
    Points
    508
    Par défaut
    Citation Envoyé par Matt2094
    Mais, c'est quoi un .CMD ?
    Un fichier .CMD est un fichier de commandes DOS, la même chose qu'un fichier .BAT (je ne sais plus exactement la différence entre un CMD et BAT).

    C'est un simple fichier texte que tu peux créer en y insérant une ligne avec un DEL "monprog" ou un RD... pour supprimer un répertoire complet.

  6. #6
    En attente de confirmation mail Avatar de Matt2094
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 295
    Points : 237
    Points
    237
    Par défaut
    Merci pour l'info, mais je penses pas que ça va me servir pour ce problème, parce que le fait qu'il y ait une fenêtre DOS ouverte pendant la désinstallation, c pas super ...

    Sinon, ta 2e proposition a l'air bien, mais j'ai pas très bien compris ...

  7. #7
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Tu peux, à la fin de l'installation, créer un fichier batch de command DOS "c:\Endinstall.cmd" qui contiendrait les commandes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @ping 127.0.0.1 -n 10 > NUL
    del x:\monAppli\monexecutable.exe
    del c:\Endinstall.cmd
    Chaque ping sur le PC courant (127.0.0.1) prend environ 1 seconde.
    Le 10 est le nombre de ping, on attend donc 10 secondes, le temps pour MonExecutable de se fermer.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  8. #8
    Membre confirmé

    Homme Profil pro
    Chef de Projet ATIC
    Inscrit en
    Novembre 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de Projet ATIC
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 274
    Points : 508
    Points
    508
    Par défaut
    Citation Envoyé par Matt2094
    Merci pour l'info, mais je penses pas que ça va me servir pour ce problème, parce que le fait qu'il y ait une fenêtre DOS ouverte pendant la désinstallation, c pas super ...
    On oublie les méthodes 2 et 3 en effet, il n'est pas possible d'exécuter directement une commande DOS à partir de windows. Il faut être dans une console DOS

    Mais pour la 1ère méthode, la fenêtre DOS n'est visible que si tu le souhaites. Il suffit de ne pas l'afficher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    shellexecute(Application.Handle,nil,pchar('c:\monfichier.cmd'), nil, nil, sw_hide);

  9. #9
    En attente de confirmation mail Avatar de Matt2094
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 295
    Points : 237
    Points
    237
    Par défaut
    Merci, je teste ...

  10. #10
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Okaryn
    en effet, il n'est pas possible d'exécuter directement une commande DOS à partir de windows. Il faut être dans une console DOS
    Ou utiliser un shell
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cmd /C RD /S /Q "Répertoire"

  11. #11
    Membre confirmé

    Homme Profil pro
    Chef de Projet ATIC
    Inscrit en
    Novembre 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de Projet ATIC
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 274
    Points : 508
    Points
    508
    Par défaut
    Citation Envoyé par Laurent Dardenne
    Ou utiliser un shell
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cmd /C RD /S /Q "Répertoire"
    Il vaut mieux utiliser "command.com" plutôt que "cmd" qui n'existe pas dans les versions Windows 9x.

    Enfin, si command.com existe bien aussi sous NT4/2000...

    Ou alors déterminer la version de Windows avant et d'adapter la commande en conséquence.

  12. #12
    En attente de confirmation mail Avatar de Matt2094
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 295
    Points : 237
    Points
    237
    Par défaut
    J'ai un problème avec les .CMD : sous ME, ça marches pas, il veut pas les éxécuter ... j'ai donc éssayer de le faire sous BAT, je ne sais pas si ça fait une différence, mais j'ai deux problèmes avec ce format :
    - la fenêtre DOS s'affiche
    - quand je supprime le répertoire, il me demande confirmation

  13. #13
    Membre émérite
    Avatar de Merlin
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2002
    Messages
    524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 524
    Points : 2 883
    Points
    2 883
    Par défaut
    il y a des commandes BAT qui cachent les message comme @ECHO OFF ou d'autres que j'ai oubliées d'ailleurs... faut regarder dans les docs donc..

    Pour éviter la demande de confirmation il faut faire un pipe sur la commande et lui envoyer le caractère demandé.
    par exemple Delete *.* <conf.txt
    et dans conf.txt il y a "Y" suivi de Ctrl-Z (imaginons que ça attende Y pour yes).

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 207
    Points : 188
    Points
    188
    Par défaut
    Matt, est-ce qu'il y a une raison qui fasse que tu ne puisses pas utiliser un installeur type Inno Setup ? sinon, c'est probablement la solution la plus simple.

    L'autre solution, c'est peut-être de regarder comment fonctionne le processus de désinstallation d'un tel programme (les sources d'IS sont dispo)

  15. #15
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Pour supprimer un répertoire XXX sans confirmation, la commande est :
    Pour obtenir le détail des options, faire sous DOS :
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  16. #16
    Membre confirmé

    Homme Profil pro
    Chef de Projet ATIC
    Inscrit en
    Novembre 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de Projet ATIC
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 274
    Points : 508
    Points
    508
    Par défaut
    Citation Envoyé par Graffito
    Pour supprimer un répertoire XXX sans confirmation, la commande est :
    Cette commande ne supprime que les fichiers du répertoire XXX et de façon non récursive (sous-répertoire). Le répertoire XXX sera vide de fichier mais existera toujours.

    Pour supprimer un répertoire il s'agit de la commande indiquée plus haut :

    /Q = mode silencieux
    /S = Répertoire + Sous-Répertoires éventuels

    Citation Envoyé par Merlin
    Pour éviter la demande de confirmation il faut faire un pipe sur la commande et lui envoyer le caractère demandé.
    par exemple Delete *.* <conf.txt
    Ou plus simple :

    Ca envoi Y à la commande delete.

    Le problème c'est que la caractère attendu est différent selon les langues et O.S. / shells utilisés. Vaut donc mieux utiliser le paramètre /Q pour DEL ou RD

  17. #17
    Membre confirmé

    Homme Profil pro
    Chef de Projet ATIC
    Inscrit en
    Novembre 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de Projet ATIC
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 274
    Points : 508
    Points
    508
    Par défaut
    Citation Envoyé par Matt2094
    J'ai un problème avec les .CMD : sous ME, ça marches pas, il veut pas les éxécuter ... j'ai donc éssayer de le faire sous BAT, je ne sais pas si ça fait une différence, mais j'ai deux problèmes avec ce format :
    - la fenêtre DOS s'affiche
    - quand je supprime le répertoire, il me demande confirmation
    En effet, sous Windows 95/98/Me les fichiers CMD n'existent pas, tu as donc bien fait d'utiliser un BAT à la place

    La fenêtre s'affiche même en utilisant le paramètre SW_HIDE lorsque du appel ton BAT avec ShellExecute ? Eventuellement, essai avec un SW_MINIMIZE à la place, la fenetre sera réduite dans la barre des tâches.

    Pour le message de confirmation, voir mon post précédent...

  18. #18
    En attente de confirmation mail Avatar de Matt2094
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 295
    Points : 237
    Points
    237
    Par défaut
    Ca marche !
    Merci à tous!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [sgbd] Backup de tables MySQL auto, qqun sait ???
    Par Joelindien dans le forum SGBD
    Réponses: 31
    Dernier message: 26/05/2003, 17h59
  2. Pb d'auto-incrément sur une table v7
    Par Nivux dans le forum Paradox
    Réponses: 9
    Dernier message: 26/12/2002, 12h05
  3. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10
  4. Un Sender peut-il s'auto-détruire lors d'un onClick?
    Par Flo. dans le forum C++Builder
    Réponses: 2
    Dernier message: 17/07/2002, 10h31
  5. Réponses: 8
    Dernier message: 17/05/2002, 09h08

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