Hallo Core'ler,
ich habe mir die Zeit genommen und einen Patcher geschrieben. Dieser entstand aus langeweile und weil ich den Offi Patcher nicht mag.
Folgenes ist eingebaut:
- Arbeitet mit gZip (um die Dateien zu packen/entpacken)
- Datei-Signatur Check
- Eigene list.txt (wird vom eigenen PatchListCreator erstellt)
- Home Button (welche die WebSite öffnet)
- Log funktion
- News Page (sieht man überdeutlich)
- Options Menü
- Pre-Patch
- Registry Nutzung für Option Einstellungen
- Self Update
- Sprach Einstellung
- Update, falls verfügbar
- Verschlüsselte list.txt
Der Patcher sieht folgendermaßen aus:
Ich habe den Patcher auf ein Bild draufprogramiert, da ich finde, dass es besser aussieht als eine standart form, die angeboten wird.
Es ist im Source eine GlobalConfig.vb enthalten, die ihr im grunde bloß verändern braucht:
Die GlobalConfig.vb ist wie der Name sagt Global und wird direkt für den Patcher & PatchListCreator übernommen.PHP-Code:Module GlobalConfig
Public Const VER = "1.8.10" ' Patcher Version
Public Const TITLE = "Sensation Fly" ' Patcher Titel
Public Const TITLE_VER = True ' Patcher Version im Titel anzeigen
Public Const HOME_URL = "http://sensation-fly.de/" ' Homepage URL
Public Const NEWS_URL = "http://sensation-fly.de/include/news.php" ' Inhalt der WebBox
Public Const PATCH_URL = "http://sensation-fly.de/patch/" ' Patch URL, "/" am Ende nicht vergessen
Public Const NEUZ_FILE = "neuz.exe" ' Dateiname des Clienten
Public Const NEUZ_PARAM = "sunkist" ' Start Parameter des Clienten
Public Const ENCRYPTION_USE = True ' list.txt Encryption benutzen
Public Const ENCRYPTION_KEY = "ai/HJ0AU?)%U!NAh047AW" ' Enctyption Key
Public Const LOG_CRYPT = False ' Logs verschlüsselt erstellen (ENCRYPTION_USE muss auf True sein)
Public Const LOG_FORCE = False ' Logs immer erstellen
Public Const MAX_GZIP = 100 ' Maximale Anzahl an Compressionen/Decompressionen gleichzeitig
End Module
So dann kommen wir zum PatchListCreator, welchen Ich nach der vorlage von HDBlacker aufgebaut habe und somit bis auf das Aussehen das selbe ist:
Für das erstellen der Patch Liste, folgendermaßen:
- Pfad angeben
- Create List klicken und warten bis die liste im Ordner abgelegt wurde
- Compress klicken und warten bis alles fertig ist
Falls ihr die Liste aktualisieren wollt folgendermaßen:
- Pfad angeben
- Decompress klicken und warten bis alles fertig ist
- Create List klicken und warten bis die liste im Ordner abgelegt wurde
- Compress klicken und warten bis alles fertig ist
_________________________________________
Im grunde war es das auch bisher, ich werde hier auch Changelogs reinbauen, falls ich Veränderungen durchführe.
PS: Das ganze ist mit Visual Basic 2010 geschrieben und arbeitet mit .NET Framework 2.0
PPS: Ich habe im Source soviel wie möglich ist kommentiert, damit ihr wisst was ich da gemacht habe.
Download v1.8.10: [Um Links zu sehen registriere dich bitte. Klicke hier.]
Download v1.8.5: [Um Links zu sehen registriere dich bitte. Klicke hier.]
Download v1.8: [Um Links zu sehen registriere dich bitte. Klicke hier.]
Download v1.7: [Um Links zu sehen registriere dich bitte. Klicke hier.]
Download v1.6: [Um Links zu sehen registriere dich bitte. Klicke hier.]
Download v1.5: [Um Links zu sehen registriere dich bitte. Klicke hier.]
Download v1.4: [Um Links zu sehen registriere dich bitte. Klicke hier.]
Download v1.3: [Um Links zu sehen registriere dich bitte. Klicke hier.]
Download v1.2: [Um Links zu sehen registriere dich bitte. Klicke hier.]
Download v1.1: [Um Links zu sehen registriere dich bitte. Klicke hier.]
Download v1.0: [Um Links zu sehen registriere dich bitte. Klicke hier.]
Die Dummy.txt könnt ihr löschen.
Change Log:
Credits:v1.8.10
- Code Optimierungen
- Design Update
v1.8.5
- Code Optimierungen
v1.8
- Code Optimierung
- Optionseinstellungen auf die Registry verlegt
- Force Log eingebaut, damit auch trotz Enctyption eine Log erstellt wird
- Log Encryption eingebaut
v1.7
- Code Optimierung
- Pre-Patch Modus verbessert
- Sprach Einstellung eingebaut
- PatchList Creator verbessert
v1.6
- Code Optimierung
- Datei-Signatur check eingebaut
v1.5
- Options Menü erweitert
- Pre-Patch eingebaut
v1.4
- PatchListCreator speichert nun den letzen genutzen pfad
- Laggs beim PatchListCreator wurden unterbunden, dass es sich nicht aufhängt
- Leichte Code optimierungen
v1.3
- Options Menü eingebaut
- list.txt Verschlüsslung eingebaut, dabei wird dann keine PatchLog angelegt
- Config globalisiert
- Einige funktionen globalisiert
v1.2
- Self Update eingefügt, danke an Tex0 für die Idee der Umsetzung
v1.1
- Crash fixx, sollte list.txt nicht auf dem server existieren bzw. kein Internet angeschlossen sein.
v1.0:
- Release des Patchers
- Patcher: Sedrika
- Design: ZooLag
- Updater Idee: Tex0
Geändert von Sedrika (06.04.12 um 16:27 Uhr)
Sieht nice aus :)
Wozu ein Open Source Patcher wenn Patcher src Public is? o.O
Hast du überhaupt die Einleitung gelesen ?
Hallo M-Core'ler,
ich habe angefangen einen eigenen Patcher zu coden (aus langeweile)
Klar gelesen, aber wie kommt man auf so ein Scheiß aus lw ein Patcher zu machen...
Beast oder so würd ich ja verstehen aber PATCHER..
Weil ich den aktuellen auch nicht so dolle finde ?
Zudem lass mich doch machen was ich will, wenn du einen neuen beast codest sag bescheid ich überweise dir sogar geld wenn es fertig und voll funktionsfähig ist.
~Kevin~ (21.01.12)
// Kleines edit ;)
Eh Jo Updater Sache: (noch ned getestet)
Patcher.vb :
Funktionen.vb :Code:If VER <> scanner.ReadLine() Then ' überprüfen ob die Version stimmt MsgBox("There is a new update", MsgBoxStyle.Information, "Update") Try My.Computer.Network.DownloadFile(PATCH_URL & "NewLaunch.exe", "NewLaunch.exe") TerminateAndStart() Catch ex As Exception MsgBox("Could not download NewLauncher File") End Try Exit Sub End If
Neues Projekt: UpdateCode:Public Sub TerminateAndStart() Dim Task As Long Task = Shell(My.Application.Info.DirectoryPath & "Update.exe", vbNormalNoFocus) MsgBox("A Newer Version of This Patcher has been downloaded !") Process.GetCurrentProcess.Kill() ' Kills process End Sub
Modul1.vb :
Code:Imports System Imports System.IO Module Module1 Sub Main() Dim FileName As String = My.Application.Info.DirectoryPath & "\NewLauncher.exe" Dim FileName2 As String = My.Application.Info.DirectoryPath & "\Launcher.exe" If DoesProcessExists("Launcher.exe") Then For Each Process In System.Diagnostics.Process.GetProcessesByName("Launcher.exe") Process.Kill() Next ElseIf Not File.Exists(FileName) Then MsgBox("NewLauncher.exe existiert nicht !") End Else File.Delete(FileName2) File.Move(FileName, FileName2) Shell(FileName2, AppWinStyle.NormalFocus) End End If End Sub Private Function DoesProcessExists(ByVal PName As String) As Boolean If System.Diagnostics.Process.GetProcessesByName(PName).Length > 0 Then Return True End If Return False End Function End Module
Sedrika (16.01.12)
Werd es nacher mal testen, hab grad etwas fixxed, das kommt zuerst.
Edit: Hab mal Self Updater coded, etwas aus deiner Idee hab ich genommen und verändert, ich arbeite lieber mit Parametern als mit festen werden, so kann der User zB seinen Patcher "ALALALA Patcher.exe" nennen und nach dem Update heisst es immernoch so.
Edit2:
v1.3 ist auch da ;)
Change Log:
v1.3
- Options Menü eingebaut
- list.txt Verschlüsslung eingebaut, dabei wird dann keine PatchLog angelegt
- Config globalisiert
- Einige funktionen globalisiert
v1.2
- Self Update eingefügt, danke an Tex0 für die Idee der Umsetzung
v1.1
- Crash fixx, sollte list.txt nicht auf dem server existieren bzw. kein Internet angeschlossen sein.
v1.0:
- Release des Patchers
Geändert von Sedrika (17.01.12 um 05:29 Uhr)
Update 1.4 ist da, mehr in den Logs.
Finde ich ein klasse Projekt und habe beschlossen, dass es einen Sticky bekommt. Weiter so!
Sedrika (21.01.12)
Kleine Idee:
Die Patchversion kann beim erstellen der Patchlist über die Patchlistcreator.exe eingestellt werden, ansonsten muss man (bei neuer Patchversion) immer zwei Programme builden ;)
Joah wär eine Idee aber dafür hab ich ja die GlobalConfig
Naja, hier mal noch eine Idee: Pre Patch!
Der User kann beim Start des Patchers über ein Kästchen den Pre Patch aktivieren, der wird beim System Start im Hintergrund alles Patchen und somit müsste der User nicht extra warten bis er Spielen kann ( Ja, die Idee is von 4Story ).
Hmm, keine schlechte idee. Denke wird sich einrichten lassen.
So v1.5 ist nun auch da.
Folgendes wurd gemacht:
- Options Menü erweitert auf ein zweites Tab fenster
- Pre-Patch eingebaut, dabei wird der Patcher im hintergrund mit dem system gestartet und updated alles und beendet sich danach selber wieder. Sollte die Version allerdings nicht übereinstimmen, passiert nichts.
Download v1.5: [Um Links zu sehen registriere dich bitte. Klicke hier.]
Tex0 (24.01.12)
Lesezeichen