Arma 3 Launcher mit Update Funktion

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

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Fabian0608.

    Arma 3 Launcher mit Update Funktion

    Guten Tag,

    Ich möchte für unseren Clan einen Launcher machen. die Grundstruktur habe ich es soll nicht viel machen als Mods die auf den Server liegen automatisch zu updaten, dass Programm soll automatisch erkennen ob ein Mod ein update bekommen hat oder der Mod Fehlt. Die Alte datei soll dann vom Rechner des Benutzers gelöscht werden und gegen die neue Ersetz werden. Ähnliches prinzip wie Arma3Sync falls jemand das Programm kennt. Die Mods die heruntergeladen werden sollen sind auf diesen Server: arma3dl2.85th-operations-command.de/
    Dann zeig doch mal her, diese "Grundstruktur". Der Server mit den Dateien allein hilft dir nicht weiter, du brauchst eine Art Metadaten-Datei welche die aktuelle Version angibt, wie willst du sonst jemals wissen wann dein Updater sich die neue Datei holen soll? Das ganze ist noch nichtmal ein FTP Server wo du die Dateien noch iterieren kannst, wenn du so an alle Dateien rankommen willst musst du umständlich die Webseite parsen und dir die Infos so holen. Ich wage da jetzt einfach mal zu behaupten das es dir an Kenntnissen fehlt um sowas zu bewerkstelligen.

    Vielleicht ist der Marktplatz eher was für dich, oder du erläuterst hier wirklich mal genau was du zu Verfügung hast und was nicht.
    Ich wollte schon immer ein Auto bauen, es soll vier Räder haben, ein Dach und einen Motor, aber wie man das baut weiß ich nicht. Könntest du mir das Auto bauen?

    1. Checken ob es eine neuere Mod gibt (zb. mittels Hash oder Versionsnummer)
    2. Wenn es eine neue Mod gibt, sie herunterladen, validieren (zb. mittels Signatur) und die Datei ersetzten

    PS: Falls du den Code geschrieben haben willst: Jobbörse & Marktplatz
    PPS: @seh Bitte kein FTP! Das ist unsicher und sollte sterben!!11!1!!1!11!!!.
    mit grundstruktur meine ich das ich das GUI habe.
    Habe ein bild im Anhang der das derzeitige GUI zeigt ausserdem schreibe ich hier nochmal wie es derzeit ist:

    VB.NET-Quellcode

    1. Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
    2. If CheckBox1.Checked = True Then
    3. Ace()
    4. End If
    5. End Sub
    6. Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
    7. If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then
    8. TextBox1.Text = FolderBrowserDialog1.SelectedPath
    9. End If
    10. Text = TextBox1.Text
    11. End Sub
    12. Private Sub Ace()
    13. Dim wc As New WebClient
    14. If IO.Directory.Exists(Text + "/@ace") Then
    15. If IO.File.Exists(Text + "/@ace/ace_advanced_ballistics.dll") Then
    16. If IO.File.Exists(Text + "/@ace/ace_advanced_ballistics_x64.dll") Then
    17. If IO.File.Exists(Text + "/@ace/ace_break_line.dll") Then
    18. If IO.File.Exists(Text + "/@ace/ace_break_line_x64.dll") Then
    19. If IO.File.Exists(Text + "/@ace/ace_clipboard.dll") Then
    20. MessageBox.Show("Fertig", "Fertig", MessageBoxButtons.OK)
    21. Else
    22. wc.DownloadFileAsync(New Uri("http://arma3dl2.85th-operations-command.de/@ace/ace_clipboard.dll"), Text + "/@ace/ace_clipboard.dll")
    23. End If
    24. Else
    25. wc.DownloadFileAsync(New Uri("http://arma3dl2.85th-operations-command.de/@ace/ace_break_line_x64.dll"), Text + "/@ace/ace_break_line_x64.dll")
    26. End If
    27. Else
    28. wc.DownloadFileAsync(New Uri("http://arma3dl2.85th-operations-command.de/@ace/ace_break_line.dll"), Text + "/@ace/ace_break_line.dll")
    29. End If
    30. Else
    31. wc.DownloadFileAsync(New Uri("http://arma3dl2.85th-operations-command.de/@ace/ace_advanced_ballistics_x64.dll"), Text + "/@ace/ace_advanced_ballistics_x64.dll")
    32. End If
    33. Else
    34. wc.DownloadFileAsync(New Uri("http://arma3dl2.85th-operations-command.de/@ace/ace_advanced_ballistics.dll"), Text + "/@ace/ace_advanced_ballistics.dll")
    35. End If
    36. Else
    37. IO.Directory.CreateDirectory(Text + "/@ace")
    38. End If


    Aber wie man sich denken kann ist das keine gute Lösung.

    Ich möchte ja keinen fertigen code sondern Hilfe bzw evt. Links wo ich mir das Wissen aneignen kann oder was ich voher wissen muss um das zu bewerkstelligen. Der Sinn hinter dem Pojekt ist das ich es lerne nicht damit wir einen Launcher haben ^^
    Bilder
    • was ich habe.png

      495,15 kB, 903×408, 191 mal angesehen

    slice schrieb:

    Bitte kein FTP! Das ist unsicher und sollte sterben!!11!1!!1!11!!!.

    +1 , ich sagte ja nur das es nicht mals ein FTP ist. Beides grottig.

    Fabian0608 schrieb:

    Der Sinn hinter dem Pojekt ist das ich es lerne nicht damit wir einen Launcher haben

    Das glaube ich dir nicht :D

    Ist der Server auf dem die Mods liegen dein Server? Hast du Zugriff drauf?
    Du kannst ja schon mal anfangen deinen Code aufzuräumen ;)
    Deine verschachtelten If-Abfragen sind murks. Sobald eine Datei nicht vorhanden muss lädst du sie runter (zumindest ist das dein Plan?), ignorierst dann aber alle folgenden Dateien.
    Und wenn vorher kein Pfad ausgewählt wurde landet der Download auch im Nirvana bzw. in einem Fehler ;) da fehlt also auch noch ne Überprüfung.
    ja das ist mein plan eine Fehlende datei soll heruntergeladen werden jedoch weiss ich nicht wie ich sagen soll das er die erste abfrage widerholen soll wenn die datei fehlt damit er ebend die anderen auch abrafgt ohne für jede datei auf den Button klicken zu müssen. Und die überprüfung hab ich tatsächlich einfach vergessen ich schreibe se fix rein.
    Alle Downloadpfade in eine List(Of String) packen. Dann per Schleife durch die Liste iterieren. Bei jedem Durchlauf prüfen ob aktuelle Datei existiert und ggf. Downloaden.

    oder Besser ne eigene Klasse mit den Eigenschaften LokalerPfad und DownloadPfad schreiben, diese in eine List( Of DeineKlasse) packen und durch die iterieren.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Hm, Tutorial kenn ich dazu keins. Das ist Basiswissen. Vielleicht solltest du daran noch etwas arbeiten...
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen