Autodelete - une application qui s'auto supprime à sa fermeture

Soyez le premier à donner votre avis sur cette source.

Vue 7 281 fois - Téléchargée 456 fois

Description

Je recherchais récemment une solution pour pouvoir supprimer le fichier exécutable de mon application en .Net après sa fermeture. L'idée d'embarquer une seconde application ou un script pou faire le travail ne m'enchantais pas.

J'ai donc décidé de poser la question sur le forum. Les réponses ont fusées, elle sont diverses et variés.
J'ai choisi la solution la plus adapté à mon besoin même si elle n'est pas la plus "propre". Si elle ne vous convient pas alors vous trouverez surement votre bonheur en lisant les réponses des membres.

http://www.vbfrance.com/forum/sujet-BAR-COMMANDE-AVEC-RETARD_1532814.aspx

Un grand merci à eux.

Source / Exemple :


Dim pInfos As New ProcessStartInfo
With pInfos
    .FileName = "cmd.exe"
    .Arguments = "'/K ""for /L %I IN (1 1 10000) DO ping -n 2 127.0.0.1 > NUL && if EXIST " & _
                 Application.ExecutablePath & " (del " & Application.ExecutablePath & ") ELSE exit"
    .CreateNoWindow = False
    .UseShellExecute = True
    .WindowStyle = ProcessWindowStyle.Hidden
End With
Process.Start(pInfos)
Application.Exit()

Conclusion :


Cette application est sans prétention. Elle est une adaptation en .Net du code Delphi de Caribensila.

Le but est simple, lancer une invite de commande en boucle avec un ping bidon tant que l'application est ouverte (autrement dit un batch). Une fois l'application fermée le batch supprime le fichier exécutable ayant lancé la commande.

Ce que fais ce programme: Il supprime l'exécutable du disque lors de la fermeture de celle-ci sans aucun programme ou script tiers.

Voila.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
griffondorsonic Messages postés 97 Date d'inscription lundi 5 juillet 2010 Statut Membre Dernière intervention 21 mars 2012 2
13 sept. 2011 à 09:34
ouais mais du coup, ça fais un peu comme les navigateur piwee si on met "copy" il vas rechercher la mise à jour et mettre la nouvelle version et l'autodelete c'est pas mal non plus, il suffirais de créé une option si on veut que l'application se supprime tout seul ou non.

pas mal comme sources ;)
cs_piwee Messages postés 34 Date d'inscription lundi 10 juin 2002 Statut Membre Dernière intervention 20 octobre 2009
13 sept. 2011 à 07:48
Salut,

J'ai trouvé une autre utilisation à cette source : la mise à jour automatique de l'application.
Si une nouvelle version de l'application est disponible, au lieu de faire un "DEL", on fait un "COPY" du nouvel exécutable et on le redémarre.
Ça évite d'avoir un programme en plus qui copie la nouvelle version.
Après quelques recherches, j'ai trouvé la bonne syntaxe de la commande DOS à faire.
Ça fonctionne bien.

J'ai mis 10 comme vote.

Merci.
Utilisateur anonyme
11 sept. 2011 à 17:33
Salut Mayzz,
Je me suis permis de modifier un peu ta source et de créer un nouvel post, pour ceux qui disent qu'il ne voient pas l'utilité...
http://www.vbfrance.com/codes/VERSION-DEMO-NOS-PROGRAMMES_53576.aspx
Merci
Utilisateur anonyme
8 août 2011 à 16:03
Salut Mayzz,
Je trouve très utile ton app, surtout pour les mauvais payeurs (quand tu fais un prog et le client refuse de te payer après)
J'ai donc ajouté une astuce qui va inscrire dans le fichier LISEZMOI.txt un compteur du nombre de démarrages autorisés.
Il faut juste créer le LISEZMOI.txt dans le répertoire de l'application, si le gars ne le sait pas l'application s’efface et c'est fini.
Je peux t'envoyer le tout par mail si tu veux carlos_gwada@hotmail.fr (j'ai visual studio 2010)
Regarde:

Public Class AutoDelete
Public Str, St As String
Public Rt As Integer

Private Sub btn_Del_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Del.Click
Me.Close()
End

End Sub

Private Sub AutoDelete_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Str = (Val(Str) + 1)
FileOpen(1, Application.StartupPath & "\LISEZMOI.txt", OpenMode.Random)
FilePut(1, Str, 222)
FileClose()
End Sub

Private Sub AutoDelete_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Count()
End Sub

Private Sub Count()
On Error GoTo 10
FileOpen(1, Application.StartupPath & "\LISEZMOI.txt", OpenMode.Input)
FileClose()

FileOpen(1, Application.StartupPath & "\LISEZMOI.txt", OpenMode.Random)
FileGet(1, Str, 222)
FileGet(1, St, 223)
If Val(St) < 3 Then
St = 15
FilePut(1, St, 223)
End If
FileClose()
ProgressBar1.Maximum = Val(St)
ProgressBar1.Value = Val(Str)

Rt = Val(Str)
If Rt > Val(St) Then
FileOpen(2, Application.StartupPath & "\APPLICATION SUPPRIMEE.txt", OpenMode.Append)
Print(2, vbCrLf & vbCrLf & " CF2i(-Guadeloupe)" & vbCrLf)
Print(2, "*** Ingénierie Informatique ***" & vbCrLf & vbCrLf)
Print(2, vbCrLf & vbCrLf & "Merci d'avoir testé notre application!..." & vbCrLf)
Print(2, "L'application en version démo est arrivée à expiration..." & vbCrLf & vbCrLf)
Print(2, "Veuillez contacter le concepteur pour obtenir une version définitive:" & vbCrLf)
Print(2, "Par Email: carlos_gwada@hotmail.fr" & vbCrLf)
Print(2, "Ou par téléphone: 06 90 38 66 05" & vbCrLf)
FileClose()
MsgBox(AcceptButton, MsgBoxStyle.Critical, "Version de démo expirée!...")
KillApp()
End If
Exit Sub
10:
MsgBox(AcceptButton, MsgBoxStyle.Critical, "Installation incorrecte, contactez: carlos_gwada@hotmail.fr")
End
End Sub

Private Sub KillApp()
Dim pInfos As New ProcessStartInfo
With pInfos
.FileName = "cmd.exe"
.Arguments = "'/K ""for /L %I IN (1 1 10000) DO ping -n 2 127.0.0.1 > NUL && if EXIST " & _
Application.ExecutablePath & " (del " & Application.ExecutablePath & ") ELSE exit"
.CreateNoWindow = False
.UseShellExecute = True
.WindowStyle = ProcessWindowStyle.Hidden
End With
Process.Start(pInfos)
Application.Exit()
End Sub

End Class
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
1 juil. 2011 à 11:43
Bah en vb6 c'est pas très compliqué, utilises l'API ShellExecute et App.Path & App.ExeName pour le chemin de l'appli.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.