AGB  ·  Datenschutz  ·  Impressum  







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

Patches programmieren

Ein Thema von PierreB · begonnen am 23. Apr 2005 · letzter Beitrag vom 15. Mai 2005
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
PierreB
(Gast)

n/a Beiträge
 
#11

Re: Patches programmieren

  Alt 23. Apr 2005, 12:22
Zitat:
Unter dem genannten Link findet sich irgendwo ein mit Delphi geschriebenes Programm, das den ganzen Patchprozess von sich aus übernimmt
Genau das hab ich jetzt. Danke nochmal.

Das mit nem Hexeditor sollte aber eigentlich auch gehen, oder ?
  Mit Zitat antworten Zitat
Benutzerbild von Speedmaster
Speedmaster

Registriert seit: 4. Mär 2005
Ort: Karlsruhe
535 Beiträge
 
Delphi 2005 Personal
 
#12

Re: Patches programmieren

  Alt 23. Apr 2005, 12:29
Das ganze muss nicht sein wenn man die Ressourcen aus DLL's läd!
Felix K.
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#13

Re: Patches programmieren

  Alt 23. Apr 2005, 12:32
wenn man viel auslagert sind die einzelenen dateien kleiner, dann muss man nur die änderungen weitergeben.
problem beim patchen ist wenn sich z.b. die größe einer exe ändert,dann wirds komplizierter. Wollte mal so einen patchersteller schreiben wenn ich in den nächsten tagen mal zeit habe mach ich das mal
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#14

Re: Patches programmieren

  Alt 23. Apr 2005, 12:33
Zitat von Speedmaster:
Das ganze muss nicht sein wenn man die Ressourcen aus DLL's läd!
Na bravo. Dann muss ich eben eine 200 KB-DLL austauschen/patchen anstatt einer 250 KB-exe. Das bringts ja
Fakt ist: sobald sich ein Programm aendert, muss man die Aenderungen zum Kunden bringen. Ob ich eine DLL patche oder eine EXE macht keinen Unterschied

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#15

Re: Patches programmieren

  Alt 23. Apr 2005, 12:36
DLL patchen ginge bei mir auch nicht weil ich keine DLL's verwende. Und die Endanwendung ist mittlerweile 3500KB groß, wenn ich da jedesmal die richtige EXE austauschen müsste...
  Mit Zitat antworten Zitat
Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#16

Re: Patches programmieren

  Alt 23. Apr 2005, 12:51
Hallo,

da ich das grad für mein aktuelles Projekt umgesetzt habe, hier mal, wie ich das gelöst habe.

Ich habe ein Zusatzprogramm (Updater.exe) geschrieben, daß aus dem Hauptprogramm aufgerufen wird. Das Hauptprogramm wird dann geschlossen (eine offene Datei zu patchen wird schwer). Das Update-Programm läd sich dann von meiner Homepage das aktuelle Update herunter, das kumulativ ist.

Alle relevanten Daten werden dann getauscht und das Update-Programm ruft dann das Hauptprogramm wieder auf und beendet sich selber.

Das ganze habe ich noch mit einer Art Scriptsprache versehen, falls doch noch andere Programme vor dem Hauptprogramm ausgeführt werden müssen, oder falls andere Dateien in anderen Verzeichnissen kopiert werden müssen.

Jetzt muß ich mir nur noch überlegen, wie ich das mache, wenn ich das Updater-Programm updaten will. Vermutlich prüfe ich noch vor dem Aufruf des Updater-Programms, ob auch dort eine neue Version existiert und tausche es vor dem Aufrufen auf. Ist zwar kompliziert und mit viel Arbeit verbunden, aber bei klappt das einwandfrei.

Ablauf:
* User oder Programm prüft auf Updates
* Update wird gefunden und das Updater-Programm wird geprüft, ob auch hier neue Updates vorliegen
* Wenn ja -> aktuelles Updater-Programm wird heruntergeladen
* Hauptprogramm ruft Updaterprogramm auf und beendet sich selbt
* Updater-Programm läd Dateien herunter und aktualisiert
* Updater-Programm ruft wieder Hauptprogramm (oder andere) auf und beendet sich selbst

Symantec macht das mit Live-Update ganz ähnlich.

Die Scriptdatei sieht bei mir z.B. so aus:
Code:
<UPDATE>
<FILES>
/update/ramdefrag/onlineupdate/;ram_defrag.zip;[PROGRAMDIR];true
</FILES>

<START>
[PROGRAMDIR]ram_defrag.exe;0
</START>

</UPDATE>
Das Wort <UPDATE> leitet das Update ein
Unter <FILES> stehen die Dateien, die heruntergeladen werden, und wohin entpackt werden soll. "True", ob überschrieben werden soll, oder nicht.

Unter <START> alle Programme, die danach wieder aufgerunfen werden sollen. Die Zahl dahinter in Sekunden wielange gewartet werden soll, bis sich das Updateprogramm dann selbst beendet.

Bei weiteren Fragen - frag
Catbytes
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#17

Re: Patches programmieren

  Alt 23. Apr 2005, 12:57
Zitat:
Alle relevanten Daten werden dann getauscht und das Update-Programm ruft dann das Hauptprogramm wieder auf und beendet sich selber.
Welche Dateien werden ausgetauscht ? Die Haupt-EXE ?
Wenns wie bei mir 3,5 MB sind, was hast du für nen Traffic im Monat ?
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#18

Re: Patches programmieren

  Alt 23. Apr 2005, 13:28
Zitat von PierreB:
Zitat:
Alle relevanten Daten werden dann getauscht und das Update-Programm ruft dann das Hauptprogramm wieder auf und beendet sich selber.
Welche Dateien werden ausgetauscht ? Die Haupt-EXE ?
Die, die nötig sind. Wenn´s bei dir nur die Haupt-Exe ist, dann is´ es nur die eine Exe. Ein anderer muss neben der Exe vllt. auch noch ein paar DLLs austauschen, usw. Deswegen spricht man ja auch von einem normalen Patch und einem kumulativen Update.

Im Prinzip machen beide das gleiche. Nur ein normaler Patch erwartet eine ganz bestimmte Version, weil er logischerweise immer nur zwei Dateien miteinander vergleichen kann. Bitte nicht falsch verstehen. Der Patch selbst kann meinetwegen 1000 Dateien aktualisieren. Aber bei jeder dieser 1000 Dateien wird immer nur die zu patchende alte Version (1.0, bspw.) mit der neuen 2.0 verglichen. Wer also bereits die Version 1.1 benutzt, kann den Patch 1.0->2.0 nicht verwenden, bzw. bestimmte Dateien, die nicht der erwarteten Version entsprechen, werden nicht aktualisiert.

Und da kommt das kumulative Update, das alle Updates enthält. Kennt man ja auch von den IE-Sicherheitsupdates. Meist reicht es, das jeweils aktuellste Update zu ziehen. Die vorher veröffentlichten sind mit drin. Darum kann so ein Update von einem User angewendet werden, der eine vollkommen ungepatchte Version hat. Und es kann ein User anwenden, der die vorher veröffentlichten Patches schon drauf hat. In solchen Fällen werden die Dateien, die sich innerhalb der einzelnen Versionen verändert haben (1.0->1.1->1.2->...->2.0) komplett reingepackt, weil eben der gezielte Vergleich zwischen Version X und 2.0 nicht möglich wäre, ohne Benutzer anderer Versionen auszuschließen.
  Mit Zitat antworten Zitat
magicm247

Registriert seit: 17. Apr 2005
14 Beiträge
 
Delphi 2005 Personal
 
#19

Re: Patches programmieren

  Alt 23. Apr 2005, 16:35
zum erstellen von patches nehme ich derzeit Patchmaker (s kumulative Update), ist sogar kostenlos.
http://www.clickteam.com/PatchMaker

Rauf auf den Webserver damit.
Ein Kleines updateprogramm fragt mit einem code an, ob eine neue version vorhanden ist.
wenn ja wird das entsprechende File geladen.

Die Frage ist jetzt nur, wie vergibt man diese prüfcodes.
Das kann
a) die Anwendung mit der Version sein, davon einen md5 machen
b) wie a) nur dass noch lizenz (Free,Privat,Pro) unterschieden wird, wenn man bestimmte Patches nur speziellen Lizenznehmern gönnen will/darf. Man kann hier auch einen Berechtigungs-key einbinden, der nur 1 Jahr gilt.
b) md5 über jede Datei und diese einzeln auf dem Server abfragen

bei a) und b) muss das update-programm den code irgend wo herholen und bei dem update muss dieser auch aktuallisiert werden.
  Mit Zitat antworten Zitat
Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#20

Re: Patches programmieren

  Alt 23. Apr 2005, 17:09
Zitat von PierreB:
Zitat:
Alle relevanten Daten werden dann getauscht und das Update-Programm ruft dann das Hauptprogramm wieder auf und beendet sich selber.
Welche Dateien werden ausgetauscht ? Die Haupt-EXE ?
Wenns wie bei mir 3,5 MB sind, was hast du für nen Traffic im Monat ?
Es werden die Dateien getauscht, die eben nötig sind. Ob das die Haupt-EXE ist oder nur die angepasste Hilfedatei, mußt Du wissen.

Im März hatte ich 5125033 KB bei knapp 130.000 Hits - war aber teilweise schon das 10-fache

Zum prüfen, ob eine aktuelle Version vorliegt:
In meinem Programm gibt es bestimmte Variablen, die mit jeder neuen Version geändert werden.

z.B.
Delphi-Quellcode:
  ProgVersion := '2.80';
  ProgRevision := 'Alpha2';
  ProgCopyrightYear := '©2002 - 2005';
  ProgCopyrightFirm := 'Catbytes Software';
  ProgCopyrightAuthor := 'Armin Cristalli';
  ProgName := 'RAM Defrag';
  ProgType := 'SHAREWARE-VERSION';
usw...

Diese Variablen nutze ich dann im ganzen Programm - sei es um die Caption zu erzeugen oder eben die Version zu prüfen. So vermeide ich auch, daß irgendwo noch eine alte Versionsnummer im Programm steht.

Auf dem Server liegt dann eine Textdatei, in der die Version auf dem Server gespeichert wird. Die wird per "HttpCli" aus den FPiette-Komponenten runtergeladen und verglichen. Stimmen beide überein, ist die Version noch aktuell - wenn nicht, startet eben auf Wunsch der Download wie oben beschrieben.
Catbytes
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


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 14:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz