Auf neuere Programmversion prüfen

Auf neuere Programmversion prüfen

Ich möchte meinem Programm die Möglichkeit hinzufügen dass der User auf eine neuere Programmversion prüfen kann.

Kennt sich jemand mit den INDY-Componenten (die ich sonst ohne Probleme verwende) aus und kann mir sagen, wie ich das Datei-Datum einer auf meinem Server vorhandenen Datei herausfinde?

Mit
Idftp1.list(listbox1.items, ‚programm.exe‘, true);
erhalte ich Angaben über die vorhandene Datei. Ok.
Bloss - wie genacu mache ich das, dass ich da genau das Datum rauskriege?

Hruß

J. Schloer

Auf neuere Programmversion prüfen

Ich möchte meinem Programm die Möglichkeit hinzufügen dass der
User auf eine neuere Programmversion prüfen kann.

Kennt sich jemand mit den INDY-Componenten (die ich sonst ohne
Probleme verwende) aus und kann mir sagen, wie ich das
Datei-Datum einer auf meinem Server vorhandenen Datei
herausfinde?

Hallo,

bist du sicher, dass das der richtige Weg ist? Eine echte Versionsnummer ist weitaus zuverlässiger, das Datum kann jederzeit geändert werden, z.B. beim Download (die Datei hat das Datum des Downloads!). Was zeigt denn z.B. deine About-Box an?

Gruss Reinhard

Eine echte Versionsnummer ist weitaus zuverlässiger …

Wie mach ich das dann am besten? Über den Dateinamen vielleicht, aus dem die Versionsnummer ersichtlich ist?

Gruß

J. Schlör

Eine echte Versionsnummer ist weitaus zuverlässiger …

Wie mach ich das dann am besten? Über den Dateinamen
vielleicht, aus dem die Versionsnummer ersichtlich ist?

Hallo J.Schloer,

Delphi, nehme ich an?
Projektoptionen / Versionsnummer. Hier kannst du alles eintragen.
Auslesen der Versionsnummer aus deinem Programm?
Z.B. so:

function GetBuildInfo(var AFilename: String; var V1, V2, V3, V4 : Word) : Boolean;
var
 VerInfoSize: DWord;
 VerValueSize: DWord;
 Dummy: DWord;
 VerInfo: Pointer;
 VerValue: PVSFixedFileInfo;
begin
 VerInfoSize:=GetFileVersionInfoSize(PChar(AFilename),Dummy);
 Result:=False;
 if VerInfoSize0 then
 begin
 GetMem(VerInfo,VerInfoSize);
 try
 if GetFileVersionInfo(PChar(AFilename),0,VerInfoSize,VerInfo) then
 begin
 if VerQueryValue(VerInfo,'\',Pointer(VerValue),VerValueSize) then
 begin
 with VerValue^ do
 begin
 V1:=dwFileVersionMS shr 16;
 V2:=dwFileVersionMS and $FFFF;
 V3:=dwFileVersionLS shr 16;
 V4:=dwFileVersionLS and $FFFF;
 end;
 Result:=True;
 end;
 end;
 finally
 FreeMem(VerInfo,VerInfoSize);
 end;
 end;
end;

In V1, V2, V3, V4 findest du anschließend die 4 Teile der Versionsnummer.
Um die aktuelle Version zu ermitteln, leg doch einfach in Dokument auf deinen Server. Das kannst du auslesen und mit der Version des Programms vergleichen.

Manfred

Delphi, nehme ich an?

Klar.

Projektoptionen / Versionsnummer. Hier kannst du alles
eintragen.

Ok.

Auslesen der Versionsnummer aus deinem Programm?
Z.B. so:

function GetBuildInfo(var AFilename: String; var V1, V2, V3,
V4 : Word) : Boolean;

Gut, danke für die ausführliche Beratung! Klappt einwandfrei.

In V1, V2, V3, V4 findest du anschließend die 4 Teile der
Versionsnummer.

Also: Mit der obigen Funktion lese ich die Versionsnummer des Programms auf meinem Computer aus; so weit so gut.

Um die aktuelle Version zu ermitteln, leg doch einfach in
Dokument auf deinen Server. Das kannst du auslesen und mit der
Version des Programms vergleichen.

Was meinst du damit? Was für ein Dokument meinst du?

Danke jedenfalls für die schnelle, ausführliche und geduldige Hilfe, Manfred!

Gruß

Joachim

Hallo,

Um die aktuelle Version zu ermitteln, leg doch einfach in
Dokument auf deinen Server. Das kannst du auslesen und mit der
Version des Programms vergleichen.

Was meinst du damit? Was für ein Dokument meinst du?

na, einfach eine kleine Textdatei, die aus ein paar Zeilen besteht, welche den Namen (zur Identifikation) und die aktuelle Versionsnummer deiner Software enthalten; z. B. so:

[Programmname]

1
3
00028
A

Gruß
Martin

Hallo Joachim,

Um die aktuelle Version zu ermitteln, leg doch einfach in
Dokument auf deinen Server. Das kannst du auslesen und mit der
Version des Programms vergleichen.

Was meinst du damit? Was für ein Dokument meinst du?

In das Dokument schreibst du die Versionsnummer der aktuellen Version.
Das liest du mit deinem Programm aus (entweder direkt vom Server oder herunterladen und auslesen). Dann vergleichen:
aktuelle Version = Programmversion -> kein Update notwendig
aktuelle Version Programmversion -> Update notwendig.

Manfred

Herzlichen Dank, Martin und Manfred! Jetzt kann ich mir vorstellen, wie ich das mache.

Mit freundlichem Gruß

Joachim Schlör

Eine andere Möglichkleit wäre noch einfach Registry-Einträge zu machen. Diese kann werden dann auch „weniger“ leicht von Usern geändert.

Und tja nur noch nen Vorschlag.

Gruß
B.