
A program fordítása után futtassa a telepítőprogramot (WinSetup.msi), hogy a program a helyes adattal rendelkező konfigurációs állományt érje el. Csak ezt követően futtassa a WinSample alkalmazást.
A mellékelt példa egy Windows-os alkalmazást (WinSample projekt), és ehhez egy telepítőprogramot tartalmaz (WinSetup projekt). A Windows-os alkalmazás induláskor egy – a programhoz létrehozott, ám helyes értékkel a telepítéskor feltöltött – WinSample.exe.config nevű konfigurációs állományból beolvassa a mappában található egyik XML állomány nevét, majd betölti az állomány tartalmát egy DataSet objektumba. Az objektum tartalmát pedig a DataGrid kontrolban megjeleníti.
A telepítőprogramban egy űrlapon bekérjük az állománynevet, melyet elhelyezünk a konfigurációs állományban. A betölthető XML állományok, a konfigurációs állomány, valamint a futtatható fájl a telepítéskor megadott, alapértelmezésben a <winroot>:\\Program Files\SoftwareOnline\WinSample mappába kerülnek.
Dinamikus tulajdonság
A művelet első részében a Form-ra helyezett TextBox kontrol Text property-jét dinamikus property-vé alakítjuk. Ezt úgy érjük el, hogy a kontrol Tulajdonság lapján a DinamicProperties csomópontban, az Advanced elem melletti gombra kattintunk. A megjelenő panelen a Text jelölőnégyzetet kijelöljük, és a dinamikus tulajdonság nevét FileName-ként adjuk meg. A létrejövő konfigurációs állományban az <appSettings> bejegyzésben fog megjelenni.
<?xml version="1.0" encoding="windows-1250"?>
<configuration>
<appSettings>
<add key="FileName" value="" />
</appSettings>
</configuration>
Installáló osztály létrehozása
Következő lépésben létrehozunk egy osztályt, mely a System.Configuration.Install.Installer osztályból származik. Az osztályban felülírjuk az Install metódust, hogy a telepítés folyamán bekért információt elhelyezhessük a konfigurációs állományban. A metódusban először meghívjuk az ősosztály metódusát.
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
A megadott információt a Context property-ből olvassuk ki, mely egy InstallContext objektum.
string fileName = this.Context.Parameters["FileName"];
if (fileName == "") throw (new InstallException("Nem adott meg argumentumot!"));
A konfigurációs állományt beolvassuk egy DataSet-be, megváltoztatjuk a VALUE attribútum értékét a megadott fájlnévre, majd kiírjuk az információt az állományba.
Assembly asm = Assembly.GetExecutingAssembly();
FileInfo fi = new FileInfo(asm.Location + ".config");
...
DataSet ds = new DataSet();
ds.ReadXml(fi.FullName);
ds.Tables[1].Rows[0][1] = fileName;
ds.WriteXml(fi.FullName);
}
Felhasználói „akció” megadása a telepítőben
Annak érdekében, hogy a telepítőben meg tudjuk adni a felhasználói információt, el kell végeznünk bizonyos beállításokat.
Elsőként a telepítő projektjén kell kattintanunk egyet a jobb egérgombbal, majd a menüből ki kell választanunk az Add menüpontot, azon belül a Product Output alpontot. Ekkor megadjuk a telepítendő állományok körét, mely a WinSample.exe futtatható állomány, és a WinSample.exe.config konfigurációs állomány lesz.
A következő lépésben meg kell adni, hogy még milyen állományok kerüljenek telepítésre. Ekkor az Add – File pontot választva kikeressük a két XML állomány nevét a könyvtárból.
A projekt gyorsmenüjéből a View - Custom Action menüpontot kiválasztva adhatunk egy egyéni műveletet a telepítőhöz. A feltáruló Custom Action (WinSetup) panelen látható négy művelet (Install, Commit, Rollback, Uninstall), melyek mindegyikén kell egyet kattintanunk, hogy megjelenjen az Add cutom action menüpont.
A panelen az Add output gombra kell kattintanunk, hogy minden művelet alá bekerüljön egy saját akció.
Minden egyéni akció Tulajdonság lapján a CustomActionData property értékét a következőre kell állítani: /FileName=[EDITA1]. Ez azt jelenti, hogy a felhasználói panelen az EditA1 TextBox kontrol Text property-jének az értéke rendelődik a FileName dinamikus tulajdonsághoz, és íródik végeredményben a konfigurációs állományba.
Kiegészítő dialógus ablak hozzáadása
A telepítőprogram testre szabásában utolsó lépés, hogy egy adatbekérő ablakot is illesszünk a varázsló ablakainak sorába, rögtön az üdvözlő Form után. Ehhez a project menüjében válasszuk a View – User Interface menüpontot. A megjelenő panelen a fa-struktúra Install csomópontjában három alpont látható: Start, Progress, End. A Start pont gyorsmenüjéből válasszuk az Add Dialog pontot.
Ekkor megjelenik egy űrlap, melyből ki kell választanunk a Textboxes (A) elemet. Ezek minta Form-ok, melyek tetszés szerint behelyezhetők a telepítő űrlapjainak sorába. A Start pontban megjelenik a Form, melynek menüjében található olyan pont, mellyel a helyét módosíthatjuk.
A Form Tulajdonság lapján a BannerText property-ben megadott szöveg lesz a cím szövege. A BodyText értéke lesz a műveletre való felszólítás szövege. Az Edit1Label címke szövege lesz a szövegmező fölötti felirat. És az Edit1Value lesz a szövegmezőben megjelenő érték, jelen esetben a Products.xml.
Az Edit(szám)Visible értékeket FALSE-ra állítva a Form többi TextBox kontrolja nem lesz látható.
Telepítőben megadott adat feldolgozása
A telepítőben megadott űrlapon bekérjük az állománynevet, mely bekerül a telepítéskor a célmappában elhelyezett konfigurációs állományba; a program indulásakor már csak fel kell dolgozni. Ehhez a ConfigurationSettings osztályt használjuk fel.
string filename = ConfigurationSettings.AppSettings["FileName"];
Majd beolvassuk az állományt a DataSet-be.
ds.ReadXml(Application.StartupPath + "\\" + filename);