C# Wie mache ich ein Patcher?

Gotenks666

Ensign
Registriert
Mai 2009
Beiträge
165
Hallo Leute
ich brauche wieder euere Hilfe

Habe folgendes Problem...
Ich möchte einen Patcher mit C# erstellen

Ich hab aber keine ahnung wie ich das anstellen soll.

Hier was ich vorhabe:

Ein Patcher, das Sachen von einen FTP lädt wen man was neues hochgeladen hat.

So wie Cabal, Flyff, Runes of Magic usw

könnt ihr mir helfen?

Danke im voraus
 
bahnhof2.jpg
:freak::freak::(
 
Ich möchte dir ungerne ein fertiges Programm hier präsentieren, aber wenn du selbst programmieren möchtest, dann hilft es dir wenig (wenig = 0 (null)), wenn wir dir hier alles "vorsagen". Schau mal auf: http://de.wikipedia.org/wiki/Softwareentwicklung

Und mach dich mit der Programmiersprache vertraut: http://openbook.galileocomputing.de/csharp/

Versuche erstmal dich in die Materie reinzuarbeiten. Ich selbst habe die Grundlagen mit einem
Html-Dateien-Split-Programm in C# mit anschließendem Automatisches-Nachlade-Script in Javascript gelernt.
 
Mal ganz ehrlich, lieber Gotenks666,

Dir scheint es ja schon recht schwerzufallen, Deine Fragestellung verständlich zu formulieren.

Deswegen mein Bahnhofs-Bild :cool_alt: (sorry!)

Ich fürchte, dann wird C#-Programmierung, die ja wie alle Programmierung klare, logische Strukturierung des Denkens erfordert, schon eine harte Nuß für Dich werden...

Guck' doch lieber, ob's irgendwo was Fertiges für Dich gibt oder ob Du jemanden kennst, der sich damit auskennt.

LG,
Hasenbein

P.S.: Warum soll's ausgerechnet C# sein?
 
Zuletzt bearbeitet:
wo ist das problem an der frage? er will wissen wie er programme patchen kann ohne alles neu herunterzuladen. ihr ladet euch das spiel ja nicht auch komplett neu herunter, wenn ein patch erschienen ist, oder? von daher will er nur wissen, wie das mit dem patchen funktioniert...

@ te:
ich hab zwar kp und es interessiert mich auch nicht, aber sieh mal auf codeproject.com nach. vllt gibts dort schon hilfe dazu. allerdings sei gesagt: wirkliche patcher hab ich seit geraumer zeit nicht mehr gesehen. imo wurden alle neuen datei, die vom original nach einem patch verändert wurden, komplett ins archiv gepackt und einfach überschrieben. das ist wesentlich weniger aufwändig, allerdings ist der download dafür größer. und bei kleinen 2 oder 10 mb sachen ist es imo nicht zu viel verlangt, sich das komplette programm nochmal zu ziehen (siehe winamp oder andere programme in dem umfang; dort wird auch nicht gepatcht).
 
Das Problem, das Program.. ist 2gb groß... xD da ladet sich nich jeder wegen ein Update das nochma runter ;)
 
Eine Möglichkeit ist das Programm in viele Bibliotheken zu zerlegen, die dann zur Laufzeit vom Programm geladen werden. Es gibt somit nur eine winzig kleine ausführbare Datei, die dann nach und nach die Libs lädt, oder die Libs laden sich gegenseitig, und somit das komplette Programm "entsteht".

Sobald nun der "Patcher" (oder das "Update") gestartet wird sollten diese Libs entladen werden, oder das Programm einfach beendet werden.
Jetzt können die Libs mit neueren Versionen aktualisiert werden (sprich: überschrieben werden).

Das setzt natürlich eine vernünftige Architektur des gesamten Programms voraus.
Bei 2 GB Größe, wie ich lese, gehe ich mal davon aus, dass das auch so ist ;).
 
ähhm eine 2GB große datei oder ist alles insgesamt 2 GB groß? du kannst zum bsp sagen welche dateien geladen werden sollen, wenn ein update vorliegt. ist alles möglich! solange du weisst wo es upgedatet worden war!
 
Zum Thema Patcher und diverse technologische Ansätze gibt es im Internet nun wirklich viel Material. Suchmaschine hilft ungemein. Bevor hier über Lösungsvorschläge diskutiert werden kann, müssen erstmal die genauen Anforderungen seitens TE bekannt sein.

Die prominentesten Fragen, die dazu beantwortet sein müssen:

- Wie werden neue Dateiversionen identifiziert (checksum, patchindex-lok. Versions-ID, bytechecks etc.)
- Sollen komplette Dateien gepatcht werden oder sollen bytepatches vorgenommen werden (bytepatch: bestehende Dateien werden lokal MODIFIZIERT mithilfe eines Byte-Index)
- Sollen Komprimierungsverfahren oder Verschlüsselung verwendet werden
- welche anderen Sicherungsmaßnahmen sollen bestehen, um Patchfehler oder auch Manipulation auszuschliessen.

Übrigens bieten diverse namhate Softwarehersteller Patcher-Libs zur Einbindung in Softwareprojekte für diverse Sprachumgebungen an. Kosten Geld, sind dafür aber auch ausgereift.

Elioth
 
1.) Wenn das Programm 2GB groß ist, dann wird das mit Sicherheit keine .exe Datei oder .dlls mit 2GB sein;)
Das, was so massig Speicher frisst sind diverse Ressourcen, also eingebundene Videos, Logos, Daten usw. Wenn diese direkt als Dateien gespeichert sind, so kann man einfach die veränderten Dateien überschreiben.
Meistens sind jedoch die Ressourcen nicht als einzelne Dateien abgespeichert, sondern in irgendeiner Form komprimiert und werden erst zur Laufzeit der Software entpackt bzw. es handelt sich schon um Dateien, in denen schon mehrere Subdateien in irgendeiner Form verpackt sind z.B. eine .chm Datei für die Hilfe. Hier müsste man die Dateien dekomprimieren, dann die Änderungen ersetzen und wieder neu komprimieren, aber so, dass binärmäßig das selbe heraus kommt, wie wenn man die Software direkt neu installiert hätte ohne Patch.
Richtig problematisch wird es meistens erst mit Daten des Kunden, wenn sich das Format geändert hat z.B. eine neue Spalte in einer Datenbank, wo sinnvolle Defaultwerte eingefügt werden müssen oder diverse Änderungen an den Konfig Dateien. Je mehr man hier schon von Anfang an sauber gearbeitet hat, desto weniger Probleme hat man dabei.

2.) Ein Patch darf nur in Rücksprache mit dem/den Entwicklern der Software selbst durchgeführt werden, sonst gibt es hier mögliche Komplikationen. Das Entwicklerteam weiß meistens am Besten, auf was man hier aufpassen muss. Komplett fremde Software einfach so zu patchen ist ein großer Fehler. Das kann gut sein, muss aber nicht und wird dann eventuell mit dem nächsten offiziellen Patch zu großen Schwierigkeiten führen wenn z.B. einige Dateien nicht mehr den selben MD5 Key haben z.B. weil eine .zip Datei mit einem anderen Programm neu komprimiert wurde oder auch nur das Änderungsdatum der Dateien ein anderes ist.

3.) Patches sollte man nur verwenden, wenn es unbedingt notwendig ist. Ich bevorzuge hier den Weg eine kompletten Deinstallation und Neuinstallation mit Übernehmen der Konfiguration. Da spart man sich viel Ärger, wenn es sich nur um ein paar Kunden handelt.
 
Elioth und andr_gin, es spricht für Eure Nettheit, daß Ihr so ausführlich was dazu schreibt.

Aber mit derlei Fachgesimpel kann der TE mit Sicherheit gar nichts anfangen. Wie aus seinen Postings zu erkennen, ist er in derartigen Dingen noch absoluter Noob. Und ich glaube auch ganz bestimmt nicht, daß er sich jetzt auf einmal so weit in die Materie vertiefen will, daß er das von Euch Geschriebene versteht oder gar tatsächlich C# programmieren lernt.

Er will, so habe ich ihn verstanden, einfach nicht mehr so viel runterladen müssen für seine Spiele und möchte, daß ihm dazu irgendjemand irgendeinen Trick verrät. Und irgendwo hat er mal läuten gehört, daß es "Patcher" gibt und daß C# anscheinend eine dufte Programmiersprache sein soll.

LG,
Hasenbein
 
Zurück
Oben