Entwickler-Ecke

Dateizugriff - Update Programm


cromos - Mi 03.09.03 21:15
Titel: Update Programm
Hallo,

also ich habe mir gedacht das ich den Anwender für meine Software ein Update Programm zum Download anbiete.
Das dies nur Leute nutzen sollten die schon einmal die Vollversion gekauft haben habe ich mir folgendes überlegt:

Das UpdateProg ist nur eine Exe, die aber das komplette neue Programm enthält. Also wenn der User das Update strartet soll das Prog schauen ob das Programm vorhanden ist z.b. ABC.EXE wenn nein, dann Meldung und Exit. Wenn ja, dann die Orginal ABC.EXE löschen, und das aktuelle Programm aus der Update.exe "transferieren" und als ABC.EXE speichern.

Weiss jetzt nicht ob ich mich verständlich ausgedrückt habe. Geht das überhaupt was ich mir da überlegt habe, oder nicht. Oder hat jemand eine einfachere Idee ein Update zu realisieren?????

Gruss
Cromos


ultra2k - Mi 03.09.03 21:29

Hast du nicht irgendwo Webspace??? Dann könntest du ein Live Update (sowas wie Windows halt) anbieten, wo der User sich mit seinen Registierungsdaten einloggt, hab ich mal gemacht...


Delete - Mi 03.09.03 23:12
Titel: Re: Update Programm
cromos hat folgendes geschrieben:
Oder hat jemand eine einfachere Idee ein Update zu realisieren?????

Ja, weil wir das Thema schon diverse Male hatten. http://www.delphi-forum.de/viewtopic.php?t=14308&highlight=makeupd.

Bitte folge den Links, und du gelangst zu einem Programm, das a) Patches erstellt (sprich: nur die Unterschiede zwischen alter und neuer Version speichert), und b) ein einfaches Setup zum Einspielen dieser Patches zur Verfügung stellt. :)


CenBells - Do 04.09.03 10:06

darf ich vielleicht noch auf den Patchmaker von Clickteam [http://www.clickteam.com] hinweisen?
Der gefällt mir persönlich sehr gut.

Gruß
Ken


Delete - Do 04.09.03 10:13

Hm, aber der kostet doch was. - Und bei MakeUpd liegen sogar die Sourcen bei, so dass man das "fette" VCL-Setup problemlos gegen eine schmalere Version austauschen kann.


CenBells - Do 04.09.03 10:29

@Mathias, klar kostet der was, allerdings finde ich den echt sehr schick. Aber ich bin ja auch offen für neue sachen und schau mir gerade das MakeUpd an..

Gruß
Ken


CenBells - Do 04.09.03 10:35

ok, meine ersten updates habe ich jetzt gemacht. Ist allerdings nicht wesentlich kleiner, wenn ich mit einem update mehrere Versionen updaten will.... Oder habe ich da jetzt was verpasst? Und man muss das update programm mit ausliefern, oder?

Gruß
KEn


cromos - Do 04.09.03 11:22

Danke für die vielen Antwort,

werde mir mal die Programme ansehen.

Gruss
Cromos


Delete - Do 04.09.03 11:34

CenBells hat folgendes geschrieben:
ok, meine ersten updates habe ich jetzt gemacht. Ist allerdings nicht wesentlich kleiner, ...

Na ja, ist halt ein VCL-Setup. :) Ich hatte mal eine angepasste Version geschrieben, weil ich das Teil, das die Patches erstellt, furchtbar umständlich fand. Bei mir hast du zwei Verzeichnisse (alt vs. neu) ausgewählt, das Teil hat alle Dateien eingelesen und gleich in der Liste angezeigt. Dazu kam dann noch ein nonVCL-Setup mit (ich weiß nicht mehr genau) ca. 50k Größe. Das alles verpackt in eine Selbstentpacker-Exe (wie IExpress von Microsoft), und dann konnte das Patchen losgehen ... :wink:

Zitat:
wenn ich mit einem update mehrere Versionen updaten will....

Richtig, das mag sein. Das ist der Nachteil bei so einem kombinierten Patch, der mehrere Dateiinfos enthält. Da wären kleine Einzeldateien (wie etwa beim VPatch-Plugin für NSIS), die man dann in das Setup aufnimmt, besser. Klappt ein Patch nicht, versuchst du eben den nächsten, usw.

Zitat:
Und man muss das update programm mit ausliefern, oder?

Wenn du dieses Setup meinst: Ja, natürlich. Bei dem PatchMaker von ClickTeam ist das auch nicht anders, nur dass da die Patchinfos mit in der Exe stecken - ähnlich den Setups von Inno oder NSIS.

Gruß.


cromos - Do 04.09.03 15:12

Hallo,

als hab mal diese MakeUpdate ausprobiert, ich dachte damit könnte man
fertige Patch . EXE'en erstellen??! - Ist das nicht der Fall?
Bekomme da ja nur diese UPD Datei.

Dann muss ich ja immer die UDP Datei und den Patcher ausliefern?!!
Wollte alles in eine EXE haben.

Gruss
Cromos


Delete - Do 04.09.03 16:28

Warum erwähnst du das noch mal? Hat doch CenBells schon getan. Es gibt übrigens kostenlose Tools zum Packen von mehreren Dateien in eine selbstenpackende Exe. Ich benutze meist IExpress, das Teil des Internet Explorer Administration Kit (IEAK) ist.

Meines Wissens nach gibt es allerdings mitten zwischen den Sourcen von MakeUpd auch einen Exe-Loader. Einfach mal durchgucken.


Delete - Do 04.09.03 17:45

MathiasSimmack hat folgendes geschrieben:
Meines Wissens nach gibt es allerdings mitten zwischen den Sourcen von MakeUpd auch einen Exe-Loader. Einfach mal durchgucken.

Oder mal in die Hilfedatei gucken: "Creating a Self-applying Update File".


cromos - Fr 05.09.03 00:34

MathiasSimmack hat folgendes geschrieben:
MathiasSimmack hat folgendes geschrieben:
Meines Wissens nach gibt es allerdings mitten zwischen den Sourcen von MakeUpd auch einen Exe-Loader. Einfach mal durchgucken.

Oder mal in die Hilfedatei gucken: "Creating a Self-applying Update File".


ja, leider ist das alles in Englisch.
Keine Ahnung wie das gehen soll.
Jedenfallss hört sich das ziemlich kompliziert an.


Delete - Fr 05.09.03 07:58

Da stellt sich mir (nicht zum ersten Mal) die Frage: Wie programmieren Leute wie du eigentlich, die kein Englisch können? Delphi ist immerhin auch Englisch. Und das Programm MakeUpd auch, aber na gut ... da könnte man mit wildem Herumprobieren noch Erfolg haben ... :roll: ... Aber egal - ich fasse es für dich mal zusammen

"UpdateSfxStub.exe" ist dabei der Starter, an den deine in Schritt 1 erstellte Updatedatei angehangen wird. Das passiert durch "copy /b" und das Plus. Ergebnis ist die selbststartende EXE-Datei, die dein Update enthält.

Jetzt noch mal: Wo war das was kompliziertes?

Gruß.


cromos - Fr 05.09.03 10:51

Hi,

also,

1. Kann ich englisch im Sinne von sich unterhalten ziemlich gut. Jedenfalls sagen das die Leute wenn ich im englischsprachigen Ausland bin.

Aber mit so extrem technischen Anleitungen habe ich manchmal meine Probs.

2. Stand da irgend was von Hardcoden und 2 o. 3 mal Kompilieren. etc.
Ausserdem kann ich UPDATESFXSTUB nicht kompilieren, da er mir immer eine Fehler anzeigt, soviel ich verstanden haben muss man da irgendwas ändern, aber wie ändern?...irgendwas
von länger der Datei / Pi * Daumen..... :wink:
Jedenfalls finde ich diese Anleitung alles andere als verständlich.
Darum frage ich ja.
Ausserdem bin ich Anfänger was Delphi betrifft, deshalb bitäääää nicht schimpfen :D

Gruss
Cromos


cromos - Fr 05.09.03 11:01

Hier das steht in der Hilfe:

Zitat:

Some special instructions need to be followed in compiling UpdateSFXStub. Your self-applying update needs to know where the executable ends, and where the updates begin. Right now, the way to do this is by compiling UpdateSFXStub with the length of itself harde coded in a constant SFXlength. This means you have to compile UpdateSFXStub twice, the first time to determine the executable length, the second time to store the executable length in the SFXlength constant. See the comments in the UnitSFX.Pas file for further details on this and how to ensure that the UpdateSFXStub is fairly small.

Note that once the UpdateSFXStub is properly compiled, you shouldn't have to compile it again. You can reuse the same executable to create all your self-applying update files.



Klasse. Die Worte verstehe ich, aber der Sinn bleibt mir verschlossen :wink:


CenBells - Fr 05.09.03 13:00

@Cromos: was verstehst du denn nicht?

Da steht, du sollst UpdateSFXStub einmal kompilieren, dir dann die genaue größe der Exe anschauen und den wert im Quellcode in die Konstante SFXLength eintragen. Dann kompilierst du noch einmal und die dann entstehende exe kannst du immer wieder verwenden.
Die Exe fügst du mit dem Befehl von Mathias mit deinem Update file zusammen und gut ist...

Das ist ganz normales English... :roll:

Gruß
Ken


cromos - Fr 05.09.03 16:02

Man kann die Datei nicht kompilieren, da man einen Fehler bekommt.


Delete - Fr 05.09.03 16:11

Der einzige Fehler, den ich bekomme, betrifft das Fehlen der RES-Datei. Öffne ich das Programm mit Delphi, wird aber eine solche Datei automatisch angelegt. Dann ließ es sich mit ein paar Warnungen kompilieren. Andere Fehler (in dem Sinn des Wortes) habe ich nicht gesehen.


cromos - Fr 05.09.03 19:13

Dieser Fehler:

[Fehler] aCRC32.pas(195): Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden

bezieht sich auf:

Delphi-Quelltext
1:
CRC:=not LongInt(CRC32Calc(byte(TestString[1]),$ffffffff,Length(TestString)));                    


Delete - Fr 05.09.03 23:54

Sorry, aber da muss ich passen. Ich habe extra mal geguckt, aber auf dem Server [http://www.tsppd.com/MakeUpdate/] liegt immer noch die 1.07er-Version, die ich auch lokal hier rumliegen habe.

Besagte Zeile passiert mein Delphi 5 anstandslos. Keins der Programme verursacht (mal von den Warnungen abgesehen) irgendwelche Probleme. Und so unterschiedlich dürften D5 und D7 nicht sein.


CenBells - Sa 06.09.03 01:36

ok, vielleicht kommt der fehler. Und nun? Schreib das ganze doch ein wenig um und gut ist. Das Problem wird wahrscheinlich length(TestString) sein. Deklarier dir einfach eine Integer Variable und weis dieser dann die Länge zu. Die Variable übergibst du dann in den Aufruf von CRC32Calc.

Gruß
Ken


chris_davidi - Di 09.09.03 15:04

Falls es jemand interessiert, weiß nicht, ob es schon gepostet wurde, aber wenn nicht ist es kein Fehler. Eine tolle Idee für ein Update, wie ich finde.

http://www.delphi-board.com/bsforum.exe/topic?fid=2&tid=239

Gruß
Chris