Veritabanı olarak SQL SERVER veritabanını kullandığınız bir C# Windows Projesi hazırladınız ve kullanıcılarınızın bu projeyi kurabilmelerini sağlamak amacıyla projenin kurulum dosyasını hazırlamak istiyorsunuz. Ancak projenizi kullanacak olan kişilerin bilgisayarlarında muhtemelen SQL Server yüklü olmayacak ve sizin projenizde de SQL Server veritabanı kullanıldığı için bu durum sizin için büyük bir sorun teşkil edecektir.
Uygulayabileceğiniz çözümlerden (mantıklı olmamakla birlikte) bir tanesi projenin setup’ı içerisine SQLEXPRESS.exe (Sql Server’ın Express sürümüdür ve ücretsiz olarak kullanılabilmektedir) dosyasını atarak kullanıcıyı kurulum aşamasında bu dosyayı kurması şeklinde uyarmak olabilir. Ancak bu durumda da kullanıcılarınızın SQLSERVER diye bir şeyden haberdar olmamaları çok muhtemel olacağından kurulum aşamasında yer alan ayarları anlayamayacaklar ve belki de yanlış bir şekilde gerçekleştireceklerdir. Bu da bizim arzu ettiğimiz bir durum olmayacaktır.
Ben kurulum aşamasında ya da sonrasında SQL Server’ı kullanıcımızın bilgisayarına nasıl kurabileceğimizi ve Sql Server içerisinde programımızın kullanacağı veritabanı nasıl ayarlayabileceğim ile ilgili internet üzerinde yoğun bir araştırma yaptım ancak bu konuda yazılmış çok detaylı bir yazı bulamadım.Bu yüzden de böyle bir makale yazmaya karar verdim.
Öncelikle veritabanı kullanan basit bir proje hazırlayarak işe başlayalım. Oluşturduğum veritabanının adı SETUPPROJESI olsun.İçerisine Kullanicilar isminde bir tablo ekliyorum. Tablonun alanları ve değerleri aşağıdaki gibidir.
Tabloma aşağıdaki verileri ekliyorum.
Şimdi bu verileri kullanan temsili bir C# projesi oluşturmaya çalışalım. Visual Studio ile yeni bir proje açıyorum. Formum içerisine bir adet DataGridView ve bir tane de buton ekliyorum.
Formumuzun kodları aşağıdaki gibidir. Burada amacımız çok basit anlamda bir veritabanı işlemi kullanmak olduğu için Kullanıcılar tablomda yer alan tüm kayıtları form üzerinde görüntülemeye çalışıyorum.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace Proje
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnKullaniciGetir_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=SETUPPROJESI;Integrated Security=true");
SqlCommand cmd = new SqlCommand("select ID,Ad,Soyad from Kullanicilar",con);
con.Open();
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
List<Kullanicilar> kullanicilar = new List<Kullanicilar>();
while (dr.Read())
{
kullanicilar.Add(new Kullanicilar() {ID=dr.GetInt32(0),Ad=dr.GetString(1),Soyad=dr.GetString(2) });
}
dgKullanicilar.DataSource = kullanicilar;
}
}
public class Kullanicilar
{
public int ID { get; set; }
public string Ad { get; set; }
public string Soyad { get; set; }
}
}
Şimdi gelelim projemizi Setup haline getirmeye. Bu amaçla Solution içerisine bir adet Setup projesi ekleyelim.
Solution üzerinde sağ tıklayarak Add-NewProject diyerek sol bölümden OtherProjectTypes sekmesinden kurulum projenizi ekleyebilirsiniz.
Kurulum projenizi ekledikten sonra Solution üzerinde yer alan görünüm şekildeki gibi olacaktır.
Solution Explorer üzerinde Kurulum projemiz seçiliyken gerekli ayarlamaları yapmak üzere üst bölümde yer alan butonları kullanacağız. Öncelikle en baştaki seçenek olan FileSystemEditor seçeneğini kullanarak projenin kurulum aşamasında yerleşeceği yer alan ProgramFiles klasörü içerisinde nasıl görüneceğine karar verelim. Bu amaca yönelik olarak projemin çıktısını yani exe’sini (Bu exe projenizin Debug klasörü içerisinde yer alan exe’dir.) ekleyelim. ApplicationFolder bölümü programımızın kurulacağı ProgramFiles klasörünü temsil etmektedir.
Gelen pencereden Proje isimli Windows uygulamamızın PrimaryOutput'unu seçiyoruz.
Ben PrimaryOutput seçeneğini kullanıyorum. Bu sayede projemin exe’si Setup projesine dahil edilecektir.
Aynı pencerede (Sol taraftan Application Folder seçili iken) sağ bölümde sağ tıklıyoruz ve Add-File seçeneğinden Projemize bir ikon dosyası seçiyoruz.
Projem için aşağıdaki gibi bir ikon dosyası seçtim. Seçtiğiniz dosyanın ikon dosyası (uzantısı ico olan dosyalardır.) olmasına dikkat ediniz.
Şimdi de kullanıcının masaüstüne bir kısayol eklemek için sol bölümden User’s Desktop klasörünü seçiniz.
Kısayolumuzun başvuracağı hedef dosyayı seçiyoruz. Bu dosya programımız kurulduğunda Program Files içerisine yerleşecek olan biraz önce eklemiş olduğumuz PrimaryOutput'dur.
Kısayolumun hedefi olarak ApplicationFolder klasörüm içerisinde yer alan Primary output’u yani daha önce buraya eklemiş olduğumuz programımızın exe’sini seçiyoruz.
Şimdi masaüstüne eklediğimiz bu ikon için bir icon dosyası belirleyelim. Ben ApplicationFolder içerisine yüklemiş olduğum ikon dosyamı seçiyorum.
Programımızın kullanıcının Başlat-Programlar menüsünde yer alması amacıyla User’s Programs Menu bölümüne Setup Projesi isimli bir klasör ekliyorum.
Daha sonra bu klasör (Setup Proje) seçiliyken sağ bölümden yeni bir kısayol ekliyorum. Aşağıdaki şekilde bu durum açıklanmaya çalışılmıştır.
Bu işlemden sonra projemizin görüntüsü aşağıdaki gibi olacaktır.
Şimdi projemizin genel özelliklerini ayarlamaya çalışalım. Bu ayarlar kurulum aşamasında projenin klasör adı, üretici firmanın adı,kurulum sayfasının başlığı gibi ayarlardır.
Solution bölümünden UserInterface editöre geçerek kurulum aşamasında kullanıcımızın karşısına çıkacak olan ekranları ayarlayabiliriz.
Ben bu konuda çok fazla detaya girmek istemiyorum. Bu mevzuları anlatan birçok yerli veya yabancı makaleye kısa bir arama sonucu ulaşabilirsiniz. Bizim buradaki amacımız SQL SERVER veritabanı içeren bir projenin kurulumu esnasında/sonrasında veritabanı yönetim sistemini (SqlServerExpress) kullanıcının bilgisayarına kurmaktır.
İlk yaptığım denemede projenin kurulumu devam ederken SQLExpress’i kurmayı denemiştim.Ancak Projenin kurulumu henüz sonlandırılmadığı için SqlExpress kurulumu başlar başlamaz “Zaten şu an devam etmekte olan başka bir kurulum var” şeklinde bir hata mesajı almıştım ve kurulum sonlanmıştı.
Ben de başka bir yöntem düşünürken projem kurulurken SQLExpress’in Setup dosyasını kullanıcının bilgisayarına kaydetmeye ve daha sonrasında da program ilk çalıştırdığında SQLEXPRESS’in kurulu olup olmadığını kontrol ederek eğer kurulu değilse bu aşamada kuruluma başlamaya karar verdim.
İlk olarak kurulum esnasında kullanıcının bilgisayarına Belgelerim klasörüne SQLEXPRESS setup dosyasını kaydetmeye çalışacağız. Eğer bu dosyayı kaydedersem kullanıcı programı kurup ilk kez çalıştırdığında bu setup dosyasını çalıştırarak kurulumu başlatacağız.Solution üzerinde sağ tıklayarak Add-NewProject menüsünden bir ClassLibrary projesi ekliyorum.
Pojemin ismini SQLLoader olarak veriyorum. Bu proje içerisine bir klasör açarak ismini SQLSetup olarak belirliyorum. Bu klasörüm içerisine de SQL Server’ın Express sürümünü Add-ExistingItem seçeneğini kullanarak ekliyorum. (Bu dosyanın boyutu 36,4 MB olup http://download.microsoft.com adresinden ücretsiz olarak indirebilirsiniz.) .
Resimde bu işlemlerden sonra Solution'ımızın alacağı görüntü görülmektedir.
Amacımız kurulum esnasında bu SQLEXPR.exe setup dosyasını kullanıcımızın Belgelerim klasörüne projenin kurulumu esnasında kopyalamaktır.