Mehrere Programme (exe.) löschen ?

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von ThuCommix.

    Mehrere Programme (exe.) löschen ?

    Hallo Community,

    Ich habe eine Frage und zwar hab ich für mein Programm eine Update Funktion, diese lädt das neue Programm herunter, nun wollte ich gerne, dass das jetzige Programm und diese, die den selben Namen tragen (also mehr als ein Programm) löscht.
    Dazu hab ich diesen Code hier gefunden:

    Quellcode

    1. My.Computer.FileSystem.DeleteFile("C:\test.txt")

    Das Problem ist, dass dieser Code nur die bestimmte Datei löscht und man zusätzlich noch den Dateipfad angeben muss. Wäre cool wenn ihr eine Idee habt, wie man mehrere Datei mit dem selben Namen aufspürt (ohne einen Dateipfad anzugeben) und diese dann alle löschen kann.

    Ich hoffe ihr könnt mir weiterhelfen.
    Frag lieber genauer, denn dein jetztiges Ziel klingt für mich ziemlich unsinnig und führt meines Erachtens auch nicht zum gewünschten Ergebnis...
    Aber gut:
    Eine ListOf erstellen, welche die Pfade ALLER Dateien enthält: Mit eigenem Sortieralgorithmus(Nach Dateiname)-> Schlau wäre wohl eine Sortierung direkt beim einfügen(oder, evtl. doch nicht?!)

    Anschließend die Liste von oben nach unten durchgehen, wenn das Element an Position n+1 den gleichen Dateinamen hat, dann löschen und so weiter durchgehen, bis die Liste bis zum Ende abgearbeitet wurde...


    Da dein eigentliches Ziel eine Updatefunktion ist, sollte der Updater einen FileStream der zu updatenden Datei erstellen und direkt beim Herunterladen die Datei mit den Daten aus dem Internet überschreiben...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Tut mir leid falls ich mich nicht so klar ausgedrückt habe, ich wollte eigentlich nur einen Code, der nach dem Downloaden des neuen Updates das jetzige Programm und noch mögliche ältere vorhandene Versionen ( mit dem selben Programm namen z.B Test.exe) löscht, es wird also falls vorhanden mehr als nur ein Programm gelöscht.

    Aber ich werde es dann wohl mit der Variante machen.


    VB.NET-Quellcode

    1. Private Sub Delteexe() Dim strw As New IO.StreamWriter("deleter.vbs") strw.WriteLine("WScript.sleep 800") strw.WriteLine("Dim fso") strw.WriteLine("Set fso = CreateObject(""Scripting.FileSystemObject"")") strw.WriteLine("fso.GetFile(""DateiName.exe"").Delete") strw.Close() Process.Start("deleter.vbs") End End Sub

    Ansonsten Danke für für eure Antworten

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „Flow96“ ()

    Ich mach den Updater meist im Hauptprogramm mit rein, wenn man dann Updaten würde (Dateiüberschreibung) würde es zu einer Exception kommen, deswegen verschiebe ich das Programm mit:

    VB.NET-Quellcode

    1. IO.Move(Meinprogramm.exe,Meinprogramm.backup

    Danach downloade ich ganz normal mit den Webclient, beim start des neu Heruntergeladenen Programm steht im Form Load Event:

    VB.NET-Quellcode

    1. If IO.File.Exists(Meinprogramm.backup) then
    2. IO.File.Delete(Meinprogramm.backup)
    3. end if


    Ein weiterer Vorteil ist, wenn der Updater abschmiert kann man immer noch backup zu .exe umbennnen, somit gibt es keinen Datenverlust


    Grüße
    Also wenn der Nutzer das Update downloaded wird ein Backup des Programms in einen neuem Ordner erstellt :


    VB.NET-Quellcode

    1. MkDir(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + "\Backup")
    2. Dim loc As String = (System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + "\Backup")
    3. Dim path2 As String = loc + "\" + (IO.Path.GetFileName(Application.ExecutablePath))
    4. Dim path As String = (System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + "\" + (IO.Path.GetFileName(Application.ExecutablePath)))
    5. Dim FileToMove As String
    6. Dim MoveLocation As String
    7. FileToMove = path
    8. MoveLocation = path2
    9. If System.IO.File.Exists(FileToMove) = True Then
    10. System.IO.File.Move(FileToMove, MoveLocation) End If



    Und dann in dem neuen Programm (also das neu geladene Update) wird beim Öffnen, der Dateipfad "Backup" gelöscht :


    VB.NET-Quellcode

    1. If IO.File.Exists((System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + "\Backup\" + (IO.Path.GetFileName(Application.ExecutablePath)))) Then Directory.Delete(((System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + "\Backup")), True)End If