Angepinnt [Open Source] Patcher

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [Open Source] Patcher

      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:

      PHP-Quellcode

      1. Module GlobalConfig
      2. Public Const VER = "1.8.10" ' Patcher Version
      3. Public Const TITLE = "Sensation Fly" ' Patcher Titel
      4. Public Const TITLE_VER = True ' Patcher Version im Titel anzeigen
      5. Public Const HOME_URL = "http://sensation-fly.de/" ' Homepage URL
      6. Public Const NEWS_URL = "http://sensation-fly.de/include/news.php" ' Inhalt der WebBox
      7. Public Const PATCH_URL = "http://sensation-fly.de/patch/" ' Patch URL, "/" am Ende nicht vergessen
      8. Public Const NEUZ_FILE = "neuz.exe" ' Dateiname des Clienten
      9. Public Const NEUZ_PARAM = "sunkist" ' Start Parameter des Clienten
      10. Public Const ENCRYPTION_USE = True ' list.txt Encryption benutzen
      11. Public Const ENCRYPTION_KEY = "ai/HJ0AU?)%U!NAh047AW" ' Enctyption Key
      12. Public Const LOG_CRYPT = False ' Logs verschlüsselt erstellen (ENCRYPTION_USE muss auf True sein)
      13. Public Const LOG_FORCE = False ' Logs immer erstellen
      14. Public Const MAX_GZIP = 100 ' Maximale Anzahl an Compressionen/Decompressionen gleichzeitig
      15. End Module
      Alles anzeigen

      Die GlobalConfig.vb ist wie der Name sagt Global und wird direkt für den Patcher & PatchListCreator übernommen.

      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:


      1. Pfad angeben
      2. Create List klicken und warten bis die liste im Ordner abgelegt wurde
      3. Compress klicken und warten bis alles fertig ist



      Falls ihr die Liste aktualisieren wollt folgendermaßen:


      1. Pfad angeben
      2. Decompress klicken und warten bis alles fertig ist
      3. Create List klicken und warten bis die liste im Ordner abgelegt wurde
      4. 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: Sedrika Patcher v1.8.10.rar (10,59 MB) - uploaded.to
      Download v1.8.5: Sedrika Patcher v1.8.5.rar (10,51 MB) - uploaded.to
      Download v1.8: Sedrika Patcher v1.8.rar (11,92 MB) - uploaded.to
      Download v1.7: Sedrika Patcher v1.7.rar (13,39 MB) - uploaded.to
      Download v1.6: Sedrika Patcher v1.6.rar (13,97 MB) - uploaded.to
      Download v1.5: Sedrika Patcher v1.5.rar (13,61 MB) - uploaded.to
      Download v1.4: Sedrika Patcher v1.4.rar (13,51 MB) - uploaded.to
      Download v1.3: Sedrika Patcher v1.3.rar (13,50 MB) - uploaded.to
      Download v1.2: Sedrika Patcher v1.2.rar (12,07 MB) - uploaded.to
      Download v1.1: Sedrika Patcher v1.1.rar (11,92 MB) - uploaded.to
      Download v1.0: Sedrika Patcher v1.0.rar (11,79 MB) - uploaded.to
      Die Dummy.txt könnt ihr löschen.

      Change Log:
      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


      Credits:
      - Patcher: Sedrika
      - Design: ZooLag
      - Updater Idee: Tex0
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • Crasy;275247 schrieb:

      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.
    • // Kleines edit ;)
      Eh Jo Updater Sache: (noch ned getestet)
      Patcher.vb :

      Quellcode

      1. If VER <> scanner.ReadLine() Then ' überprüfen ob die Version stimmt
      2. MsgBox("There is a new update", MsgBoxStyle.Information, "Update")
      3. Try
      4. My.Computer.Network.DownloadFile(PATCH_URL & "NewLaunch.exe", "NewLaunch.exe")
      5. TerminateAndStart()
      6. Catch ex As Exception
      7. MsgBox("Could not download NewLauncher File")
      8. End Try
      9. Exit Sub
      10. End If

      Funktionen.vb :

      Quellcode

      1. Public Sub TerminateAndStart()
      2. Dim Task As Long
      3. Task = Shell(My.Application.Info.DirectoryPath & "Update.exe", vbNormalNoFocus)
      4. MsgBox("A Newer Version of This Patcher has been downloaded !")
      5. Process.GetCurrentProcess.Kill() ' Kills process
      6. End Sub


      Neues Projekt: Update
      Modul1.vb :

      Quellcode

      1. Imports System
      2. Imports System.IO
      3. Module Module1
      4. Sub Main()
      5. Dim FileName As String = My.Application.Info.DirectoryPath & "\NewLauncher.exe"
      6. Dim FileName2 As String = My.Application.Info.DirectoryPath & "\Launcher.exe"
      7. If DoesProcessExists("Launcher.exe") Then
      8. For Each Process In System.Diagnostics.Process.GetProcessesByName("Launcher.exe")
      9. Process.Kill()
      10. Next
      11. ElseIf Not File.Exists(FileName) Then
      12. MsgBox("NewLauncher.exe existiert nicht !")
      13. End
      14. Else
      15. File.Delete(FileName2)
      16. File.Move(FileName, FileName2)
      17. Shell(FileName2, AppWinStyle.NormalFocus)
      18. End
      19. End If
      20. End Sub
      21. Private Function DoesProcessExists(ByVal PName As String) As Boolean
      22. If System.Diagnostics.Process.GetProcessesByName(PName).Length > 0 Then
      23. Return True
      24. End If
      25. Return False
      26. End Function
      27. End Module
      Alles anzeigen
    • 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

    • 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 ).
    • Bei mir kommts ab und zu vor, dass der Patchlist Creator die Res Dateien auf 0 Byte packt und unbrauchbar macht. Wenn ich sie selbst packe, weigert er sich wiederum, diese zu entpacken. Grundsätzlich wird die Neuz nicht gepatcht (Ich habe das Gefühl, dass allgemein nicht geschrieben wird in meinem Client Ordner). Mein Compiler beschwert sich, dass das .Net Framwork 2 angegeben wird, aber Funktionen aus .Net 3.5 verwendet werden.

      Ich würde den Patcher gerne verwenden, kann es aber nicht tun, weil er insgesamt sehr unzuverlässig arbeitet.
    • Lucy;276123 schrieb:

      Bei mir kommts ab und zu vor, dass der Patchlist Creator die Res Dateien auf 0 Byte packt und unbrauchbar macht. Wenn ich sie selbst packe, weigert er sich wiederum, diese zu entpacken. Grundsätzlich wird die Neuz nicht gepatcht (Ich habe das Gefühl, dass allgemein nicht geschrieben wird in meinem Client Ordner). Mein Compiler beschwert sich, dass das .Net Framwork 2 angegeben wird, aber Funktionen aus .Net 3.5 verwendet werden.

      Ich würde den Patcher gerne verwenden, kann es aber nicht tun, weil er insgesamt sehr unzuverlässig arbeitet.


      Bisher ist mir so ein fehler nicht unterlaufen bei den hunderten tests, die ich gemacht hab.
      Und die gzip.exe reagiert auf Parameter.

      -f // compress
      -f -d // decompress
    • Falls du es brauchst hab ne kleine andere (meiner Meinung nach schnellere) Download Methode via HttpRequest:

      Quellcode

      1. Private Sub Download(ByVal sURL As String, ByVal strFile As String, ByVal strFolder As String) ' Url (with File); Filename; Path
      2. Dim webreq As HttpWebRequest
      3. Dim webresp As HttpWebResponse
      4. Dim b_Reader As BinaryReader
      5. Dim b_Writer As BinaryWriter
      6. Dim stream As FileStream
      7. Dim buffer() As Byte = New Byte(1024) {}
      8. Dim bytesRead As Integer
      9. ProgressBar1.Value = 0
      10. Try
      11. webreq = HttpWebRequest.Create(sURL)
      12. webresp = webreq.GetResponse
      13. Me.ProgressBar1.Maximum = webresp.ContentLength
      14. stream = New FileStream(strFolder & "\" & strFile, FileMode.Create)
      15. b_Reader = New BinaryReader(webresp.GetResponseStream)
      16. b_Writer = New BinaryWriter(stream)
      17. Do
      18. bytesRead = b_Reader.Read(buffer, 0, 1024)
      19. b_Writer.Write(buffer, 0, bytesRead)
      20. ProgressBar1.Value += bytesRead
      21. ProgressBar1.Update()
      22. Loop Until bytesRead = 0
      23. b_Writer.Close()
      24. b_Reader.Close()
      25. stream.Close()
      26. Catch ex As Exception
      27. ' Bei Fehler...
      28. MessageBox.Show("Fehler: " & vbCrLf & ex.Message, _
      29. "Fehler", MessageBoxButtons.OK, _
      30. MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
      31. End Try
      32. End Sub
      Alles anzeigen