AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Internet Programmupdate durchführen - Wie wirds gemacht ?
Thema durchsuchen
Ansicht
Themen-Optionen

Internet Programmupdate durchführen - Wie wirds gemacht ?

Ein Thema von richard_boderich · begonnen am 6. Jan 2005 · letzter Beitrag vom 7. Jan 2005
Antwort Antwort
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
Benutzerbild von richard_boderich
richard_boderich

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

Re: Internet Programmupdate durchführen - Wie wirds gemacht

  Alt 7. Jan 2005, 11:02
na nu interessierts keinen ?

*PUSH*
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
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#3

Re: Internet Programmupdate durchführen - Wie wirds gemacht

  Alt 7. Jan 2005, 11:04
Pushen ist erst nach 24h erlaubt

Ich denke, die Antwort lässt auf sich warten, da das sicher kein leichtes Thema ist.

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

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

Re: Internet Programmupdate durchführen - Wie wirds gemacht

  Alt 7. Jan 2005, 11:09
@air i know but, is nur noch 3,5 h hin, hoffe ihr seid nachsichtig mit mir
mir jukt es halt in fingern
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
Benutzerbild von CenBells
CenBells

Registriert seit: 30. Mär 2003
Ort: Kiel urspr. Lübeck
176 Beiträge
 
Delphi 7 Professional
 
#5

Re: Internet Programmupdate durchführen - Wie wirds gemacht

  Alt 7. Jan 2005, 11:16
hi,

ich habe fast genau den kram in meinem aktuellsten Projekt umgesetzt.
Muss jetzt noch zur uni und bin ab ca 14 uhr wieder da und poste dann ausführtlich

Meine Lösung basiert auf MakeUpd.exe und update.exe von hier

aber eines schon mal vorweg zu 5.1. Verwende keinen Timer. Der User soll selber entscheiden, wann das update gemacht wird...

Gruß
Ken
Ein Objekt ist eine zur Ausführungszeit vorhandene für seine Instanzvariablen Speicherplatz allokierende Instanz, die sich gemäß dem Protokoll ihrer Klasse verhält.
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

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

Re: Internet Programmupdate durchführen - Wie wirds gemacht

  Alt 7. Jan 2005, 11:21
@ Cenbells

hi du,

erstmal danke für deine antwort. der nutzer soll selber entscheiden
ich wollte nur so etwas wie bei vielen virenscannern drinn ist,
also nen festgelegtes update interwall bieten.

z.b.

schau alle 3 stunden ob neue aktualisierungen verfügbar sind
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
Benutzerbild von CenBells
CenBells

Registriert seit: 30. Mär 2003
Ort: Kiel urspr. Lübeck
176 Beiträge
 
Delphi 7 Professional
 
#7

Re: Internet Programmupdate durchführen - Wie wirds gemacht

  Alt 7. Jan 2005, 18:13
So, da bin ich endlich. Hat etwas länger gedauert, als gedacht...
Zitat von richard_boderich:
der updateprocess
anforderungen:
1. fortschrittsanzeige (nicht unbedingt benoetigt , aber waere schoen wenn)
Also, da das ganze über das internet geschieht, und ein haufen User unsicher sind, ob das Programm noch läuft, wenn man eine "normale" Progressbar nutzt (keine Bewegung, wenn nichts passiert...) habe ich diese hier genommen.
Mittlerweile habe ich die "Progressbar" in meinem gesamten Programm verwendet und nur positives Feedback erhalten.
Zitat von richard_boderich:
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);
Also, ich habe im Netz nen Server, auf dem Firebird läuft. Das Programm connected zu dem Server, macht nen Schlüsselabgleich und erfragt dann die neueste Version. Wenn ne Version vorhanden ist, wird das file runtergeladen. Wobei ich mir noch nicht sicher bin, ob ich das file direkt in nem blob speichern sollte, damit es nicht über nen browser "gefunden" werden kann. Derzeit habe ich die Dateien in einem Verzeichniss aufm server und speicher nur die lokale adresse (die auf dem Server) in der DB und lade die datei ganz normal über http-get herunter.
Zitat von richard_boderich:
5. updateroutine und programm sollen in einer exe-datei sein. (hoffe dat geht ohne groeßeren aufwand)
6...
7. Changelog soll dem nutzer des clients auf wunsch angezeigt werden (ueber memo oder so)

...
Ob 5. nötig ist, weiß ich nicht. Ich habe die update.exe mitgeliefert und starte nach erfolgreichem Download der Dateien die update.exe mit den entsprechenden Parametern. Das gute an der Lösung mit dem erwähnten Update.exe ist, das bei korrekten Parametern auf das Beenden der Hauptanwendung gewartet wird (-> Schön ne message anzeigen "Update wird ausgeführt, Hauptprogramm wird beendet"). Zusätzlich kann das Updateprogramm nach erfolgreichem Update die exe wieder starten.
Wie gesagt, damit du die Update.exe starten kannst, legst du sie eh am besten als file bereit. Und dann brauchst du sie nicht ins Programm integrieren.

Lad dir also am besten das Zip von der Adresse, die ich im letzten Post angegeben hab und schau dir das mal an.

Gruß
Ken
Ein Objekt ist eine zur Ausführungszeit vorhandene für seine Instanzvariablen Speicherplatz allokierende Instanz, die sich gemäß dem Protokoll ihrer Klasse verhält.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Internet Programmupdate durchführen - Wie wirds gemacht

  Alt 7. Jan 2005, 18:26
du könntest das ganze einfach auf einen webserver schmeißen und den download per .htaccess schützen.
die Client-Exe von der Update.Exe aus zu beenden dürfte auch kein Problem sein. Ich hab das ganze mal so gelöst das ich von der update.exe (heißt bei mir türlich anders) eine message an das hauptprogramm sende (dabei schick ich gleich mein handle mit). Die Hauptanwendung (client.exe) empfängt die windowmessage, speichert die daten, löst ein destroy aus und schickt dann eine Message zurück an die Update.exe. Somit weiß die update.exe das die hauptanwendung in ca. einer sekunden geschlossen ist (da speichervorgänge vor senden der message ausgeführt wurden). Und dann kann die update.exe die client.exe bequem mit derm download ersetzen. Nach Abschluss des Downloads einfach nur noch mit ShellExecute die Hauptanwendung wieder starten und danach die update.exe sich selbst schließen lassen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

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

Re: Internet Programmupdate durchführen - Wie wirds gemacht

  Alt 7. Jan 2005, 19:10
@cenbells

thx erstmal für deine antwort. werde mir das mal ansehen.
über einen Browser soll dat ganze aber nich downloadbar sein.
du weist ja was google & co alles indexieren!

@SirThornberry

hoert sich gut an, aber hast du bedacht, das die update.exe in die client.exe
als resource eingebunden sein soll? funktioniert deine methode dann trotzdem?

//edit//

habe mir jetz erstma webspace besorgt
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
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 02:32 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