INSTALLER CLASS
Bu makalemizde geliştirdiğimiz uygulamamızın kurulumundan önce SQL Server üzerinde veritabanımızı kurmayı öğreneceğiz.
Bu uygulamamızda başrol oynayacak olan Installer Class sınıfları sayesinde yükleme esnasında araya girip müdahale edebileceğiz . Kurulum sırasında veritabanının otomatik olarak kurulması herkes için önemlidir. Kurulum işleminde Araya girecek bir Class Library oluşturarak Bu sorunu çözeceğiz.
Form Ekranı’ndan
1- Server Bilgileri
2- Kullanıcı Adi
3- Şifre
Alarak Veritabanımızı oluşturuyoruz.
Veritabanımızın kodları aşağıdaki gibidir ;
USE [master] GO CREATE TABLE CREATE DATABASE [Ornek] ON PRIMARY ( NAME = N'Ornek', FILENAME = N'C:\\DB\\ Ornek.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N'Ornek_log', FILENAME = N'C:\\DB\\ Ornek_1.ldf' , SIZE = 1536KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)"
Olusturmus oldugumuz veritabanına tablolarımızı oluşturacağız. Ilk Olarak Ogrencı Tablosunu Olusturalım
Tablonun Column’ları ;
OgrenciId DataType’i int Ve Not Null(Bos Gecılemez)
OgrenciAdi DataType nvarchar(50) ve Not Null
OgrenciSoyadi DataType nvarchar(50) ve Not Null
· Ogrenci Tablosu
USE [Ornek] GO CREATE TABLE [dbo].[Ogrenci]( [OgrenciId] [int] IDENTITY(1,1) NOT NULL, [OgrenciAdi] [nvarchar](50) NOT NULL, [OgrenciSoyadi] [nvarchar](50) NOT NULL, CONSTRAINT [PK_Ogrenci] PRIMARY KEY CLUSTERED ( [OgrenciId] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO
Öğrenci tablomuz oluşturuldu şimdi ise Dersler Tablosunu oluşturuyoruz.
DersId DataType nvarchar(50) ve Not Null
DersAdi DataType nvarchar(50) ve Not Null
DersSaati DataType nvarchar(50) ve Not Null
· Dersler Tablosu
USE [Ornek] GO CREATE TABLE [dbo].[Dersler]( [DersId] [int] IDENTITY(1,1) NOT NULL, [DersAdi] [nvarchar](50) NOT NULL, [DersSaati] [int] NOT NULL, CONSTRAINT [PK_ Dersler] PRIMARY KEY CLUSTERED ([DersId] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO
Veritabanımızı ve kullanacağımız tabloları oluşturduktan sonra Visual Studio’dan InstallerClass adında yeni bir “Windows Application” uygulaması açıyoruz.
Uygulamamızda buttona basılınca textbox ‘ daki değer listbox’a ekleniyor.Bunun için formumuza aşağıdaki gibi 1 textbox , 1 listbox ve 1 button ekliyoruz.
Ekle buttonunun Click Events’ine aşağıdaki kodu yazalım ;
Listbox1.Items.Add(textBox1.Text)
Projemizi tamamladıktan sonra başka bir bilgisayar a yüklenebilmesi için
File menüsünden “Add Project” “Setup Project” seçip adını “InstallerClassSetup” verelim.
Şimdi de projemizin setup’ını oluşturuyoruz.
“Primary Output” buttonuna bastığımızda programımızın çıktısını setup projemize Eklemiş oluyoruz. Buradaki amacımız projemizin yüklenmesini sağlamaktır.
Projemize Veritabanımızı kuracak olan “Class Library” projemizi eklemek için adına “Installerlib” yazıp “OK” button’una basıyoruz .
Class Library projemize System.Windows.Forms Namespace’ini referans veriyoruz.
Daha sonra aşağıdaki gibi bir form ekliyoruz
Kaydet Ve Kurulumu Yap buttonunun kodlarını yazmaya başlamadan önce eğer
“Windows Authentication Kullan” CheckBox’ı İşaretli Olursa KullanıcıAdı Ve Şifre Textboxlarını Enable=False yapmamız gerekecektir çünkü Trusted_Connection bu işlemde bizim işimize yarayacak.
Kaydet ve Kurulumu Yap butonumuzun Click_Events kodları aşağıdaki gibidir ;
string conStr = "server=" + comboBox1.Text + ";"; //server’a Baglanmamız Icın Gereklı Olan Kod
if (checkBox1.Checked)
{
conStr += "trusted_connection=true;";
//Burda Ise Dedıgımız Gıbı Eger Wındows Authentication Kullanıcaksak KullanıcıAdı Ve Şifreye Ihtıyacımız Yok
}
else
conStr += "uid=" + textBox1.Text + ";pwd=" + textBox2.Text;
//Burdada Eger Wındows Authentication Kullanmıcaksak KullanıcıAdı Ve Şifreyi Alarak Devam Ediyoruz
SqlConnection cn = new SqlConnection(conStr); //Bir SqlConnection instance’i Cikariyoruz Yani Bir Baglantı Tanımlıyoruz
if (Directory.Exists("C:\\DB")==false)
Directory.CreateDirectory("C:\\DB");
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandText = "USE [master] GO CREATE TABLE CREATE DATABASE [Ornek] ON PRIMARY ( NAME = N'Ornek', FILENAME = N'C:\\DB\\Ornek.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N'Ornek_log', FILENAME = N'C:\\DB\\ Ornek_1.ldf' , SIZE = 1536KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)"
// Burda Az Önce Yukarıda Oluşturdugumuz Database Kodunu Aynen Yazabiliriz.
//Baglantiyi Açiyoruz,Command’ımıza Calıs Komutunu Gonderip,Alt Satırda Baglantımızı Kapatiyoruz Boylece Database’imiz Olusturmus Oluyoruz.Şimdi Veritabanımızı ekledikden sonra tablolarımızı oluşturuyoruz.
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
cn.ConnectionString += ";database=Ornek;"; /
//Dikkat Burda Connection’umuzun ConnectionString’ine “+=” Diyoruz ve Şimdi Tablo Olusturcağimiz için Yukarıda Oluşturdugumuz veritabanına öğrenci tablosunu ekliyoruz.
cmd.CommandText = “USE [Ornek] GO CREATE TABLE [dbo].[Ogrenci]( [OgrenciId] [int] IDENTITY(1,1) NOT NULL, [OgrenciAdi] [nvarchar](50) NOT NULL, [OgrenciSoyadi] [nvarchar](50) NOT NULL, CONSTRAINT [PK_Ogrenci] PRIMARY KEY CLUSTERED ( [OgrenciId] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO “
//Ogrenci Tablomuz’u ekledik.Şimdi ise aynı işlemleri Dersler Tablomuzu eklemek için tekrarlıyoruz.
cn.ConnectionString += ";database=Ornek;";
cmd.CommandText = " USE [Ornek] GO CREATE TABLE [dbo].[Dersler]([DersId] [int] IDENTITY(1,1) NOT NULL, [DersAdi] [nvarchar](50) NOT NULL,[DersSaati] [int] NOT NULL, CONSTRAINT [PK_ Dersler] PRIMARY KEY CLUSTERED ([DersId] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO “
this.Close();
//Dersler Tablomuzu da oluşturduk “This.Close” Diyerek Yuklemeden Sonra Form’umuzun Kapanmasını Sağlıyoruz
Son olarak “Class Library” projemize sag tıklayip Add buttonundan New Item’i seciyoruz ve karşimiza gelen ekrandan projemize bir adet kurucu adında “Installer Class” ekliyoruz.
System.Configuration.Install Namespace’ini referans Veriyoruz ve böylece System.Configuration.Install.Installer sınıfını kullanabilir hale geliyoruz.Bu “Installer Class” içindeki kodlarda
frmBilgi = “InstallerLib” Icındekı Formumuz ..
Yükleme esnasında formumuzun ekrana gelmesini sağlamak için ;
Yukarıda referans olarak verdiğimiz “System.Configuration.Install” sınıfı Bize Setup projelerinde
Aşamalarında istediğimiz her türlü işlemi yapabilmemizi sağlamaktadır.
Class Library projesinde yapılması gereken en son adım Class’a RunInstaller Attribute bildirme işlemidir.
Şimdi yükleme esnasında “Class Library” projemizin ekrana gelmesi için ;
Setup projemizden “Actions Editör” ‘e geliyoruz
Sonra karsımıza gelen ekrandan “Install” aşamasına sağ tıklayarak “Add Custom Actions” ‘a tıklıyoruz
Karsımıza gelen ekrandan “Class Library” projemizi seçiyoruz.
Böylece yükleme esnasında projemiz ekrana gelecek ve girilen bilgilere göre yüklenmeye devam edecektir.
Not : Bu işlemleri yaptıktan sonra setup projemizi “REBUİLT” etmeyi unutmuyoruz.
Projemizi oluşturduktan sonra Deneme İşleminizi Setup projenizden sağ tıklayıp “Install” dedikten sonra yapabilirsiniz.
Kaan Bahşi
Kaan.Bahsi@hotmail.com
Microsoft Certified Professional