Einzelnen Beitrag anzeigen

Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#1

Programmupdate über Extraprogramm

  Alt 23. Feb 2005, 17:33
Ich wollte in mein Programm eine Updatefunktion einbauen. Hierzu wollte ich über mein Hauptprogramm die neuen Dateien runterladen.
Dann soll das Hauptprogramm beendet werden, ein Konsolenprogramm aufgerufen werden, das die Dateien ersetzt, und dann wieder das Hauptprgramm geöffnet werden.

Die Daten, was es kopieren und löschen soll, bekommt die Konsolenanwendung aus einer ini. So wie diese hier:
Zitat:
[QUELLE]
P1=c:\test.txt
P2=c:\test3.txt

[ZIEL]
P1=c:\test2.txt
P2=c:\test4.txt

[URSPRUNG]
P=Mein Programm
Es soll immer von Quelle nach Ziel kopiert werden. Davor soll die alte Zieldatei gelöscht werden, danach die Quelldatei.
Am Ende soll das Hauptprogramm wieder geöffnet werden. (der komplette Pfad steht unter URSPRUNG)

Das ganze geht in der Praxis auch mit diesem Code: (Das Sleep kann man sich jetzt mal wegdenken, denn das ist nur da, damit das nicht alles so schnell geht... )
Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils, idGlobal, inifiles, QDialogs, ShellAPI, forms, windows;

var
i: integer;
ini: tinifile;

begin
writeln('Update wird abgeschlossen...');
sleep(50);
writeln('INI wird geladen...');
ini := tinifile.create(ExtractFilePath(Paramstr(0))+'update.ini');
sleep(50);
writeln('INI wird geladen... abgeschlossen');
sleep(50);
writeln('Dateien werden kopiert...');
sleep(50);
i := 1;
while ini.ReadString('QUELLE','P'+inttostr(i),'0') <> '0do
begin
writeln('Loeschen der Zieldatei... (' + inttostr(i) + ')');
deletefile(pchar(ini.ReadString('Ziel','P'+inttostr(i),'0')));
sleep(50);
writeln('Kopieren der Datei...');
copyfileto(pchar(ini.ReadString('QUELLE','P'+inttostr(i),'0')), pchar(ini.ReadString('ZIEL','P'+inttostr(i),'0')));
sleep(50);
writeln('.......................abgeschlossen');
writeln('Löschen der Datei...');
deletefile(pchar(ini.ReadString('QUELLE','P'+inttostr(i),'0')));
sleep(50);
writeln('Löschung war erfolgreich');
inc(i);
sleep(50);
end;
writeln('Update erfolgreich abgeschlossen...');
sleep(500);
ShellExecute(Application.Handle, 'open' ,PChar(ini.readstring('URSPRUNG','P','0')), nil, nil, sw_ShowNormal);
end.
Das funktioniert soweit auch alles sehr gut, aber das Programm ist in dieser form leider 572KB groß. Ich wollte das eigentlich mit einem Konsolenprogramm machen, um es möglichst klein zu haben.

Was könnte man ändern bzw. wie würdet ihr es machen? Das Grundprinzip sollte aber dabei gleich bleiben.
Danke
  Mit Zitat antworten Zitat