Autopatcher

03/23/2013 19:28 Panini62#1
Hallo,
ich bin seit langen daran für meinen MinecraftServer einen Patcher zu erstellen.(Wegen Modpacks,News etc.) , mit VB!

Nur hab ich leider ein Problem, ich würde gerne meinen Patcher so aussehen lassen wie bei RunesOfMagic.
Also , dass er patcht und diese über 2 Balken laufen Lässt(Oben=Derzeitige Datei Unten=Allgemeiner Stand). Leider funktioniert nichts, dass man bei Youtube findet und wollte euch fragen, ob Ihr mir da helfen könnt.

Falls Ihr Infos braucht geb ich diese eventuell her ;)
Mfg.Panini
03/23/2013 19:48 Graphicscore#2
2. Möglichkeiten :)

1. Möglichkeit :

Einfach 2 Progressbar's nehmen , die untere zb. für dowloads und die obere , ja auf der addierst du dann immer etwas wenn der download abgeschlossen ist

2. Möglichkeit :

Alles in 1x ZIP Datei packen(Die Downloads)
Und dann nur eine Progressbar nehmen und die dann mit der ICSharpLib entpacken.

Sonst wüsste ich nicht wie du das machen könntest , müsste ich mir dann länger gedanken drüber machen aber so schwer sollte das nicht sein , kannst mich ja mal skype adden , falls du es nicht hinbekommen solltest
03/23/2013 22:16 Panini62#3
ja nur leider fehlen mir die Codes also was ich da eintragen muss. Weiß net was ich da generell schon falsch gemacht hab xD
03/25/2013 00:35 Xijezu#4
Möglichkeit 1 von FeelingFree etwas editiert:

2 ProgressBar's in die Form setzen, und als erstes die Dateien überprüfen, welche gepatcht werden müssen und deren Länge der Remotedatei in einer Variable speichern (z.B. int i = 0; i += file1.Length; i+= file2.Length;[...]).
Somit hättest du schonmal die Gesamtanzahl der Bytes, die du downloaden musst.
Dann fängst du an, die benötigten Dateien zu downloaden, und editierst die erste Progressbar wiefolgt (Achtung, hier auch auf float umwandeln, da es sonst zu Datenverlust kommt):
progressBar1.Progress = (progress->currentFileDownSize / progress->currentFileSize) * 100
Somit hättest du schonmal den %-stand der momentanen Datei. Du müsstest dann noch in einer Variable (nennen wir sie mal j) noch die insgesamt geladenen Bytes addieren (im normalfall return't eine .Read()-Funktion (ich weiß ja nicht, womit du arbeitest) die Anzahl der bytes, die geladen wurden.
Als Beispiel:
Code:
while(br = filedat->Read(buffer, 50))
                {
                         // Code here
                }
Hier müsstest du dann j += br rechnen.

Bei der unteren Progressbar ein ähnliches Prinzip (j & i aus den Beispielen wie zuvor) (Achtung, hier auch auf float umwandeln, da es sonst zu Datenverlust kommt):
progressBar2.Progress = j / i * 100

Das wäre sogesehen die Idee dahinter. Die o.g. Variablen & co. dienen nur als Beispiel, nicht als echten Code. Wie du das nun umsetzt liegt an dir, die Rechnung hast du ja nun ;P
04/08/2013 18:57 LPB#5
Schreib mir mal per PN, ich kann dir helfen einen zu machen!
04/10/2013 11:30 ҳc3ρ0™#6
Ich glaube er erwartet hier dass ihm jemand den kompletten Sourcecode gibt...