Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Update-Mechanismus in Delphi-Anwendung einbauen (https://www.delphipraxis.net/134703-update-mechanismus-delphi-anwendung-einbauen.html)

Cogito 27. Mai 2009 12:15


Update-Mechanismus in Delphi-Anwendung einbauen
 
Hallo zusammen,

weiß jemand zufällig, wie (oder mit welchen Zusatzkomponenten) man in eine Delphi-Anwendung einen Update-Mechanismus a la Windows Vista einbauen kann? Es muss jetzt nicht unbedingt genauso funktionieren wie Vista, aber eine Anwendung sollte sich beim Start (oder wie auch immer) neuere Updates (einschl. der laufenden EXE) selbst holen können.

HeinzJ 27. Mai 2009 12:24

Re: Update-Mechanismus in Delphi-Anwendung einbauen
 
1. Update Seite Aufrufen
2. Informationen über aktuelle Version laden (z.B. per TXT Datei)
3. Versionsvergleich
4. Neue Vesrion runterladen, wenn neuer.
5. Installation

guinnes 27. Mai 2009 12:40

Re: Update-Mechanismus in Delphi-Anwendung einbauen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Meine Updatefähigen Programme werden nie direkt gestartet, sondern von einer anderen Anwendung mit folgendem Ablauf :
1. Zeitstempel der letzten Aktualisierung aus einer Datenbank lesen
2. Vergleich mit einem Ini-Eintrag auf der lokalen Platte
3. Wenn in der Datenbank aktueller : Übertragen der Exe aus der Datenbank und setzen des Zeitstempels in der lokalen Ini-Datei
4. Starten der eigentlichen Anwendung

hoika 27. Mai 2009 13:18

Re: Update-Mechanismus in Delphi-Anwendung einbauen
 
Hallo,

was aber Probleme bereitet, ist,
dass ab Vista nicht per ins Programm-Verzeichnis geschrieben werden darf
(als Nicht-Admin).

Dann geht es nur per MSP (Patch einer MSI) oder per Dienst.
Ich schlage mich auch schon ewig mit rum,
komme aber wegen anderen Arbeiten nicht dazu,
einen Dienst zu programmieren.


Heiko

Prototypjack 27. Mai 2009 13:29

Re: Update-Mechanismus in Delphi-Anwendung einbauen
 
Zitat:

Zitat von hoika
Hallo,

was aber Probleme bereitet, ist,
dass ab Vista nicht per ins Programm-Verzeichnis geschrieben werden darf
(als Nicht-Admin).

Dann geht es nur per MSP (Patch einer MSI) oder per Dienst.
Ich schlage mich auch schon ewig mit rum,
komme aber wegen anderen Arbeiten nicht dazu,
einen Dienst zu programmieren.


Heiko

Sowohl MSI als auch der Dienst brauchen ebenso Admin-Privilegien (sonst würde die UAC ja ad absurdum geführt). Was spricht gegen eine Elevation, sobald ein Update erkannt wurde (machen die Installation-Programme ja auch so: Sobald etwas am System verändert werden muss, werden Rechte eingefordert).

Grüße,
Max

Edit: Übrigens: Das Verbot des Zugriffs auf empfindliche Bereiche gilt nicht erst ab Vista, sondern bereits seit den frühen NT-Versionen (soweit ich mich erinnere; mindestens aber seit Windows 2000 und alles andere ist sowieso großteils irrelevant). Fakt ist, dass Vista das erste Windows-Betriebssystem ist, dass diese Karte so ausspielt, wie sie gespielt gehört. Es ist zu verlockend in System unter Vista komplett als Admin zu arbeiten, was generell eine schlechte Idee ist und vor allem auch nicht vorausgesetzt werden kann, auch nicht in Versionen vor Vista!.

hoika 27. Mai 2009 15:43

Re: Update-Mechanismus in Delphi-Anwendung einbauen
 
Hallo,

mag ja alles sein.
Nur was mache ich bei folgendem Scenario.

Kunde hat 20 Rechner.
Mein Programm erfährt ein Update.
Admin rennt jetzt zu den 20 Rechnern hin
und installiert das Update.

Er freut sich schon,
weil viell. sogar Rechner hochgefahren werden (Mitarbeiter im Urlaub).

Elevation klappt zwar, aber als normaler User muss auch das Admin-Kennwort
eingegeben werden (logisch).


Heiko

PS:
Wer hat Lust, einen Updater-Dienst mit zu programmieren ... ?

RWarnecke 27. Mai 2009 16:28

Re: Update-Mechanismus in Delphi-Anwendung einbauen
 
Zitat:

Zitat von hoika
PS:
Wer hat Lust, einen Updater-Dienst mit zu programmieren ... ?

Die Komponente TMSWebUpdate macht ein Update von Deinem Delphi Programm. Es werden die Dateien heruntergeladen und in das entsprechende Verzeichnis kopiert. Da brauchst Du kein Admin oder sonstiges. Wenn Du doch einen Admin brauchst findest Du unter dem Suchbegriff Hier im Forum suchenImpersonate noch Hinweise, wie sich Dein Rechner als Admin anmelden kann, wenn ein Benutzer oder Hauptbenutzer angemeldet ist.

HeinzJ 28. Mai 2009 08:19

Re: Update-Mechanismus in Delphi-Anwendung einbauen
 
Ich wür mich auch mal mit dem Administrator kurzschließen und mit diesem die Fragen der Sicherheit/Softwareverteilung ansprechen.

Bernhard Geyer 28. Mai 2009 08:22

Re: Update-Mechanismus in Delphi-Anwendung einbauen
 
Wie wäre es mit einer Netzwerkinstallation? Viele Delphi-Apps benötigen eigentlich keine Installation so das auch einfach der start über das Netzwerk eine alternative darstellt. Machen das z.B. bei uns (ok, primär nur mit unseren eigenen Apps) und haben damit wenig Problem. Einzig manche Poweruser im anderen Büro kopieren sich die Daten lokal da die Netzwerkverbindung zwischen Server und Büro nur über WLAN realisiert werden kann.

generic 28. Mai 2009 08:38

Re: Update-Mechanismus in Delphi-Anwendung einbauen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von hoika
was aber Probleme bereitet, ist,
dass ab Vista nicht per ins Programm-Verzeichnis geschrieben werden darf
(als Nicht-Admin).

Das darf ein Benutzer (nicht Hauptbenutzer - der darf) schon seit Windows 2000 nicht mehr.

Zitat:

Zitat von hoika

Kunde hat 20 Rechner.
Mein Programm erfährt ein Update.
Admin rennt jetzt zu den 20 Rechnern hin
und installiert das Update.

Wenn dein Kunde eine Windows Domäne mit ActiveDirectory hat,
sollte er seinen Admin zu Schulungen schicken.

Das AD kann Windows Installerpakete (MSI-Dateien) automatisch installieren lassen.
* Bei Deployment Installationen wird die Software beim Booten des PCs installiert.

* Bei OnDemand Installationen können das sogar durch User erfolgen, welche keine Admintrechte haben.
Die Software wird dann in der Systemsteuerung angezeigt (s.h. Screenshot).

Ist zwar nicht die beste Beschreibung, aber es ist die, welche ich am schnellsten finden konnte:
http://www.castelle.com/support/docu...s/0012_MSI.pdf

hoika 28. Mai 2009 13:32

Re: Update-Mechanismus in Delphi-Anwendung einbauen
 
Hallo,

ja schon klar,
dazu müsste ich aber ne MSI haben ..
(Habe hier Installshield-Express, der kann nur Exe).


Heiko

BUG 28. Mai 2009 13:59

Re: Update-Mechanismus in Delphi-Anwendung einbauen
 
Bist du darauf festgelegt?

Ansonsten ist hier evtl. was für dich dabei ...

MfG,
Bug

Fridolin Walther 28. Mai 2009 14:01

Re: Update-Mechanismus in Delphi-Anwendung einbauen
 
Prinzipiell benötigst Du ja nur einen Mechanismus der die Dateien installiert. Ein entsprechender Service ist ja in Minuten erstellt. Das größte Problem wird allerdings die Tatsache sein, daß Du damit eine Sicherheitslücke ins System reißt. Immerhin könnte jeder mit Zugriff auf den Service ja beliebige Dateien im System ersetzen bzw. installieren. Da würd ich als Administrator doppelt Überlegen ob ich Deine Anwendung einsetzen mag.

mschaefer 28. Mai 2009 14:27

Re: Update-Mechanismus in Delphi-Anwendung einbauen
 
Also da gibt es so einen BetaWeg von der exe zum msi über

Windows Installer Wrapper Wizard (WIWW)
Anleitung
und die Softwareverteilung


Grüße in die Runde / Martin



PS: Wie 0xF30FC7 andeutet ist ein vollautomatisches System vielelicht nicht gewollt. Aber der Admin muß wissen, wenn es ein neues Update gibt.
Da er das Programm wahrscheinlich nicht benutzt ist da vielleicht doch eine Mailingliste wo man sich eintragen kann ein Weg. Eventuell könnte
Dein Programm auch nur anzeigen, dass es eine neuere Version gibt und der Admin bekommt dann schon einen Hinweis von den Anwendern...

hoika 28. Mai 2009 14:32

Re: Update-Mechanismus in Delphi-Anwendung einbauen
 
Hallo,

danke an alle.

< 0xF30FC7 >
Der Dienst darf natürlich nur in das eigene Verzeichnis installieren (per Programmierung),
d.h die Dienst-Exe liegt im gleichen Verzeichnis wie die eigentliche Exe).


Heiko

generic 29. Mai 2009 14:57

Re: Update-Mechanismus in Delphi-Anwendung einbauen
 
Schau dir bitte WIX an:
http://wix.sourceforge.net/

Passend dazu gibt es im Entwickler Magazin eine Artikelreihe dazu.
Code:
* Entwickler Magazin (Ausgabe: 03.09) Artikel: MSI-Pakete mit Open-Souce-Software erzeugen Teil 4
* Entwickler Magazin (Ausgabe: 02.09/12.02.2009) Artikel: MSI-Pakete mit Open-Souce-Software erzeugen Teil 3
* Entwickler Magazin (Ausgabe: 01.09/10.12.2008) Artikel: MSI-Pakete mit Open-Souce-Software erzeugen Teil 2
* Entwickler Magazin (Ausgabe: 06.08) Artikel: MSI-Pakete mit Open-Souce-Software erzeugen Teil 1

generic 29. Mai 2009 15:06

Re: Update-Mechanismus in Delphi-Anwendung einbauen
 
Zitat:

Zitat von mschaefer
PS: Wie 0xF30FC7 andeutet ist ein vollautomatisches System vielelicht nicht gewollt. Aber der Admin muß wissen, wenn es ein neues Update gibt.

Setzt natürlich auch immer Voraus, das die Clients Internetzugriff haben und dieser nicht gefiltert wird durch eine Firewall/Proxys usw.

Bei vielen meiner Kunden ist der Internetzugriff beschränkt.
Das hat viele Vorteile:
- Mitarbeiter verschwenden keine Arbeitszeit mit privaten Emails, Browsergames oder SocialNetworks
- ein Vireneinfallstor ist geschlossen
- Mitarbeiten können keine Daten über das entwenden.
- Mitarbeiter können keine Spiele/Bildschirmschoner usw. downloaden
- Trojaner/Bots usw. können schlecht an außen telefonieren.

Der.Kaktus 29. Mai 2009 15:38

Re: Update-Mechanismus in Delphi-Anwendung einbauen
 
Zitat:

Zitat von generic
Zitat:

Zitat von mschaefer
PS: Wie 0xF30FC7 andeutet ist ein vollautomatisches System vielelicht nicht gewollt. Aber der Admin muß wissen, wenn es ein neues Update gibt.

Setzt natürlich auch immer Voraus, das die Clients Internetzugriff haben und dieser nicht gefiltert wird durch eine Firewall/Proxys usw.

Bei vielen meiner Kunden ist der Internetzugriff beschränkt.
Das hat viele Vorteile:
- Mitarbeiter verschwenden keine Arbeitszeit mit privaten Emails, Browsergames oder SocialNetworks
- ein Vireneinfallstor ist geschlossen
- Mitarbeiten können keine Daten über das entwenden.
- Mitarbeiter können keine Spiele/Bildschirmschoner usw. downloaden
- Trojaner/Bots usw. können schlecht an außen telefonieren.

Eine zentrale Softwareverteilung(incl. Wake-On-Lan) sollte eine Firma(lohnt sich ab 50 PC's) schon haben wenn sich Programme haeufiger aendern..Es gibt ja genuegend Anbieter..wir selbst haben soetwas auch und ich war damit 5 Jahre beschaeftigt..alles kein Problem und ohne Internetzugriff möglich..eine Silentinstallation (ob MSI oder Installscript) macht etwas Arbeit "aber" wenn erstmal ein Grundgeruest vorhanden ist, geht es leicht von der Hand.

/Edit
in Delphi wuerde ich es nicht machen, da in Delphi eh meistens nur die "Exe" ausgewechselt wird und dadurch nicht extra ein komplizierter Updatemechanismus programmiert werden muß.
Edit/

generic 29. Mai 2009 19:28

Re: Update-Mechanismus in Delphi-Anwendung einbauen
 
Zitat:

Zitat von Der.Kaktus
Eine zentrale Softwareverteilung(incl. Wake-On-Lan)

Sowas muss nicht, normal zumindest bei den Arbeitnehmern meiner Kunden:
Gegen 8 Uhr erscheint der Mitarbeiter zur Arbeit schaltet den PC ein.
Danach geht dann Kaffee holen und anschließend wird mit den Kollegen in einen Büro gemeinsam gefrühstückt.
Gegen 8:30-9 Uhr beginnt er mit seiner Arbeit.

Daher bleiben ca. 30 Minuten für die Installation. Genug Zeit um sogar ein SP zu installieren.

Der.Kaktus 29. Mai 2009 19:34

Re: Update-Mechanismus in Delphi-Anwendung einbauen
 
Zitat:

Zitat von generic
Zitat:

Zitat von Der.Kaktus
Eine zentrale Softwareverteilung(incl. Wake-On-Lan)

Sowas muss nicht, normal zumindest bei den Arbeitnehmern meiner Kunden:
Gegen 8 Uhr erscheint der Mitarbeiter zur Arbeit schaltet den PC ein.
Danach geht dann Kaffee holen und anschließend wird mit den Kollegen in einen Büro gemeinsam gefrühstückt.
Gegen 8:30-9 Uhr beginnt er mit seiner Arbeit.

Daher bleiben ca. 30 Minuten für die Installation. Genug Zeit um sogar ein SP zu installieren.

Das macht doch nix..kann doch Deine Veraenderung der Software in der N8 laufen..Wake-On.Lan ist so einfach und zum Strom sparen(nach SWF(softwareverteilung)..nen PC-Out..ein Befehl. Beim Fruehstuevck, kenn das, faellte "gerade" dem Kollegen ein..er muesste ja noch was machen..da bietet sich doch WOL an oder? ;-)

mr_emre_d 29. Mai 2009 19:53

Re: Update-Mechanismus in Delphi-Anwendung einbauen
 
@Cogito
Non cogitas!

Delphipraxis quaere!

Vale


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:26 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