Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Coding Releases
You last visited: Today at 04:53

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Release|C#/PHP] ShawPatcher

Discussion on [Release|C#/PHP] ShawPatcher within the Coding Releases forum part of the Coders Den category.

Reply
 
Old   #1



 
Shawak's Avatar
 
elite*gold: 0
The Black Market: 259/0/0
Join Date: Apr 2010
Posts: 10,291
Received Thanks: 3,611
[Release|C#/PHP] ShawPatcher

Hey,

ich möchte euch hier meine Patcher-Lib vorstellen.
Die Lib ermöglicht unkompliziertes und komfortables Patchen von Programmen und Dateien.

Alles was man nach einbinden der Lib braucht, ist das hier:
Code:
        private void MainForm_Load(object sender, EventArgs e)
        {
            var patcher = new Patcher("http://localhost/update");
            patcher.OnFetchDone += patcher_OnFetchDone;
            patcher.OnFetchError += patcher_OnFetchError;
            patcher.FetchAsync();
        }

        private void patcher_OnFetchDone(object sender, FetchDoneEventArgs args)
        {
            var patcher = (Patcher)sender;
            if (patcher.UpdateAvailable)
                patcher.Update();
        }

        private void patcher_OnFetchError(object sender, FetchErrorEventArgs args)
        {
            MessageBox.Show(args.Exception.ToString());
        }
oder auch nur:
Code:
        private void MainForm_Load(object sender, EventArgs e)
        {
            var patcher = new Patcher("http://localhost/update");
            patcher.Fetch();
            if (patcher.UpdateAvailable)
                patcher.Update();
        }
Eine generierte Patchlist könnte dann zum Beispiel so aussehen (Nur via Quelltext einsehbar):
Code:
<!-- ShawPatcher - Patch List -->
<!-- Coded by Shawak -->
<p:files/data/0cc-by-nc-540x304.jpg:b442fa400e582541a2f16217cd1a7056-13756:p>
<p:files/data/0kunden_buecher.jpg:7d66e04b3889f31d343445ed94875563-92932:p>
<p:files/data/1logo1-300x300.png:8dbb951e74e04d0b66fa1479b3d82693-33033:p>
<p:files/data/2mindestlohn.jpg:d70ce15b1ffd5dc5c900592196025bce-35069:p>
<p:files/data/kunden_buecher.jpg:7d66e04b3889f31d343445ed94875563-92932:p>
<p:files/data/logo1-300x300.png:8dbb951e74e04d0b66fa1479b3d82693-33033:p>
<p:files/data/mindestlohn.jpg:d70ce15b1ffd5dc5c900592196025bce-35069:p>
<p:files/data/Neuer Ordner/emptyfile.txt:d41d8cd98f00b204e9800998ecf8427e-0:p>
<p:files/data/Neuer Ordner/test2.txt:c454552d52d55d3ef56408742887362b-5:p>
<p:files/data/test.txt:159acc62a1f0152fe834cfe52c822c1f-21:p>
<p:files/data/_FTS_DriverpackageforLIFEBOOKS751Win7x64_10_1071476.ZIP:177fcdb2b31a3a1a6b3c3ac641b2361c-404722990:p>
<!-- Generated in: 0.003 seconds -->
<!-- Total Size: 386.29 MB (405058840 Bytes) -->
Wie läuft ein Patch genau ab?

Zuerst werden alle nötigen Informationen von der Website geladen (Da diese mit einen Cache arbeitet, dauert die Abfrage meist nur wenige Millisekunden, je nach Server). Gleichzeitig wird überprüft, ob sich diese Daten ebenfalls in dem angegebenen Verzeichnis befinden. Falls nicht, kommen die Daten auf die Patchliste. Sobald alle Dateien durchlaufen werden kommt der interessante Teil.
Die Lib kopiert ihre eigene Assembly und speichert sie, mit einem zusätzlichem Starter, unter "%appdata%\ShawPatcher\~" ab. Anschließend wird dieser Starter mit der bereits abgerufenen Patchlist ausgeführt.
Nun werden alle benötigten Dateien in einen separaten Download Ordner, ebenfalls im AppData Verzeichnis, gespeichert. Sobald alle Dateien heruntergeladen wurden werden nun die Original Dateien ersetzt.
Dieses Verfahren erlaubt es ebenfalls die Patch Lib und alle im Ordner enthaltenen .exe Dateien zu patchen.

Vorteile:

+ Kann alle Exe-Dateien und sich selbst Patchen
+ Ein Abbruch des Downloads führt zu keinerlei Problemen
+ Nach einem abgebrochenen Download wird an weitergemacht wo aufgehört wurde
+ Mehrere Instanzen sind möglich, sofern anderer Host (Da temporäre Download Ordner anhand des Hosts/der Url generiert werden)
+ Schnelle Abfrage der Patchlist durch Verwendung eines Cache
+ Keine FTP Zugänge von Nöten

Nachteile:

- Auf dem Server gelöscht Dateien werden nicht Lokal gelöscht
- Dateien werden nicht gezippt
- Lib kann nicht eingebunden werden(?)
- Lib kann nicht Obfuskiert werden

How to

1) Ordner unzippen
2) update Ordner auf einen Webserver hochladen
3) Die neuste Version des Programms unter update/files Speichern.
4) Im Projekt einen Verweis auf ShawPatcher.dll erstellen
5) Oben angegebenes Beispiel in deinem Projekt einbau
6) Patchen

Bei Fragen oder Anregungen zu Verbesserungen könnt ihr natürlich hier eine Nachricht hinterlassen oder mich ggf. via privater Nachricht Kontaktieren. Bei Problemen werde ich natürlich versuchen diese Schnellstmöglich zu beheben.

Lg Shawak
Attached Files
File Type: zip ShawPatcher v1.0.0.zip (19.1 KB, 38 views)
Shawak is offline  
Thanks
3 Users
Reply




All times are GMT +2. The time now is 04:53.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.