
A program fordítása után futtassa a telepítőprogramot (WinSetup.msi), hogy a program számára az adatbázis létrejöjjön. Csak ezt követően futtassa a WinSample.exe alkalmazást.
A telepítés során bekérjük a felhasználótól a létrehozandó adatbázis nevét, és a telepítés során létrehozzuk azt. A létrehozott adatbázisnevet beírjuk a Rendszerleíró adatbázis egy kulcsába, ahonnan az alkalmazás ki tudja olvasni induláskor.
A telepítő osztály létrehozása
A projekt állományai közé felveszünk egy Installer Class osztályt, melynek Install metódusát felülírva érhetjük el, hogy telepítéskor a kívánt művelet hajtódjon végre.
A metódusban először meghívjuk az ősosztály metódusát, majd beolvassuk a telepítő egy paneljén megadott értéket egy változóba.
base.Install(stateSaver);
dbname = this.Context.Parameters["DbName"];
Az adatbázis-létrehozás műveletét a Process metódusba ágyaztuk.
Ebben a metódusban az SqlConnection objektummal a „master” adatbázishoz kapcsolódva létrehozzuk a kívánt nevű adatbázist.
connect.Open();
command.CommandText = "CREATE DATABASE " + dbname;
command.ExecuteNonQuery();
Ezt követően átváltunk az új adatbázisra, és létrehozunk egy táblát, majd beszúrunk három rekordot.
connect.ChangeDatabase(dbname);
command.CommandText = "CREATE TABLE [dbo].[Table1]([ID] [int] IDENTITY(1,1) NOT NULL,[Name] [varchar] (100) NOT NULL) ON [PRIMARY]";
command.ExecuteNonQuery();
command.CommandText = "INSERT INTO Table1 VALUES ('Kiss Tamás')";
command.ExecuteNonQuery();
...
connect.Close();
Az Install metódusban az utolsó lépés a Rendszerleíró adatbázis kulcsának létrehozása. Ezt a következőképpen végezzük el:
RegistryKey key = RegistryKey.OpenRemoteBaseKey(RegistryHive.CurrentUser, "");
RegistryKey subkey = key.CreateSubKey("Software\\SoftwareOnline\\WinSample");
subkey.SetValue("Value", dbname);
Telepítő program létrehozása
A WinSetup projektben első lépésben meg kell adnunk a telepítendő állományt.
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. A telepítendő állomány a WinSample.exe lesz.
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.
Minden egyéni akció Tulajdonság lapján a CustomActionData property értékét a következőre kell állítani: /DbName=[CUSTOMTEXTA1]. Ez azt jelenti, hogy a felhasználói panelen az EditA1 TextBox kontrol Text property-jének az értéke rendelődik a DbName dinamikus tulajdonsághoz.
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 SetupDb. Az itt megadott néven jön létre egy adatbázis a MS SQL Server adatbázis-kezelőben.
Az Edit(szám)Visible értékeket FALSE-ra állítva a Form többi TextBox kontrolja nem lesz látható.
Az adatbázis megnyitása
A WinSample.exe program indítása után betöltjük a létrehozott adatbázis Table1 táblájának értékeit a DataGrid objektumba. Ekkor az adatbázis nevét kiolvassuk a registry-ből.
RegistryKey key = RegistryKey.OpenRemoteBaseKey(RegistryHive.CurrentUser, "");
RegistryKey subkey = key.OpenSubKey("Software\\SoftwareOnline\\WinSample");
string dbname = subkey.GetValue("Value").ToString();
...