Merhabalar ,
Bugunki yazımda windows uygulamalarında , projelerimizi setup haline nasıl getiririz ve dağıtımını gerçekleştiririz sorusuna çözüm olabilecek ufak bir setup uygulaması geliştireceğiz
Bu amaçla öncelikle bir windows uygulaması açalım ve form üzerine bir buton atıp altınada Messagebox ile uyarı verecek şekilde Tıklandım! yazabilirsiniz.Veya yazmayadabilirsiniz , sonuç itibariyle proje sembolik olacak
Yazının amacı projeyi ne şekilde setup haline getirebileceğimizi örneklemek.Şimdide solution içerisine Setup and deployment tabının altından Setup project'i ekleyelim.( Aynı solution içerisinde 2 proje oluşturduk)

projeyi açar açmaz bizi file system editor karşıladı.Bu editor ile kullanıcının yani setup'ın kurulacağı client'ın bilgisayarındaki dosya sistemini yönetebiliyoruz.Örneğin ApplicationFolder klasörü Program Files altında uygulamamıza ait oluşacak klösör. Bu klasörün içerisinde tahmin edeceğiniz üzere öncelikli olarak uygulamamızın exe si bulunacak.Bu yüzden Application Folder'a sağ tıklayarak add project output diyoruz ve burdanda primary output'u seçiyotuz. Bu birincil çıktı deminde dediğim gibi uygulamamızın exe si olacak.

Burada primary output dışında başka seçeneklerde var.Örneğin localized resources , bildiğimiz localizasyon yapmaya yarayan resx dosyaları , uygulamamıza ait içerik dosyalarının bulunabileceği Content files veya XML Dokumanlarının bulunabileceği Documentation Files...Application Folder'a bunları uygulamanın dışında ayrıca , bu klasörün altında herhangi bir alt klasörüde rahatlıkla ekleyebiliriz ve istediğimiz herhangi bir dosyayı add file diyerek ekleyebiliriz.

bu 3 klasör file system editor ile beraber default gelen klasörler ancak yönetebileceğimiz klasörler bunlarla sınırlı değil..File system on Target machine yazısına sağ tıklayarak yönetebileceğimiz tüm klasörleri görebiliriz.

ben ayrıca font folder , program files folder , user's favorites folder ve user's start menu de ekledim.Mesela kullanıcının bilgisayarında olup olmadıgından emin olmadıgım bir font'u veya kendimin özel olarak oluşturdugum bir font yapısını fonts folder'a ekleyebilirim.Direk olarak program files klasörünün içine herhangi birşey koyabilirim.Program files'a bir sub folder ekleyerek onun içene herhangi bir file ekleyebilirim.Veya bilgisayarın start menü süne , uygulamamın kısayolunu atayabilirim. ayrıca bu kısayolu kullanıcının desktop ınada direk olarak atabirim ki çoğunlukla atılır
O zaman bizde atalım. Klasoyolu exe üzerinden yaratacağımız için Application Folder da primary output a sağ tıklıyoruz ve create shortcut to Primary output diyor.Buna tıklıyoruz.

burada istediğimiz kadar shortcut oluşturup , oluşturdugumuz shortcut ları , kullanıcının istediğimiz klasörünün içerisinde sürükleyip atabiliriz.Ben User's Desktop içine kısayolu sürükleyip bırakıyorum.İsterseniz kısayola sağ tıklayarak bir ikonda ekleyebilirsiniz.

tabiki önce eklemek istediğimiz ikonu kullanıcının bilgisayarında bir klasöre ekleyiniz.Application folder bunun için uygun bir yer olabilir.Setup projesi uygulamamızın üzerine geldiğimizde solution explorer üzerinden diğer editorlerede ulaşabiliyoruz. Şimdi sıra geldi Registry Editore!

registiry üzerinde bilgi saklamak için çok dogru bir yer değil.Özellikle Serial number gibi değerleri saklamak için hiç değil.Uygulamanız kolaylıkla kırılır.Ancak registry'e yazmanız ve burdan değer okumanız gerekiyorsa , kurulum esnasında bu işleminizi rahatlıkla gerçekleştirebilirsiniz.

name ve value'yu manufacturer'ın altına yazdık. Buradaki değer SetupProjesinin özelliklerinden set lenen bir değer.Hazır yeri gelmişken orayıda görüp tanıyalım.Bundan sonra editorler üzerinden yapabileceklerimizi incelemeye devam edelim.

Burada add remove programda görülecek ikonu setleyebilirsiniz.Remove previous version diyerek setup yapılırken kullanıcıda önceki versiyon varsa bunun silinmesini sağlaabilirsiniz.Bunun gibi yapabiliceğiniz birçok özellik burada mevcut.
Şimdi sıra geldi User Interface editore.Bu editor ile setup yapılırken görünen formu özelleştirebilirsiniz.Örneğin formlara istediğiniz bir bannerı , banner bitmap den seçebilirsiniz.

bunun dışında launch conditions editor den ise hedef makinedeki system gereksinimlerini belirleyebilirsiniz.Örneğin .Net Framework un mutlaka bulunması gerekiyor.

Setup'ı yapmadan önce son bir editor daha kaldı oda custom actions editor.Bu editorun ne yaptıgınız anlamamız için öncelikle Dağıtımı yapılacak uygulamamıza bir adet installer class eklememiz gerekiyor.Bu class üzerinden setup'ın yapıldıgı andan , setup ın bittiği zamana , setup da hatanın oluştugu veya hatadan geriye rollback ile dönüldüğü zamana kadar ulaşabildiğimiz event ler mevcut.Örneğin Kullanıcının bilgisayarında Sql Server ın kurulu oldugunu biliyorsanız , veritabanı oluşturup içine kayıt bile girebilirsiniz.

tabiyiki bu class , exe mizin içinde oldugundan yani primary output un içinde yer alacağından custom actions editorunde bunu belirtmemiz gerekiyor.

Evet setup projemizi tamamladık.Bundan sonra tek yapacagımız şey projeyi derlemek.Setup dosyası Debug klasörünün altında oluşacak.

msi uzantılı dosyayı çalıştırarak , güle güle kullanabilirsiniz 
