Ordner und Inhalt Löschen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Ordner und Inhalt Löschen

    Moin zsm, ich möchte bevor ich ein Neues Projekt in den Ordner entpacke das das Vorherige gelöscht wird.

    Aber manchmal kommt es vor das das Programm einen unterordner oder Datei nicht gelöscht bekommt. daher habe ich meinen Code etwas verbessert. dies scheint aber auch nicht so richtig zu Funktionieren. evtl hab ich einen Fehler oder jemand hat eine Bessere idee :)

    Mein Code:

    VB.NET-Quellcode

    1. If IO.Directory.Exists(Opath) Then
    2. Try
    3. Try
    4. IO.Directory.Delete(Opath, True)
    5. Catch ex As Exception
    6. MsgBox("ModEdit Ordner konnte nicht Bereinigt werden (Permission Denied) " & ex.Message)
    7. If Not princ.IsInRole(WindowsBuiltInRole.Administrator) Then
    8. StartAsAdmin()
    9. End If
    10. End Try
    11. Catch ex As Exception
    12. MsgBox(ex.Message)
    13. End Try
    14. End If

    Danke im Vorraus :huh: ?(

    petaod schrieb:

    Verschiebe die Dateien
    geht dann auch nicht, weil Teul des Verschiebens das finale Löschen im Quellverzeichnis beinhaltet.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi,

    geht es darum, dass es ein Programm von DIR ist, welches du versuchst zu "aktualisieren"? Und dieses liegt im Netzwerk?
    Das Problem habe ich hier auch. Ich habe es so gelöst, dass ich das Programm so geändert habe, dass es mit einem Timer prüft, ob in der Datenbank eine Info steht, dass es sich beenden soll. Dann bekommt der User eine Meldung dass er 5 Minuten hat um seine Arbeit abzuschließen und das Programm zu beenden. Sonst wird es dann einfach geschlossen. Das prüfe ich auch beim Programmstart und unterbinde diesen.
    Somit weiß ich... In 5 Minuten kann ich alle Dateien austauschen, bis ich den Eintrag in der Datenbank wieder entferne.

    Wenn es ne gescheitere Idee gibt, bin ich da auch offen.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    RodFromGermany schrieb:

    geht dann auch nicht, weil Teul des Verschiebens das finale Löschen im Quellverzeichnis beinhaltet.
    Ich kann nur meine Erfahrung mitteilen, wenn ich einem Windows-Service, der gerade läuft, updaten will, verwende ich genau diese Methode.
    Löschen ist nicht möglich, weil die Dateien gelockt sind.
    Ich verschiebe alles in einen anderen Ordner. Das funktioniert.
    Dann schiebe ich die neuen Dateien in den Originalordner und nach späterem Service-Neustart zieht er die neuen Dateien und ich kann die alten löschen.

    Ich weiß nicht, ob das nur bei Services so ist, aber die Dateien scheinen nicht aufgrund des Pfades, sondern aufgrund der File-ID gelockt werden.
    Die ändert sich ja nicht beim Verschieben.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    petaod schrieb:

    Das funktioniert.
    OK.
    Muss ich mal testen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!