UpdateSystem Ordner vom Webspace downloaden lassen ?

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

Es gibt 75 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

    Dann musst Du halt immer ein neues Archiv erstellen, eine automatisierte Lösung macht es auch nicht recht viel anders.

    Grüße
    #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 :!:
    Nein, für mehrere Dateien eines natürlich.

    Grüße
    #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 :!:
    Ja, beachte aber, dass man in Archive auch Malware einschleusen kann => Signieren.
    Von daher würde ich dennoch eine Automatisierung verwenden, sowas kann doch recht kompliziert werden.

    Grüße
    #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 :!:
    Du willst doch eine Synchronisation, oder? Und zwar von einem Arma 3 Mod, der aus ungefähr 600 Dateien besteht, wovon sich pro Update vielleicht 20 verändern? Wenn du das über Updates machst, wird es unglaublich kompliziert und unwartbar, weil du erstens immer die vollständige Version hochgeladen haben musst und noch die Updatepakete (was passiert, wenn jemand nach längerer Zeit mal ein Update machen will? Dann musst du das auch einschließen) managen musst. UpdateSystem.Net bietet zwar ein Update System, welches das mit den Updatepaketen regelt, aber 1. musst du eine Menge umschreiben, damit das alles in den Arma Ordner findet, zweitens musst du dich immer erinnern, was du verändert hast und drittens musst du trotzdem immer eine komplette Version oben haben, das heißt bei jedem Update musst du die UpdatePakete regeln (was bei so vielen Unterordnern kein Spaß ist) und das Addon neu packen und hochladen, was bei der Größe (kommt natürlich auch drauf an, was du für eine Uploadgeschwindigkeit hast) ebenfalls kein Spaß ist.

    Also: Ich würde eine Synchronisation schreiben. Dafür brauchst du zwei Programme: 1. den Client für die Benutzer und 2. ein Programm, welches die Dateien in eine Indexdatei einträgt. Du musst das erst mal verstehen. Guck mal, was ich dir tolles gezeichnet habe:


    Wurde zum Schluss hin etwas unübersichtlich. Es ist in der Reihenfolge:
    1. Benutzer startet das Programm
    2. Lädt files.xml herunter
    3. Vergleicht die Einträge aus der files.xml mit den lokalen Dateien
    4. Schreibt alle Dateien, die verändert wurden, fehlen oder überflüssig sind, auf eine Liste
    5. Anwendung geht die Liste durch und übernimmt die Änderungen
      1. Lädt veränderte Dateien runter
      2. Lädt neue Dateien runter
      3. Löscht überflüssige Dateien

    Ich würde dir vorschlagen, dass du dir erstmal Gedanken darüber machst, wie du weißt, ob sich eine Datei verändert hat bzw. was alles in die files.xml-Datei muss. Erstell dazu eine Klasse und füge der Eigenschaften hinzu. Danach würde ich die in eine List(Of DeineKlasse) machen und serialisieren. Bedenke, dass da auch Ordner rein müssen, also muss deine Entry-Klasse eine Eigenschaft haben, ob sie ein Ordner oder eine Datei ist, und eine, die eine Liste der Dateien darstellt, die dann in dem Ordner sind.
    Mfg
    Vincent

    Alles, was Du an Infos brauchst, um solche Aktualisierungen vorzunehmen. Das ist nichts anderes als eine Konfiguration.

    Grüße
    #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 :!:
    Weißt du, wie man Klassen erstellt und diesen Eigenschaften hinzufügt? Du musst dir überlegen, anhand welche Eigenschaften du festmachen willst, ob sich eine Datei verändert hat. Der Pfad ist denke ich Standard, der wäre aber relativ, also nicht C:\Program files\Steam\SteamApps\Arma3\@Addon\hallo\dat.ei (absolut) sondern hallo\dat.ei. Also hat deine Klasse als erste Eigenschaft: Filename. Dann musst du ja, wenn die Datei vorhanden ist, gucken, ob sich die Datei verändert hat. Das kann man durch die exakte Dateigröße machen, oder man nimmt einen Hash. Die Dateigröße ist eher unsicher, weil die Datei kann sich ja vom Inhalt her ändern und die Größe bleibt gleich. Ein Hash muss erst generiert werden, also dauert das ewig. Du kannst eine Mischung aus beidem nehmen, also erst wenn die Größe gleich ist die Hashwerte kontrollieren.
    Mfg
    Vincent

    Dann ist das Ganze denke ich wenig sinnvoll, denn ohne das kommst Du wohl nicht recht weit, v. a. im Bereich Kryptographie wird es dann wohl groiße Probleme geben, sorry.

    Grüße
    #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 :!:
    Auch wenn es Eigenwerbung hoch 21 ist und mich die anderen dafür steinigen werden, aber ich habe mal für absolute Anfänger eine Playlist erstellt: youtube.com/playlist?list=PLRGwJepv5FfcXFRSGYMDBfJLwdLrJLKAr
    Ist noch nicht so weit, aber da lernst du schonmal so das allernötigste. Ich finde immer, dass es etwas anderes ist, wenn es jemand einem durch ein Video erklärt und zeigt, als wenn man es liest, deswegen habe ich das mal angefangen. Aber richtig programmieren kannst du durch Videos nicht lernen, weil das dann um die 1000 Videos sein müssten. Da kann ich dieses Buch empfehlen: microsoft.com/germany/msdn/akt…005DasEntwicklerbuch.aspx Da geht es aber halt nicht bei null bzw. bei deinem Stand los, sondern da muss man schon wissen, was eine Eigenschaft ist.
    Mfg
    Vincent