Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A telepítési programok általában a következő célokat tűzik ki célul:
- Fájlok elhelyezése a megfelelő helyen.
- A felhasználó értesítése arról, hogy a telepítőprogram lecserél egy meglévő fájlt egy jelentősen eltérő verzióra – például egy német nyelvű fájl lecserélése egy angol nyelvű fájlra, vagy egy újabb fájl lecserélése egy régebbi fájlra.
A telepítőprogram írásakor az egyes fájlokhoz a következő adatoknak kell rendelkezniük:
- A fájl neve és helye (más néven a forrásfájl).
- A felhasználó merevlemezén található egyenértékű fájl neve (más néven célfájl). Ez a név általában megegyezik a telepítőlemez fájlnevével.
- A fájl megosztási állapota, vagyis az, hogy a fájl privát-e a telepített alkalmazáshoz, vagy több alkalmazás is megosztható.
A telepítőprogram a VerFindFile függvénnyel állapíthatja meg, hogy a fájlt hová kell másolni a lemezen. Ez a függvény azt is megadhatja, hogy a fájl privát-e az alkalmazás számára, vagy megosztható. Ha probléma merül fel a fájl megkeresése során, VerFindFile hibaértéket ad vissza. Ha például a rendszer a célfájlt használja, VerFindFileVFF_FILEINUSEad vissza. A telepítőprogramnak értesítenie kell a felhasználót a problémáról, és válaszolnia kell a felhasználónak a telepítés folytatására vagy befejezésére vonatkozó döntésére.
A VerInstallFile függvény a forrásfájlt a VerFindFileáltal megadott könyvtárban lévő ideiglenes fájlba másolja. Ha szükséges, VerInstallFile kibontja a fájlt az adatbontási kódtárban található függvényekkel.
VerInstallFile összehasonlítja az ideiglenes fájl verzióadatait a célfájl verzióadataival. Ha a kettő eltér, VerInstallFile egy vagy több hibaértéket ad vissza. Például VIF_SRCOLD ad vissza, ha az ideiglenes fájl régebbi a célfájlnál, és VIF_DIFFLANG, ha a fájlok különböző nyelvi azonosítókkal vagy kódlapértékekkel rendelkeznek. A telepítőprogramnak értesítenie kell a felhasználót a problémáról, és válaszolnia kell a felhasználónak a telepítés folytatására vagy befejezésére vonatkozó döntésére.
Néhány VerInstallFile hiba helyreállítható. Vagyis a telepítőprogram újra meghívhatja a VerInstallFile, megadva a VIFF_FORCEINSTALL lehetőséget, hogy a verzióütközéstől függetlenül telepítse a fájlt. Ha VerInstallFileVIF_TEMPFILE ad vissza, és a felhasználó úgy dönt, hogy nem kényszeríti a telepítést, a telepítőprogramnak törölnie kell az ideiglenes fájlt.
VerInstallFile nem helyreállítható hibába ütközhet a telepítés kényszerítésekor, még akkor is, ha a hiba korábban nem létezett. A fájlt például zárolhatja egy másik felhasználó, mielőtt a telepítőprogram megkísérelte kényszeríteni a telepítést. Ha egy telepítőprogram nem helyreállítható hiba után próbálja kényszeríteni a telepítést, VerInstallFile meghiúsul. A telepítőprogramnak rutinokat kell tartalmaznia az ilyen típusú hibák elhárításához.
Az ajánlott megoldás egy párbeszédpanel megjelenítése a következő gombokkal: Telepítés, Kihagyás, és Mindent telepít. (Egy másik megoldás egy párbeszédpanel, amelyen a gombok Igen, Igen mindegyikre, Kihagyásés Mégsetalálhatóak.) Az Az összes telepítése gombnak meg kell akadályoznia, hogy a telepítőprogram a felhasználót hasonló hibák miatt kérdezze, ha a VIFF_FORCEINSTALL opciót a VerInstallFileminden további alkalmazásában is alkalmazza. Nem helyreállítható hibák esetén a Telepítés és a Az összes telepítése gombokat le kell tiltani.
Ha hasznos hibaüzenetet szeretne megjeleníteni a felhasználónak, a telepítőprogramnak általában le kell kérnie az ütköző fájlok verzióerőforrásaiból származó információkat. A telepítőprogram négy függvényt használhat erre a célra:
GetFileVersionInfoSize a verzióinformáció méretét adja vissza. GetFileVersionInfoGetFileVersionInfoSize által lekért adatokat használ a verzióinformációkat tartalmazó struktúra lekéréséhez. VerQueryValue egy adott tagot kér le ebből a struktúrából.
Ha például VerInstallFile a VIF_DIFFTYPE hibát adja vissza, a telepítőprogramnak a GetFileVersionInfoSize, GetFileVersionInfoés VerQueryValue függvényt kell használnia az ideiglenes és a célfájlokon az egyes fájlok általános típusának lekéréséhez. Ha a fájlok nyelvei ütköznek, a telepítőprogramnak a VerLanguageName használatával is le kell fordítania a bináris nyelvi azonosítót a nyelv szöveges ábrázolására. (Például 0x040C a "Francia" karakterláncra fordítja.)
Ha VerInstallFile fájlhibát ad vissza, például VIF_ACCESSVIOLATION, a telepítőprogramnak a GetLastError függvényt kell használnia a legutóbbi hibaérték lekéréséhez. A programnak le kell fordítania ezt az értéket egy informatív üzenetre, amely a felhasználó számára jelenik meg. A programnak nem szabad szabályoznia a VerInstallFile és GetLastErrorhívásait.