Einzelnen Beitrag anzeigen

Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#1

Internet Programmupdate durchführen - Wie wirds gemacht ?

  Alt 6. Jan 2005, 14:31
hallo leute,

ich will in mein programm mit einer internet update funktion ausstatten, wie sie diverse aktuelle programme bieten.
dazu habe ich folgende üeberlegungen angestellt.

zielgruppe der anwender: breitband internetuser (dsl,kabeluser usw.) die ohne externen router connecten (fritzdsl, usb dslmodem, dfü-nutzer, pc als router)

profil der anwendung: internetmonitor mit auto. reconnection, ip und dns anzeige, internetspeed anzeige, dyndns support, cooler skin


der updateprocess

anforderungen:

1. fortschrittsanzeige (nicht unbedingt benoetigt , aber waere schoen wenn)
2. verschluesselte uebertragung der binary (nur ganz einfacher algoritmus -> kein klartext uebertragung)
3. passwortschutz für update des client (update ist nur von registrierten lizenzen erlaubt, regdaten sind in win regisrtry oder hardcodiert im client)
4. üebertragung des binary wenn moeglich über port 80 HTTP (wie passwortgesicherter webdownload, weil's spaeter eventuell ueber proxy laufen soll , muss);
5. updateroutine und programm sollen in einer exe-datei sein. (hoffe dat geht ohne groeßeren aufwand)
6. der client soll eine bestaetigungid senden, das das programmupdate korrekt durchgeführt wurde mit versionsid
7. Changelog soll dem nutzer des clients auf wunsch angezeigt werden (ueber memo oder so)

um schritt 2, 6 und 7 kümmere ich mich selbst

aber zu schritt 3, 4 und 5 haette ich fragen.

zu punkt 5 haett ich folgende ueberlegung. bestandteil der Anwendung soll eine update.exe datei sein, die im client
eingebunden ist.

stelle mir den updateprocess etwa so vor:

1. client fragt uber einen timer regelmaessig bei irgendeiner inet resource nach, ob neue version verfügbar ist und stoesst den updateprocess an
2. client startet die eingebundene update.exe per shellexecute
3. !hier knackpunkt meiner überlegung! gestartete update.exe beendet clientanwendung, ersetzt client binary und startet client anwendung neu.
4. update.exe vergleicht programm version mit internet resource, und sendet positive oder negative update bestaetigungs id, update.exe beendet sich selbst.

-> mein problem ist, das ich nicht weis, ob es moeglich ist , das eine aus einer anderen anwendung heraus gestartete anwendung (in dem fall update.exe , die in erstere anwendung (client.exe) eingebunden ist, das ueberhaupt tun kann.

bzw. auch ob

-> update.exe die neue client.exe überhaupt starten kann, weil update.exe ja als instanz aktiv ist, aber auch bestandteil der neu zu startenden clientanwendung ist

zu punkt 3 und 5

da diese beiden punkte zusammenspielen,habe ich dazu noch keine konkreten vorstellungen.
denkbar waeren folgende konstellationen_

client/server dateitausch auf byte-ebene (will ich eigentlich nich machen, hab kein bock auch noch ne paketverwaltung zu schreiben)
ftp verbindung
webdav verbindung
einfacher webdownload, jedoch dann ohne passwortabfrage beim downloaden (passwortcheck wuerde dann erst bei updateprozess erfolgen (mmmhhh. ob dat sicher ist im
bezug auf reverse energeering?)

wie habt ihr so etwas realiesiert? oder wie würdet ihr sowas machen?

wuerde mich sehr ueber anregungen, ideen, kommentare und vorschlaege dazu freuen.

bis denne

euer Richard
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat