HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Alkalmazás fájljainak frissítése


ApplicationUpdate 2. rész

Példaprogram letöltése

51077 bájt

Az előző részben odáig jutottunk, hogy létrehoztuk azt a komponenst, amely az alkalmazás megadott fájljait tömörítve egy adott helyre másolta, és elkészítette a fájlok adatait tartalmazó INI fájlt. Ebben a részben elkészítjük azt a komponenst, amely a tömörített fájlokat kicsomagolja, és az INI fájlban meghatározott helyre másolja. A felülírt fájlokról biztonsági másolatokat is készít, amelyeket egy megadott könyvtárba másol.

A mellékelt példaprogram megnyitása előtt az ApplicationUpdateClient.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponens a következőképpen működik: első lépésben megvizsgálja a fájlok adatait tartalmazó contents.ini fájlt, és kiolvassa belőle a fájl létrehozásának időpontját, amit a ContentsFileDate property-ben tárol el. Ezután történhet meg a fájlok frissítése. Ez úgy történik, hogy a tömörített fájlokat kicsomagoljuk, felülírva az aktív fájlokat. Fontos, hogy a frissítendő fájlok nem lehetnek megnyitva, mert ebben az esetben nem lehet őket felülírni.
A frissített, felülírt fájlokról biztonsági másolatot is készítünk. Ez akkor történik meg, ha a BackupFolder property-ben meg van adva az a könyvtár, ahová az eredeti fájlt másolni kell, valamint a BackupBeforeUpdate property értéke igaz.
Mivel a contents.ini fájlban a fájloknak csak a relatív elérési útvonala van eltárolva, így a RootFolder property-ben meg kell adni az alkalmazás főkönyvtárának elérési útvonalát.
SourceFolder
Osztály: TApplicationUpdateClient
property SourceFolder: string;
Ebben a property-ben kell megadni a tömörített fájlokat, és a contents.ini fájlt tartalmazó mappa elérési útvonalát.
BackupFolder
Osztály: TApplicationUpdateClient
property BackupFolder: string;
Ha a fájlokról biztonsági másolatot is szeretnénk készíteni, akkor ebben a property-ben meg kell adni annak a könyvtárnak az elérési útvonalát, ahová a fájlok másolata kerül. Biztonsági másolat csak akkor készül, ha a BackupBeforeUpdate property értéke igaz.
RootFolder
Osztály: TApplicationUpdateClient
property RootFolder: string;
Ebben a property-ben kell megadni a frissítendő fájlok gyökérkönyvtárának útvonalát. A contents.ini fájl tartalmazza az egyes fájlok könyvtárának útvonalát, relatívan az ebben a property-ben megadott útvonalhoz.
BackupBeforeUpdate
Osztály: TApplicationUpdateClient
property BackupBeforeUpdate: boolean;
Ha ennek a property-nek az értéke igaz, akkor a fájlokról biztonsági másolat készül. A biztonsági másolat készítése során egy új könyvtár lesz létrehozva a BackupFolder property-ben megadott könyvtárban. Az új könyvtár neve tartalmazza az aktuális dátumot és időpontot, így bármikor visszatérhetünk egy adott időpontban eltárolt állapotba, és az is biztosítva lesz, hogy két egymás utáni frissítés következtében nem vesznek el az éppen eredeti fájlok.
DeleteAfterUpdate
Osztály: TApplicationUpdateClient
property DeleteAfterUpdate: boolean;
Ha ennek a property-nek az értéke igaz, akkor a frissítés után a tömörített fájlok, valamint a contents.ini fájl is törölve lesz.
OnError
Osztály: TApplicationUpdateClient
property OnError: TUpdateErrorEvent;
Ha a frissítés közben valami hiba történik, akkor létrejön az OnError esemény. Hogy milyen hiba történt, azt a TUpdateErrorCode típusú paraméterből tudhatjuk meg. Ennek értékei a következők lehetnek:
  • ueSourceFolder: a forrás könyvtár nem létezik;
  • ueContentsFile: a contents.ini fájl nem létezik;
  • ueUnpack: hiba a kicsomagolás során.
BeforeUpdate
Osztály: TApplicationUpdateClient
property BeforeUpdate: TUpdateFileEvent;
Ez az esemény egy fájl frissítése előtt jön létre. A FileData paraméterben megkapjuk az új fájl adatait. A FileData paraméter TFileData típusú, amelynek deklarációja a következőképpen néz ki:
  TFileData = record
    FileName: string;
    FileDate: TDateTime;
    FileSize: integer;
    FileVersion: string;
    FilePath: string;
  end;
AfterUpdate
Osztály: TApplicationUpdateClient
property AfterUpdate: TUpdateFileEvent;
Ez az esemény egy fájl frissítése után jön létre. Hasonlóan a BeforeUpdate eseményhez, az új fájl adatait itt is megkapjuk a FileData paraméterben.
ContentsFileDate
Osztály: TApplicationUpdateClient
property ContentsFileDate: TDateTime;
Ez a property tartalmazza a contents.ini fájlban tárolt dátumot és időpontot. A property csak a Download függvény meghívása után kap értéket.
UnpackFile
Osztály: TApplicationUpdateClient
procedure UnpackFile(
PackedFileName,
DestinationFileName: string;
OriginalSize: integer
);
Ez az eljárás kicsomagolja a megadott nevű tömörített fájlt.
Paraméterek
PackedFileName
A tömörített fájl neve az elérési útvonallal együtt.
DestinationFileName: string
A cél fájl neve az elérési útvonallal együtt.
OriginalSize: integer
A fájl eredeti (kicsomagolás utáni) mérete bájtban.
BackupFile
Osztály: TApplicationUpdateClient
procedure BackupFile(
FileName: string
);
Ez az eljárás a paraméterként megadott fájlt a backup könyvtárba másolja (BackupFolder). Az eljárás a backup könyvtárban létrehoz egy könyvtárat, amelynek a neve az aktuális dátumból és időpontból áll össze. Ez az új könyvtár a fájlok gyökérkönyvtárának felel meg, ezért a paraméterként megadott fájl nevéből törli a RootFolder property-ben megadott elérési útvonalat, és a maradékhoz hozzáilleszti az új könyvtár útvonalát. Így minden fájl a neki megfelelő alkönyvtárba kerül a backup könyvtáron belül.
Paraméterek
FileName: string
Ebben a paraméterben kell megadni a fájl nevét.
GetFileDate
Osztály: TApplicationUpdateClient
function GetFileDate(
DateStr: string
): TDateTime;
A függvény a paraméterként megadott sztring formátumú dátum/idő értékből előállít egy TDateTime típusú dátum/idő értéket. A contents.ini fájlban a fájlok dátuma „éééé.hh.nn óó:pp:mm” formátumban van tárolva. A függvény az ebben a formátumban megadott értéket képes átalakítani TDateTime típusú értékké.
Paraméterek
DateStr: string
Az átalakítandó dátum/idő sztring.
Visszatérési érték
A függvény visszatérési értéke a paraméterből átalakított TDateTime típusú érték, vagy az aktuális rendszer időpont, ha a paraméter formátuma nem volt megfelelő.
GetContentsFileDate
Osztály: TApplicationUpdateClient
function GetContentsFileDate(
FileName: string
): TDateTime;
Ez a függvény kiolvassa a contents.ini fájlból a fájl létrehozásának dátumát. A függvény a dátumot beírja a ContentsFileDate property-be, de visszatérési értékként is visszaadja.
Paraméterek
FileName: string
Ebben a paraméterben a contents.ini fájl nevét kell megadni elérési útvonallal együtt.
Visszatérési érték
A visszatérési érték a kiolvasott dátum/idő érték TDateTime formátumban.
Download
Osztály: TApplicationUpdateClient
function Download: boolean; virtual;
Ez a függvény ellenőrzi a contents.ini fájl meglétét a forrás könyvtárban (SourceFolder), és ha megtalálta, akkor a fájl nevét az elérési útvonallal együtt beírja az FContentsFile globális változóba. Ezután meghívja a GetContentsFileDate függvényt.
Visszatérési érték
A függvény visszatérési értéke igaz, ha a fájlt megtalálta, és hamis, ha nem.
UpdateFiles
Osztály: TApplicationUpdateClient
function UpdateFiles: boolean;
Az UpdateFiles függvény megnyitja az FContentsFile változóban tárolt contents.ini fájlt, és beolvassa belőle a tömörített fájlok neveit. Ezután egy ciklusban végigmegy a fájl listán, és kicsomagolja a tömörített fájlokat.
Mielőtt ezt a függvényt meghívnánk, a Download függvényt meg kell hívni.
Visszatérési érték
A függvény visszatérési értéke igaz, ha a művelet sikerült, és az összes tömörített fájlt sikerült kicsomagolni és frissíteni. Ha a kicsomagolás közben hiba történt, akkor a visszatérési érték hamis.
Execute
Osztály: TApplicationUpdateClient
function Execute: boolean; dynamic;
Az Execute függvény először meghívja a Download függvényt, és ha ennek visszatérési értéke igaz, akkor meghívja az UpdateFiles függvényt is.
Visszatérési érték
A visszatérési értéke akkor igaz, ha mindkét függvény visszatérési értéke igaz, és akkor hamis, ha valamelyik függvény visszatérési értéke hamis.
A unit-ban van egy AddBackSlash nevű függvény is, ami nem tartozik közvetlenül a TApplicationUpdateClient osztályhoz. A függvény a paraméterként megadott elérési útvonalakat kiegészíti egy lezáró \ karakterrel, ha ezt az útvonal még nem tartalmazta.

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2002 évkönyv 224. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |