HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

INF állományok használata


Példaprogram letöltése

12839 bájt

Az .INF kiterjesztésű állományok hasznos segítséget nyújtanak az alkalmazások telepítésében. Ezekben az állományokban rugalmasan megadhatjuk, hogy milyen kezdeti bejegyzések kerüljenek a Rendszerleíró adatbázisba, illetve milyen mappában legyen megtalálható a telepített program. Cikkünkben elkészítünk egy komponenst, mely képes lesz felhasználni az INF állományban található információkat.

Az INF állományok felépítése azonos a konfigurációs INI állományok felépítésével. Az INF állományok esetében meghatározott nevek kerülhetnek a [] jelek közé, melyeket saját kulcsnevekkel is kiegészíthetünk.
A melléklet példa mappájában elhelyeztünk egy INF kiterjesztésű állományt, melynek első két szegmensneve szabályos, rögzített név, míg a másik két név saját kreáció. A [version] szegmens tartalmazza a mellékelt INF fájl adatait, beleértve a verzióra, típusra vonatkozó információkat. Ez az egyetlen szegmens, melynek kötelezően szerepelnie kell az állományban. Ha ez elmarad, a folyamat már az INF állomány beolvasásakor megszakad.
[version]
signature="$Windows NT$"
...
A signature kulcsszó és a hozzákapcsolódó karakter-konstans közli a telepítővel, hogy az állomány a várt formátumot tartalmazza.
A DestinationDirs szegmensben adjuk meg a telepítési mappát.
[DestinationDirs]
C:\Program Files\
A StartOptions szegmens pedig egy Registry bejegyzés adatait tartalmazza, melyet a komponensünk elhelyez majd a megfelelő helyen.
[StartOptions]
HKLM,"Software\Animare\","Name",,"CINFInstall"
A mellékelt alkalmazás nem programot telepít programot a rendszerbe, csupán ezt a bejegyzést helyezi el a Rendszerleíró adatbázisban, melyet majd ellenőrizhetünk.
A komponensünk egyetlen karakterlánc típusú property-t tartalmaz, melyben megadhatjuk a telepítési információkat tartalmazó INF állomány elérési útvonalát. Ennek megadása után kell meghívnunk az Install metódust, mely elvégzi a „telepítést”.
public string INFPath 
{
  get
  {
    return infpath;
  }
  set
  {
    infpath = value;
  }
}
Az Install metódusban egy már ismert API metódust, a ShellExecute függvényt hívjuk meg. A telepítéskor ugyanis a Rundll32.exe segédprogramot kell ugyanis megfelelően paramétereznünk. A ShellExecute metódus menedzselt deklarációja a következő:
[DllImport("Shell32")]
public static extern int ShellExecuteA(int hwnd, String lpOperation, String lpFile, String lpParameters, String lpDirectory, int nShowCmd);
A Rundll32.exe alkalmazás képes ugyanis arra, hogy egy DLL-ben található metódust meghívjon úgy, hogy a memóriába töltse a DLL-t (ehhez a LoadLibrary metódust használja fel). A Rundll32.exe segédprogram szintaxisa a következő:
Rundll32.exe <DLL állomány neve> <Metódus neve> [argumentumok]
E szintaxisnak megfelelően paraméterezzük a Rundll32.exe-t mi is. A metódus segítségével a SETUPAPI.DLL InstallHinfSection metódusát hívjuk meg, mely képes arra, hogy az INF egy adott szegmensében megtalálható információkat felhasználja.
A parancssor, mellyel a rundll32.exe alkalmazást le kell futtatnunk, a következőképpen fest:
RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 <INF állomány elérési útja>
Az Install metódusban csupán az INF állomány létezését ellenőrizzük, és meghívjuk a ShellExecute metódust.
bool result = true;
if (File.Exists(infpath))
{
     ShellExecuteA(0,"open","rundll32.exe","setupapi,InstallHinfSection DefaultInstall 132 "  + infpath,null,SW_HIDE);
}
A művelet eredményeképpen bekerül a Name=DINFInstall név-érték pár a Rendszerleíró adatbázisba.

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 731. 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 |