Setup dosyası yapma!

Arkadaşlar, yaptığımız bir projenin setup dosyasını (.msi ve .exe) nasıl oluşturacağız? Bu makalede bu soruya cevap vereceğiz.

Piyasa birçok installer mevcut fakat biz bu makalede Visual Studio’nun kendi Setup Projesini kullanacağız. Başka bir makalede diğer installer’larıda inceleyeceğiz. Visual Studio’da setup dosyası oluşturmak için öncelikle Visual studio’dan Projenin ‘solution’ kısmına sağ tıklayıp ‘Add->New Project”e tıklıyoruz. Açılan pencerede Other Project Types->Setup and Deployment kısmından ‘Setup Project’i seçiyoruz. Aşağıdaki gibi bir pencere elde etmemiz lazım.
Şimdi açılan bu penceredeki özellikleri biraz tanıyalım.
Application Folder: Programın kurulan dizininde olması gereken dosyaları buraya ekliyoruz. Eğer uygulamanızda dll kullanıyorsanız, veritabanı işlemi yaptıysanız yani yazılımızda exe’nin yanında olmasını istediğiniz bir dosya varsa buraya eklemelisiniz aksi halde program açıldığı anda çöker. Programın exe’side bu bölümde olmak zorunda. Eklemek için sağ taraftaki kısıma sağ tıklayıp ‘Add->File’ deyip ardından programınızın exe’sini seçin. Eğer bir dll kullanıyorsanız otomatik olarak eklenecektir.
User’s Desktop: Bu klasör’e, masaüstünde programınızın kısayol’unu gözükmesini istiyorsanız koyabilirsiniz. Bunu yapmak için sağ taraftaki bölüme gelip sağ tıklayın ve ‘Create New Shortcut”a tıklayın ardından açılan pencereden ‘Application Folder’ da bulunan exe’yi seçin ve masaüstünde programınızın isminin nasıl gözükmesini istiyorsanız yazın.
User’s Programs Menu: Başlat menüsünde programınızın kısayolunu koymak için bu klasör’e de bir exe koymalısınız.
Setup dosyasının özelliklerini biraz inceleyelim şimdide. Setup projenizin özelliklerini aşağıdaki pencereden isteğinize göre değiştirebilirsiniz.
AddRemoveProgramsIcon: ‘Program Ekle veya Kaldır’ kısmında programızın yaptığınız bir icon ile gözükmesini istiyorsanız buraya bir icon ekleyebilirsiniz.
Author: Buraya kendi isminizi yazın :).
DetectNewerInstalledVersion: Kullanıcılarınız’ın, programınızın hem eski hem de yeni versiyonunu aynı anda kullanmasını istiyorsanız ‘false’ yapın.
Manufacturer: Programızın yapımcı’sının ismini buraya yazınız. Buraya yazdığınız isim aynı zaman’da Program Files klasörünün altında oluşturulacak klasör’ün de ismi.
ProductName: Programınızın ismini buraya yazın.
RemovePreviousVersiyon: Yeni versiyon çıkardığınız da, eskilerinin silinmesini isterseniz bu kısmı ‘true’ yapabilirsiniz.
Properties kısmını da inceledikten sonra ufak bir kaç detay verelim. Setup Projeniz’i bu haliyle derlerseniz Debug klasörünün altında iki tane (.msi ve .exe) dosyası bulacaksınız. Bu dosyalar framework kontrol’ü yapmazlar. Bildiğiniz gibi Visual Studio ile yazdığınız programlar’ı çalıştırmanız için, programı çalıştıran makinada framework olmak zorunda. Şimdi aşağıdaki adımları takip ederek setup dosyanızın framework kontrol’u yapmasını eğer kullanıcı da framework yoksa kurulmasını sağlayalım;
Setup Projesine sağ tıklayıp ‘Properties’ tıklayınız. Açılan pencerede ‘Prerequisite’ butonuna basın. Aşağıdaki gibi bir pencere karşınıza çıkmış olması lazım.

Resimde de gördüğünüz gibi burada, programımızda yüklü olmasını istediğimiz programların bir listesi çıktı. Biz buradan hangi framework versiyonunu kullanıyorsak onu seçmeliyiz. Derlediğimiz zaman setup projesinin yanına framework’unde eklendiğini göreceksiniz. Resimde dikkat çekmek istediğim bir diğer nokta, bu framework yoksa nereden sorgulatacağımız? Bunun için üç tane seçeneğimiz var;
1-)Web sitesinden. (Birinci seçenek)
2-)Setup dosyasının exe’sinin yanından. (İkinci seçenek)
3-)Belirlediğimiz bir dosya yolunda. (Üçüncü seçenek)

Buradan hangisi sizin için uygunsa seçebilirsiniz. Setup projemizi derleyip .msi ve .exe uzantılı dosyaları kullanıcılarımıza verip kullanabilirler.

Başka bir makalede görüşmek üzere.

Paylaş:
14 Responses to Setup dosyası yapma!
  1. Burak

    Bu sitenizden kaynaklanan bir sorun. Joomla veya WordPress sistemi kullanıyorsanız iframe bulaşmış olabilir. İnternet de araştırırsanız daha sağlıklı bilgi bulabilirsiniz. Dosyalarınızın içinden ufak bir satır kodu silip google’a tekrar’dan sitenizi incelemesini isteyerek sorunu çözebilirsiniz.

  2. cem sec

    Merhabalar. Çok önemli ve çözemediğim bir sorunum var.
    Tüm bilgileri ve “trust application” özelliklerini de ekliyorum. Setup dosyasını oluşturup internet siteme yüklüyorum. Daha sonra internet sitemi explorer ile açıp setup dosyasını indiriyorum problem ypk. Fakat google chrome ile internet sitesini açıp yükleme yaptığımda yükleme sonunda “kötü amaçlı görünüyor” uyarısı veriyor ve kaydetmiyor. ek seçenek ile kaydediyor.
    Bilgi veren arkadaş olursa sevinirim.

  3. Burak

    Evet o klasördeki exe.

  4. Kemal

    “Başlat menüsünde programınızın kısayolunu koymak için bu klasör’e de bir exe koymalısınız.”
    \bin\Debug içindeki exe yimi biraz daha acabilir misiniz?

  5. volkan taş

    Merhaba Burak Bey anlattıklarınız gerçekten çok faydalı.

    Benim merak ettiğim bir konu var ben veritabanı olarak mysql kullanıyorum. Herkesin bilgisayarında mysql olmayacağını düşünürsek ben setup projemin içerisine mysql’in olup olmadığının kontrolünü nasıl yaptırırım. Yoksa kuracak varsa zaten sorun yok.

    Yardımlarınızı bekliyorum. İyi çalışmalar…

  6. Burak

    Dediğiniz hata ile ilgili bir yazıyı burada yazmıştım…

    http://www.burakozkan.net/2009/08/25/the-microsoft-jet-oledb-4-0-provider-is-not-registered-on-the-local-machine-hatasi/

    İyi çalışmalar…

  7. adem

    Hepsini yaptım fakat kodları yazdıgım pc de setup’ı kurduktan sonra program herhangi bi sorun vermezken; baska bir pc de setup’ kurduktan sonra pc de program sole bi hata veriyo;

    Microsoft.Jet.OLEDB.4.0 sağlayıcı yerel makineye kayıtlı değil.

    Bu iletişim kutusu yerine JIT hata ayıklamayı çağırma
    hakkında detaylı bilgi için bu iletinin sonuna bakın.

    ************** Özel Durum Metni **************
    System.InvalidOperationException: ‘Microsoft.Jet.OLEDB.4.0’ sağlayıcısı yerel makine kayıtlı değil.
    konum: System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper& datasrcWrapper)
    konum: System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
    konum: System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
    konum: System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
    konum: System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
    konum: System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
    konum: System.Data.OleDb.OleDbConnection.Open()
    konum: programtest.Form2.Form2_Load(Object sender, EventArgs e)
    konum: System.Windows.Forms.Form.OnLoad(EventArgs e)
    konum: System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
    konum: System.Windows.Forms.Control.CreateControl()
    konum: System.Windows.Forms.Control.WmShowWindow(Message& m)
    konum: System.Windows.Forms.Control.WndProc(Message& m)
    konum: System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    konum: System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    ************** Yüklü Derlemeler **************
    mscorlib
    Derleme Sürümü: 2.0.0.0
    Win32 Sürümü: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
    —————————————-
    programtest
    Derleme Sürümü: 1.0.0.0
    Win32 Sürümü: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/Sentim/SetupProgram/programtest.exe
    —————————————-
    System.Windows.Forms
    Derleme Sürümü: 2.0.0.0
    Win32 Sürümü: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    —————————————-
    System
    Derleme Sürümü: 2.0.0.0
    Win32 Sürümü: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
    —————————————-
    System.Drawing
    Derleme Sürümü: 2.0.0.0
    Win32 Sürümü: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    —————————————-
    System.Data
    Derleme Sürümü: 2.0.0.0
    Win32 Sürümü: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_64/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll
    —————————————-
    System.Configuration
    Derleme Sürümü: 2.0.0.0
    Win32 Sürümü: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
    —————————————-
    System.Xml
    Derleme Sürümü: 2.0.0.0
    Win32 Sürümü: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
    —————————————-
    System.Windows.Forms.resources
    Derleme Sürümü: 2.0.0.0
    Win32 Sürümü: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_tr_b77a5c561934e089/System.Windows.Forms.resources.dll
    —————————————-
    System.Transactions
    Derleme Sürümü: 2.0.0.0
    Win32 Sürümü: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_64/System.Transactions/2.0.0.0__b77a5c561934e089/System.Transactions.dll
    —————————————-
    System.Data.resources
    Derleme Sürümü: 2.0.0.0
    Win32 Sürümü: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Data.resources/2.0.0.0_tr_b77a5c561934e089/System.Data.resources.dll
    —————————————-
    mscorlib.resources
    Derleme Sürümü: 2.0.0.0
    Win32 Sürümü: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
    —————————————-

    ************** JIT Hata Ayıklama **************
    JIT hata ayıklamayı etkinleştirmek için, bu uygulamanın veya
    bilgisayarın (machine.config) .config dosyasında
    system.windows.forms bölümünde jitDebugging değeri ayarlanmış olmalıdır.
    Ayrıca uygulama hata ayıklama etkin durumdayken derlenmiş
    olmalıdır.

    Örneğin:

    JIT hata ayıklama etkinken, işlenmemiş özel durumlar
    bu iletişim kutusunda işlenmek yerine bilgisayarda kayıtlı
    JIT hata ayıklayıcısına gönderilir.

  8. Ferdi Yanılmaz

    İyi günler efendim,
    benim bir sorunum var sizin anlattığınız üzere setup projesini oluşturdum hatasız bir şekilde ancak yukarda arkadaşın dediği gibi vistada yönetici izni olmadan veritabanı üzerinde işlem yapmıyor hataya düşüyor(JIT hatası).Bunun Pc’ye Kurulum dosya yolunu program files dediği yolu location da nasıl silebiliriz ne yazabiliriz o kısma(Yani program files içine kydetmeyip C:\dosya içine kaydetmesi gibi) Cevabınız için şimdiden Tşk’ler…

  9. Burak

    Exe’ye sağ tıklayıp ‘Yönetici Olarak Çalıştır’ derseniz sorunsuz bir şekilde kullanabilirsiniz.

  10. kemademir

    çok acil…
    Bitirme projesi
    ben Visual Studio 2008 de c# programlama dilini kullanarak bir proje hazıladım. vereitabanı dili olarak microsoft access 2007 kullandım. hazırladığım stup projesi xp de sorunsuz çalışıyor fakat vista ve windows 7 de C:\\ nin altıda bir klasöre kurulum yaparsam program çalıştığı zaman veritanında herhangi bir işlem yapamıyorum bunun için yönetici izni istiyor.
    proggramı direk c:\\klasör ismi\ şeklinde kurarasam sorun çıkmıyor c.\\program files\klasör ismi\ olursa sorun veriyor. xp de böyle bir sorun vermiyor.
    bu konuda çok acil yardıma ihtiyacım var yardım ederseniz sevinirim.
    iyi akşamlar.

  11. İladiyes

    Arkadaşım bildiğim kadarıyla BASİC için veritabanını programın exe sinin yanına atıyoruz.Yani Debug klasörüne.Daha sonra kodlamada yazdığın baglantıda Data Sorce=” & Application.Startuppath & “\veritabanı.mdb” diye yazarsan uygulaman her yerde çalışır.

  12. hamdiali

    Konu için teşekkürler ama aynen dediğiniz gibi yaptım hiç bir yeri atlamadım rojeyi kaydediyorum ama debug klasörü boş gözüküo releasede boş anlamadım bişe

  13. Burak Özkan

    Biraz geç oldu galiba umarım işine yarar, access'le bağlantı yaptıysan connection string'inin DataSource kısmı Data Source=|DataDirectory|\[VeriTabanıIsmi].mdb şeklinde yap. Setup yaparkende veritabanını exe'nin yanına at. Hepsi bu kadar. Kolay gelsin, iyi çalışmalar…

  14. Anonymous

    arkadasım emeklerin için saol güzel bir makale olmus ama benim bir sorunum var onuda cözebilirsin diye düsündüm ben programımda accesse bağlantı yaptım bunu setupa nasıl cevirebirim..yardım edersen sevinirim..

Bir Cevap Yazın

Your email address will not be published. Please enter your name, email and a comment.