AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi Patcher erstellen

Ein Thema von xReva · begonnen am 15. Nov 2016 · letzter Beitrag vom 15. Nov 2016
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Delphi Patcher erstellen

  Alt 15. Nov 2016, 09:05
Hallo,
ich würde erst mal ohne Webserver anfangen.

geg: 2 Dateien in unterschiedlichen Verzeichnissen
ges: Diff dieser Dateien

Google "delphi compare files" liefert

http://stackoverflow.com/questions/4...of-two-tstream

2 Dateien -> 2 TFileStreams -> per Copy 2 TMemoryStreams
damit könntest du anfangen.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.682 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Delphi Patcher erstellen

  Alt 15. Nov 2016, 09:23
ganz so simpel ist das nicht, binäre diffs

ein Ansatz wäre rdiff (basis von rsync), da müsstest Du evtl was lesen können als C Entwickler
Ansonsten wäre https://github.com/OctopusDeploy/Octodiff eine C#-Implementation

für Delphi ist mir nichts bekannt.
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Delphi Patcher erstellen

  Alt 15. Nov 2016, 09:27
Man muss ja theoretisch nicht gleich die Dateien auf binärer ebene vergleichen.
Ist sowieso keine so gute Idee wenn der Kram vom Webserver kommt, weil man dann entweder die alte Version hochladen muss damit der Webserver vergleichen kann oder man muss die (möglicherweise) neue Version runterladen um sie mit der alten zu vergleichen bevor man weiß ob sie tatsächlich neuer ist. Da ist es einfacher über Hashes oder sogar nur Versionsnummern zu gehen.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.199 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Delphi Patcher erstellen

  Alt 15. Nov 2016, 09:32
Wer hat denn was von binären Dingen und nur Differenzen übertragen gesagt? Er hat bislang nur "Daten" und "vergleichen" gesagt. Geht es um Text- oder Grafikdateien? Willst du einfach nur sehen ob "Datei A" gleich/ungleich "Datei B" ist"? Zum Beispiel "Wenn Datei A anders ist als das Gegenstück auf Internetserver X, dann lade sie von Internetserver X neu herunter und ersetze Datei A damit". Reicht das nicht schon?
  Mit Zitat antworten Zitat
dGeek
(Gast)

n/a Beiträge
 
#5

AW: Delphi Patcher erstellen

  Alt 15. Nov 2016, 09:56
Zitat:
geg: 2 Dateien in unterschiedlichen Verzeichnissen
ges: Diff dieser Dateien
Bietet sich hier nicht wunderbar ein MD5-Hash-Vergleich an?
Angehängte Dateien
Dateityp: zip MD5File.zip (676,9 KB, 5x aufgerufen)

Geändert von dGeek (15. Nov 2016 um 10:05 Uhr)
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#6

AW: Delphi Patcher erstellen

  Alt 15. Nov 2016, 10:09
Vor Jahren hatte ich mal ein ähnliches Update-System geschrieben. Das Prinzip basierte auf der Versionsnummer und einer kleinen Exe-Datei, die das Handling übernimmt.
Beispiel:
Das aktuelle Programm auf dem PC hat die Versionsnummer 2.0.1, auf dem Server liegen Updates bis zur aktuellen Version 2.0.3.
Verwaltet wird alles durch eine zentrale Info-Datei (empfohlen XML), in der die vorhandenen Versionsnummern und Links bzw. Dateinamen der Update-Dateien zu jeder Versionsnummer eingetragen sind.
Das Update-Programm (aufgerufen durch das eigentliche Programm) auf dem PC lädt die Info-Datei, sucht seine Versionsnummer 2.0.1 und erfährt dadurch den Link zur nächsten Update-Datei auf 2.0.2. Diese Datei wird heruntergeladen und das alte, vorher geschlossene Programm damit überschrieben.
Beim nächsten Programmstart wird das wiederholt und resultiert in Version 2.0.3. Beim folgenden Programmstart wird keine höhere Versionsnummer gefunden und das Programm ist auf dem neuesten Stand.
Leider Habe ich davon keine Dateien mehr, da das noch in meiner Zeit der Berufstätigkeit war, ich aber seit 2012 Rentner bin und die ganze Software in der Firma blieb, die allerdings nicht mehr existiert.
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
dGeek
(Gast)

n/a Beiträge
 
#7

AW: Delphi Patcher erstellen

  Alt 15. Nov 2016, 10:35
Zitat:
Diese Datei wird heruntergeladen und das alte, vorher geschlossene Programm damit überschrieben.
Interessehalber: wie hat sich bei dir denn die kleine Exe-Datei (der Updater ansich) aktualisiert?
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#8

AW: Delphi Patcher erstellen

  Alt 15. Nov 2016, 10:56
Zitat:
Diese Datei wird heruntergeladen und das alte, vorher geschlossene Programm damit überschrieben.
Interessehalber: wie hat sich bei dir denn die kleine Exe-Datei (der Updater ansich) aktualisiert?
Der wurde nicht aktualisiert. Der blieb immer gleich. Der hatte ja immer die gleichen Vorgänge abzuarbeiten und wurde vom Hauptprogramm aufgerufen. Er schaute in die Ini-Datei des Hauptprogramms, denn da stand immer die aktuelle Versionsnummer. Dann lud er die Info-Datei vom Server und schaute nach. War ein Update da, wurde das Hauptprogramm geschlossen und das Update herunter geladen (incl. dem Überschreiben der alten Versionsnummer in der Ini-Datei des Hauptprogramms). Danach wurde der Updater beendet und das Hauptprogramm wieder gestartet.
Diese Methode fand Anwendung in der damals von der Firma SAD vertriebenen Anwendung "Europa Führerschein". Da es immer mal Änderungen/Korrekturen bei Fragen, Bildern usw. gab, erwies sich diese Methode als vorteilhaft. Der kunde, der das Programm gekauft hatte, musste sich um nichts kümmern und hatte die Anwendung immer auf dem aktuellen Stand.
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Delphi Patcher erstellen

  Alt 15. Nov 2016, 14:47
Zurstmal (unabhängig von der Programmiersprache) würd ich mir Gedanken machen, was alles gemacht werden muss.

Mal so als Beispiel:

1. Prüfen der Internetverbindung/Verbindung zum Server (Es soll Leute geben die haben keine permanente I-Net-Verbindung)

2. Prüfen gibts was neues auf dem Server

Hier ist die Frage, wie genau du das angehen willst. Wirklich die Dateien vergleichen ? oder
über Info-Dateien ?

3. Updaten

Was muss zum Patchen runtergeladen werden ? Nur die neue Programmdatei oder auch zus. Module ?


Damit hast du schon mal nen "Master"-Plan für das Projekt.

Dann würd ich, Punkt für Punkt, erst in der Programmiersprache, die ich kann, umsetzen und dann
das ganze versuchen zu portieren (auf die andere Sprache)

Damit lernst du nicht nur die neue Sprache, sonder auch die Unterschiede zur bekannten Sprache,
was u.U. wieder zu neuen Ideen führt
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz