ich hab n Patch-System gemacht, das sehr einfach zu benutzen ist, wenn man weiß, wie man eine DLL einbindet! Es ist völlig variabel und kann auch große Mengen von Dateien prüfen und die aktuellste Version downloaden. Es hat auch einen schönen Dialog, der den Fortschritt anzeigt!Tja... wie mans benutzt steht im Spoiler.
Virentest:

Download:

Anleitung:
Aus der README:
Der Patcher überprüft, ob es neue Versionen gibt und lädt diese gegebenenfalls
runter. Zur Auswahl gibt es 2 Funktionen:
function checkupdate(const WebAdress, PatchFileName, VersionFile, Categoryname : PChar; const checkifdownload : Boolean = false) : Boolean;stdcall;
und
function update(const WebAdress, PatchFileName, VersionFile, Directory, Categoryname : PChar; const checkifdownload : Boolean = false) : Boolean;stdcall;
checkupdate:
Überprüft, ob es neue Versionen gibt. Falls es neue gibt, ist das Ergebnis true,
ansonsten false.
WebAdress: Die volle Homepageaddresse des Ordners, in dem die Dateien sind
(z.B. http:// www. sample .de/meinedateien/programm/)
PatchFileName: Der Name der Patchdatei auf dem Server(ACHTUNG: ini-Datei!)
(z.B. patch.ini)
VersionFile: Die Datei mit den Versionsnummern auf dem PC mit ganzem Verzeichnis
(ACHTUNG: ini-Datei!) (z.B. C:/Programme/FirmaA/ProgrammA/version.ini)
Categoryname: Der Name der Überkategorie in der Patchdatei
checkifdownload: Wenn der Wert true (Default false) ist, dann überprüft der Patcher
in der Versionsdatei unter der Kategorie [Download], ob die entsprechende Datei
überhaupt gepatcht werden soll.
update:
Prüft, welche Dateien veraltet sind und downloaded die neuen Dateien. Danach wird die
Versionsdatei aktualisiert. Parameter sind gleich wie oben bis auf:
Directory: Das Verzeichnis, in das die aktuellen Dateien gedownloaded werden sollen
(z.B. C:/Programme/FirmaA/ProgrammA/)
Soo, damit der Patcher auch funktioniert muss man ini-Files anlegen.
(Neue Textdatei -> Endung in .ini ändern)
Zum einen braucht der Patcher die Versionen, die auf dem PC vorliegen.
Diese gibt man ihm mit einer Versionsdatei (z.B. version.ini). Hier sei allerdings gesagt,
dass es nicht umbedingt nötig ist, diese Datei selbst zu erstellen. Wenn man es
einfach und übersichtlich haben will, dann erstellt man diese Datei nicht selbst,
sondern gibt dem Programm in den Funktionen nur eine Datei an, die es dann selbst
erstellen soll (die also noch nicht vorhanden ist). Wenn ihr aber die Datei erstellen wollt,
dann geht das so:
Beispiel einer Versionsdatei:
<---------Versionsdatei--------->
[Version]
1=1.0.1.2000
2=3.5.2.1001
3=2.1.1.1000
[Download]
1=true
2=false
3=true
<------------------------------->
(ACHTUNG: die <---> gehören NICHT dazu!)
Um das Prinzip einfacher erklären zu können stelle ich euch auch gleich die patch.ini vor.
Diese beinhaltet die neusten Versionsnummern und ist auf dem Server.
Beispiel einer Patchdatei:
<---------Patchdatei--------->
[MyProg]
Count=4
1=1.0.1.2000
2=3.6.1.1000
3=2.2.1.1000
4=1.0.1.1000
[Filename]
1=sample.exe
2=bin/sample.dll
3=bin/info.txt
4=help.nfo
<---------------------------->
Der Patcher arbeitet mit der Anzahl der Dateien. Das heißt, um die patch.ini (und die version.ini)
richtig zu erstellen muss man erstmal wissen, wieviele Dateien man hat. Dann fängt man mit der
Patchdatei an:
Als erstes erstellen wir eine neue Überkategorie. Im Beispiel ist es [MyProg]. Achtung: Dieser Name
ist der Parameter "Categoryname". Darunter geben wir den Schlüssel Count an und schreiben als Value
die Anzahl der Dateien. Als nächstes schreiben wir einfach (wie im Bsp) die Zahlen von 1 bis zur Anzahl
der Dateien runter. Fertig? GUT! Kopiert jetzt alles was ihr geschrieben habt und fügt es gleich wieder
in die Patchdatei ein. Löscht bei dem kopierten Zeilen den Schlüssel Count weg und ändert den Namen der
Überkategorie in [Filename]. Als nächstes müsst ihr die Dateien, die nacher gepatcht werden sollen, auf
euren Server hochladen. Macht am Besten einen extra-Ordner. Darin könnt ihr auch Unterordner machen.
Nun schreibt die Dateinamen, bzw. den Namen des Unterordners (in eurem gerade neu erstellten Ordner)
als Values hinter die Zahlen. Hinter die Namen der Unterordner kommt jetzt ein "/" (ohne die " ) und
dahinter der Name der Datei, die sich in dem jeweiligen Ordner befindet. Wenn ihr das geschafft habt
kommen die Versionsnummern dran. Diese kommen in die Kategorie, die im Bsp. [MyProg] heißt. Achtet
dabei darauf, dass die Nummerierung der Versionsnummern mit der Nummerierung der Dateinamen überein-
stimmt. Das ganze sollte jetzt so ähnlich wie im Bsp. aussehen.
Für alle, die jetzt noch die Versionsdatei selber machen wollen: Erstellt eine Neue ini-Datei, nennt
sie z.B. version.ini und fügt das, was ihr am Anfang kopiert habt dort ein. Löscht wieder den Schlüssel
Count raus und nennt die Überkategorie in [Version] um. Wenn ihr wollt, dass der Patcher wie ein
installer funktioniert, dann lasst die Values einfach weg. Wenn die Dateien auf dem PC schon vorhanden
sind, dann tragt einfach die Versionsnummern wieder ein (auf die Nummerierung achten!). Fast geschafft!
Jetzt kommt nurnoch optional die Überkategorie [Download]. Ihr braucht sie nur, wenn der Patcher nicht
immer alle Dateien kontrollieren/patchen soll (z.B. wenn ihr mehrere Programme zusammen habt, der Kunde
allerdings nur 1 Programm nutzt. Ohne diese Kategorie würde der Patcher frischfröhlich auch das 2.
Programm downloaden, das nicht alle Kunden wollen). Wieder Nummern hinschreiben und dahinter entweder
false für Datei überspringen oder true für Datei überprüfen eintragen.
Wenn ihr das alles richtig gemacht habt, sollte der Patcher funktionieren. Ansonsten schreibt einen
Bugreport an
.
Eine letzte Warnung: Der Patcher kann sich nicht selbst oder das Programm direkt patchen. Da der PC auf
beide Dateien zugreift ist dies einfach nicht möglich. Allerdings gibt es eine Hintertür: Ihr programmiert
euer Programm so, dass, falls eine bestimmte Datei gedownloaded wurde, das Programm ein anderes Programm
startet und sich dann selbst beendet. Dieses andere Programm wartet dann z.B. 3sek und löscht dann euer
Programm, bzw. die patch.dll, und nennt dann diese "bestimmten" Dateien (wegen denen sich euer Programm
beendet hat) in "euerprogramm".exe und patch.dll um.
Viel Spass mit diesem Tool! Bei Fragen oder Anregungen einfach eine Mail an
schicken!
(c) by minecrawler
Der Patcher überprüft, ob es neue Versionen gibt und lädt diese gegebenenfalls
runter. Zur Auswahl gibt es 2 Funktionen:
function checkupdate(const WebAdress, PatchFileName, VersionFile, Categoryname : PChar; const checkifdownload : Boolean = false) : Boolean;stdcall;
und
function update(const WebAdress, PatchFileName, VersionFile, Directory, Categoryname : PChar; const checkifdownload : Boolean = false) : Boolean;stdcall;
checkupdate:
Überprüft, ob es neue Versionen gibt. Falls es neue gibt, ist das Ergebnis true,
ansonsten false.
WebAdress: Die volle Homepageaddresse des Ordners, in dem die Dateien sind
(z.B. http:// www. sample .de/meinedateien/programm/)
PatchFileName: Der Name der Patchdatei auf dem Server(ACHTUNG: ini-Datei!)
(z.B. patch.ini)
VersionFile: Die Datei mit den Versionsnummern auf dem PC mit ganzem Verzeichnis
(ACHTUNG: ini-Datei!) (z.B. C:/Programme/FirmaA/ProgrammA/version.ini)
Categoryname: Der Name der Überkategorie in der Patchdatei
checkifdownload: Wenn der Wert true (Default false) ist, dann überprüft der Patcher
in der Versionsdatei unter der Kategorie [Download], ob die entsprechende Datei
überhaupt gepatcht werden soll.
update:
Prüft, welche Dateien veraltet sind und downloaded die neuen Dateien. Danach wird die
Versionsdatei aktualisiert. Parameter sind gleich wie oben bis auf:
Directory: Das Verzeichnis, in das die aktuellen Dateien gedownloaded werden sollen
(z.B. C:/Programme/FirmaA/ProgrammA/)
Soo, damit der Patcher auch funktioniert muss man ini-Files anlegen.
(Neue Textdatei -> Endung in .ini ändern)
Zum einen braucht der Patcher die Versionen, die auf dem PC vorliegen.
Diese gibt man ihm mit einer Versionsdatei (z.B. version.ini). Hier sei allerdings gesagt,
dass es nicht umbedingt nötig ist, diese Datei selbst zu erstellen. Wenn man es
einfach und übersichtlich haben will, dann erstellt man diese Datei nicht selbst,
sondern gibt dem Programm in den Funktionen nur eine Datei an, die es dann selbst
erstellen soll (die also noch nicht vorhanden ist). Wenn ihr aber die Datei erstellen wollt,
dann geht das so:
Beispiel einer Versionsdatei:
<---------Versionsdatei--------->
[Version]
1=1.0.1.2000
2=3.5.2.1001
3=2.1.1.1000
[Download]
1=true
2=false
3=true
<------------------------------->
(ACHTUNG: die <---> gehören NICHT dazu!)
Um das Prinzip einfacher erklären zu können stelle ich euch auch gleich die patch.ini vor.
Diese beinhaltet die neusten Versionsnummern und ist auf dem Server.
Beispiel einer Patchdatei:
<---------Patchdatei--------->
[MyProg]
Count=4
1=1.0.1.2000
2=3.6.1.1000
3=2.2.1.1000
4=1.0.1.1000
[Filename]
1=sample.exe
2=bin/sample.dll
3=bin/info.txt
4=help.nfo
<---------------------------->
Der Patcher arbeitet mit der Anzahl der Dateien. Das heißt, um die patch.ini (und die version.ini)
richtig zu erstellen muss man erstmal wissen, wieviele Dateien man hat. Dann fängt man mit der
Patchdatei an:
Als erstes erstellen wir eine neue Überkategorie. Im Beispiel ist es [MyProg]. Achtung: Dieser Name
ist der Parameter "Categoryname". Darunter geben wir den Schlüssel Count an und schreiben als Value
die Anzahl der Dateien. Als nächstes schreiben wir einfach (wie im Bsp) die Zahlen von 1 bis zur Anzahl
der Dateien runter. Fertig? GUT! Kopiert jetzt alles was ihr geschrieben habt und fügt es gleich wieder
in die Patchdatei ein. Löscht bei dem kopierten Zeilen den Schlüssel Count weg und ändert den Namen der
Überkategorie in [Filename]. Als nächstes müsst ihr die Dateien, die nacher gepatcht werden sollen, auf
euren Server hochladen. Macht am Besten einen extra-Ordner. Darin könnt ihr auch Unterordner machen.
Nun schreibt die Dateinamen, bzw. den Namen des Unterordners (in eurem gerade neu erstellten Ordner)
als Values hinter die Zahlen. Hinter die Namen der Unterordner kommt jetzt ein "/" (ohne die " ) und
dahinter der Name der Datei, die sich in dem jeweiligen Ordner befindet. Wenn ihr das geschafft habt
kommen die Versionsnummern dran. Diese kommen in die Kategorie, die im Bsp. [MyProg] heißt. Achtet
dabei darauf, dass die Nummerierung der Versionsnummern mit der Nummerierung der Dateinamen überein-
stimmt. Das ganze sollte jetzt so ähnlich wie im Bsp. aussehen.
Für alle, die jetzt noch die Versionsdatei selber machen wollen: Erstellt eine Neue ini-Datei, nennt
sie z.B. version.ini und fügt das, was ihr am Anfang kopiert habt dort ein. Löscht wieder den Schlüssel
Count raus und nennt die Überkategorie in [Version] um. Wenn ihr wollt, dass der Patcher wie ein
installer funktioniert, dann lasst die Values einfach weg. Wenn die Dateien auf dem PC schon vorhanden
sind, dann tragt einfach die Versionsnummern wieder ein (auf die Nummerierung achten!). Fast geschafft!
Jetzt kommt nurnoch optional die Überkategorie [Download]. Ihr braucht sie nur, wenn der Patcher nicht
immer alle Dateien kontrollieren/patchen soll (z.B. wenn ihr mehrere Programme zusammen habt, der Kunde
allerdings nur 1 Programm nutzt. Ohne diese Kategorie würde der Patcher frischfröhlich auch das 2.
Programm downloaden, das nicht alle Kunden wollen). Wieder Nummern hinschreiben und dahinter entweder
false für Datei überspringen oder true für Datei überprüfen eintragen.
Wenn ihr das alles richtig gemacht habt, sollte der Patcher funktionieren. Ansonsten schreibt einen
Bugreport an
.Eine letzte Warnung: Der Patcher kann sich nicht selbst oder das Programm direkt patchen. Da der PC auf
beide Dateien zugreift ist dies einfach nicht möglich. Allerdings gibt es eine Hintertür: Ihr programmiert
euer Programm so, dass, falls eine bestimmte Datei gedownloaded wurde, das Programm ein anderes Programm
startet und sich dann selbst beendet. Dieses andere Programm wartet dann z.B. 3sek und löscht dann euer
Programm, bzw. die patch.dll, und nennt dann diese "bestimmten" Dateien (wegen denen sich euer Programm
beendet hat) in "euerprogramm".exe und patch.dll um.
Viel Spass mit diesem Tool! Bei Fragen oder Anregungen einfach eine Mail an

schicken!
(c) by minecrawler






