Programm nach Beenden löschen

    • VB.NET

      Programm nach Beenden löschen

      Hi
      Manchmal will man ein Programm nach dem Ausführen löschen (z.B. einen Updater). Wenn man IO.File.Delete(Windows.Forms.Application.ExecutablePath) verwendet funktioniert das nicht, weil das Programm ja noch läuft. Dazu muss folgender Code im ApplicationEvents stehen:

      VB.NET-Quellcode

      1. Private Sub MyApplication_Shutdown(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Shutdown
      2. Using srm As New IO.StreamWriter(System.Windows.Forms.Application.StartupPath & "\unistall.bat")
      3. With srm
      4. .WriteLine("@ECHO Datei """ & IO.Path.GetFileName(System.Windows.Forms.Application.ExecutablePath) & """ wird entfernt...")
      5. .WriteLine("@CD /D %~d0%~p0")
      6. .WriteLine("@ERASE /Q /F """ & IO.Path.GetFileName(System.Windows.Forms.Application.ExecutablePath) & """")
      7. .WriteLine("@ECHO Vorgang abgeschlossen.")
      8. .WriteLine("@ERASE /Q /F unistall.bat")
      9. End With
      10. End Using
      11. Process.Start(System.Windows.Forms.Application.StartupPath & "\unistall.bat")
      12. End Sub


      Man kann die Datei auch im ApplicationData-Pfad erstellen:

      VB.NET-Quellcode

      1. Private Sub MyApplication_Closed(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Shutdown
      2. Using srm As New IO.StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & My.Application.Info.CompanyName & "\unistall.bat")
      3. With srm
      4. .WriteLine("@ECHO Datei """ & IO.Path.GetFileName(System.Windows.Forms.Application.ExecutablePath) & """ wird entfernt...")
      5. .WriteLine("@CD /D " & Windows.Forms.Application.StartupPath)
      6. .WriteLine("@ERASE /Q /F """ & IO.Path.GetFileName(System.Windows.Forms.Application.ExecutablePath) & """")
      7. .WriteLine("@ECHO Vorgang abgeschlossen.")
      8. .WriteLine("@ERASE /Q /F unistall.bat")
      9. End With
      10. End Using
      11. Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & My.Application.Info.CompanyName & "\unistall.bat")
      12. End Sub


      Gruß
      ~blaze~