Verschieben von Dateien und Ordner + ersetzen

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Linkai.

    Verschieben von Dateien und Ordner + ersetzen

    Huhu liebe Community,

    ich hab da mal wieder ein kleines Problem.
    Ich bin zurzeit an einem Programm, welches ich mit einem Updater auf dem laufenden halten möchte.
    Dazu stelle ich das update in einem Ordner zusammen und packe die Dateien in eine Zip. Diese wird dann heruntergeladen
    und entpackt.

    Programm/update <-- dort liegt der updater und dort hin wird auch die Zip heruntergeladen.
    Nach dem runterladen wird die Zip (welche als namen die neue Dateiversion trägt zb. "20123.zip") in den ordner (welcher ebenfalls dann die dateiversion als Namen trägt
    bsp. "20123") entpackt.

    da in dem ordner Programm/update/20123 nun jedoch Dateien und Unterordner mit weiteren Dateien vorhanden sind, muss ich alle Dateien darin verschieben nach
    Programm/ und die alten Dateien dann überschreiben. Ich habe nur leider grade überhaupt keine Ahnung oO"
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:
    Hy, zuerst alle dateien aus dem Programm Ordner verschieben, dann die neuen Daten in den Programm Ordner Verschieben, dann anwendung neu Starten
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

    Hi,

    warum benutzt du denn keinen gegebenen Updater?
    Einen sicheren nachzubauen ist nicht einfach. Oo
    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

    MemoAnMichSelbst schrieb:

    Hi,

    warum benutzt du denn keinen gegebenen Updater?
    Einen sicheren nachzubauen ist nicht einfach. Oo


    Da mein Updater ganz Simpel gestrickt ist :)
    Er muss keine massen patchen, sondern max Daten mit max 1 MB größe.
    Er lädt die server.ver runter liest sie aus. vergleicht die Version mit der client.ver
    und lädt ggf. die .zip runter und entpackt diese. Jetzt muss ich nurnoch die Dateien aus dem Entpackten ordner verschieben und ersetzen.

    hab nur grad kp wie oo"
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:
    danke, damit klappt es.
    Jedoch nur mit den Dateien aus dem Stammverzeichnis. Die Files in den Unterordnern findet der nicht X(


    VB.NET-Quellcode

    1. Sub movefiles(ByVal foldern As String)
    2. 'MsgBox("Es wird verschoben")
    3. Dim sPath As String
    4. ' ggf. abschließenden Backslash entfernen
    5. sPath = My.Computer.FileSystem.CurrentDirectory & "" & sver
    6. If sPath.EndsWith("") And sPath.Length > 3 Then
    7. sPath = sPath.Substring(0, sPath.Length - 1)
    8. End If
    9. ' Directory-Object erstellen
    10. Dim oDir As New System.IO.DirectoryInfo(sPath)
    11. ' alle Dateien des Ordners
    12. Dim oFiles As System.IO.FileInfo() = oDir.GetFiles()
    13. For Each oFile In oFiles
    14. Try
    15. Dim cppath As String = mainpath & "" & oFile.Name
    16. 'MsgBox(oFile.Name & vbNewLine & cppath)
    17. FileCopy(oFile.Name, cppath)
    18. Catch ex As Exception
    19. End Try
    20. Next
    21. End Sub
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:
    Zum Updater: Nimm Updatesystem.NET, dort werden deine Pakete signiert und sind sicher, denn bei eigenen Updatern ohne Signierung können Updatepakete ganz leicht ausgetauscht und mit Malware infiziert werden.

    MemoAnMichSelbst schrieb:

    Einen sicheren nachzubauen ist nicht einfach. Oo

    Doch, ist nicht schwer, RSACryptoServiceProvider und dann geht das (siehe nUpdate :P)
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Um sicher oder nicht, geht es hier nicht :D

    Tut mir leid, danke für die hinweise zur Sicherung, jedoch wollte ich mich erstmal darum kümmern dass überhaupt gemacht wird was ich möchte :)

    Nochmal kurz zur Erklärung:

    Programmordner:
    ____________________
    update/
    Config/
    datei.dll
    datei2.dll
    programm.exe


    so sieht ca. der Programmordner aus:

    Programmordner/update/:
    ____________________________
    20140214.zip --- Zip mit aktuellen Dateien
    20140214/ --- Entpackte zip mit den Dateien
    client.ver --- da drin ist die version des Clients
    server.ver --- Serverversion (Welche dann den namen der ZIP und des Ordners enthällt)
    updater.exe --- exe

    Der Updater lädt die Server.ver runter und ließt sowohl diese als auch die client.ver aus.
    Ist server.ver größer wird die Zip runtergeladen und in den ordner 20140214 entpackt (Wenn update 20140215 dann heißt der ordner eben auch so)
    anschließend sollen dann die files aus dem Ordner alle zum Programmordner kopiert werden. (Ebenfalls die dateien in den Unterordnern Update und Config des Patchpaketes.)

    Mit der oben genannten Methode läuft das auch soweit einwandfrei, jedoch nur für die Daten im Hauptverzeichnis des Paketes.
    Wie kopiere ich jetzt also auch noch die in den Unterordnern (falls jetzt mal neue ordner dazu kommen sollten diese natürlich auch gepatched werden - (mit abfrage checken ob die da sind oder nich schon klar aber er soll die dateien da drin dann ja auch kopieren)

    danach sollen die .zip und der entpackte stuff aus update/ gelöscht werden.
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:
    Quasi willst du den Ordnerinhalt samt Unterordner kopieren und mehr nicht?
    Hast du dran gedacht, dass dein Programm seine eigene Exe logischerweise nicht überschreiben kann?

    Wenn ja:
    vbarchiv.net/tipps/tipp_1597-o…rdner-kopieren-vbnet.html
    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
    Nope. Warum machst du es dir kompliziert und unsicher? Auch wenn es nur funktionieren soll, es muss sicher sein, immer.
    Mit Updatesystem.NET musst du dann nur noch das hochladen und es geht alles automatisch.

    Klick mich!

    (Ich könnte jetzt auch auf meine Lib verweisen, aber die hat grad noch nen Fehler :()
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    *facepalm* den Updater will ich garnicht überschreiben? ich mach schnell ein paar screens und editiere mal rein -.-"

    Nope. Warum machst du es dir kompliziert und unsicher? Auch wenn es nur funktionieren soll, es muss sicher sein, immer.
    Mit Updatesystem.NET musst du dann nur noch das hochladen und es geht alles automatisch.

    Klick mich!

    (Ich könnte jetzt auch auf meine Lib verweisen, aber die hat grad noch nen Fehler :()


    das schaue ich mir grad mal an :) vielleicht kann ich dann den Patcher "in die tonne kloppen"
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:
    Richtig hau es in die Tonne, wenn du nen richtigen Updater schreiben willst, dann dauert das mindestens nen viertel Jahr (bei mir grad 3 Monate und ich hab grade mal so 70-75% fertig ^^).
    Die Anzahl an Codezeilen, Klassen und Overheads ist so gewaltig, dass du es wirklich mit was fertigem versuchen solltest, denn das ist alles schon verbaut und sicher.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Na hab icke doch schon in Post 3 gefragt ^^
    Würde sowas nur versuchen selber zu machen, wenn ich mich damit weiterbilden will...
    Ansich ist aber das Updatesystem.Net ne tolle Sache...
    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
    OT: Man sollte halt Grundlagen beherrschen und noch etwas mehr, zusätzlich Wissen über asymmetrische Kryptosysteme, also um sich weiterzubilden ist solche Software definitiv nicht geeignet, ein Fehler bei der Implementierung des Kryptosystems und du kannst Dir anhören, wie der Vorwurf zu nem infizierten Paket kommt ^^

    Also Fazit: Lassen, fertiges nehmen, wie bereits mehrmals gesagt
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Ich habe mich ein bisschen mit dem Updatesystem.net beschäftigt...

    komme aber grad nicht weiter. Alles ist installiert und konfiguriert. Ich hab die .dll eingebunden und auf die form gezogen. Danach die infos kopiert und eingefügt..

    Wollte das ganze testen und jetzt das hier X(



    mein Sourcecode:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    3. UpdateController1.updateInteractive()
    4. End Sub
    5. Private Sub UpdateController1_downloadUpdatesCompleted(sender As Object, e As System.ComponentModel.AsyncCompletedEventArgs) Handles UpdateController1.downloadUpdatesCompleted
    6. Label1.Text = "Updates wurden runtergeladen"
    7. End Sub
    8. Private Sub UpdateController1_downloadUpdatesProgressChanged(sender As Object, e As updateSystemDotNet.appEventArgs.downloadUpdatesProgressChangedEventArgs) Handles UpdateController1.downloadUpdatesProgressChanged
    9. ProgressBar1.Value = e.ProgressPercentage
    10. End Sub
    11. Private Sub UpdateController1_updateFound(sender As Object, e As updateSystemDotNet.appEventArgs.updateFoundEventArgs) Handles UpdateController1.updateFound
    12. Label1.Text = "Updates wurden gefunden"
    13. End Sub
    14. Private Sub UpdateController1_updateInstallerStarted(sender As Object, e As updateSystemDotNet.appEventArgs.updateInstallerStartedEventArgs) Handles UpdateController1.updateInstallerStarted
    15. Label1.Text = "Updates werden installiert"
    16. End Sub
    17. End Class
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love: