Hallo Zusammen,
anbei die aktualisierte Version 20090819 des WUS. Folgendes hat sich geändert:
[+] Der Updater kann nun wieder unter D2006/TD kompiliert werden
[+] Die Versionsermittlung über das Erstellungsdatum wird nicht mehr automatisch unterstützt
[+] Statusanzeige für den Logger eingeführt
Das kompilieren, heißt kompilieren. Es wurde nicht darauf getestet, daß die Widestrings und Ansistrings auch zwischen den Umgebungen funktionieren. Vielleicht könnte dies jemand machen und für etwas D2006/TD kompatibilität sorgen. Der Composer (als .EXE) ist übrigens unter D2009 kompiliert und damit voll Unicodefähig.
Könnte jemand den untenstehenden Code bitte prüfen und verbessern? Er soll aus dem Applikationsdirektory und dem Pfad der neuen Datei den Zielordner ermitteln und zur Verfügung stellen. Beispiel:
AppDir = 'c:\programme\mycompany\mysoftware'
NewFile = 'bin\myNew.Exe'
soll zu
'c:\programme\mycompany\mysoftware\bin\myNew.Exe'
werden. Die Ermittlung des Updatepfads ist ja eine grundlegende Funktion, bitte mal zu prüfen und, falls Fehler, zu berichten und zu verbessern (und hier in diesen Thread posten) danke.
Delphi-Quellcode:
function CombineDirectory(aDirectory, aRelativePath: String): String;
var
LD: integer;
begin
result := '';
while copy(aRelativePath, 1, 3) = '..\' do
begin
aDirectory := ExcludeTrailingPathDelimiter(aDirectory);
ld := LastDelimiter('\', aDirectory);
Delete(aDirectory, ld+1, length(aDirectory) - ld);
aRelativePath := copy(aRelativePath, 4, length(aRelativePath) - 3);
end;
aDirectory := ExcludeTrailingPathDelimiter(aDirectory);
if copy(aRelativePath, 1, 2) = '.\' then
result := aDirectory + '\' + copy(aRelativePath, 3, length(aRelativePath) - 2)
else
if not (aRelativePath[1] in ['\', '.']) then
result := IncludeTrailingPathDelimiter(aDirectory) + aRelativePath
else
if aRelativePath[1] = '\' then
result := aDirectory + aRelativePath;
end;
Der Updatelink, wurde im 1. Post angepaßt.