Windows Installer Oluşturma

ClickOnce deployment sayfasında belirttiğimiz gibi daha profesyonel görünümlü, ara stepleri olan ve tek seferde bir PC'deki tüm kullanıcılara kurulum imkanı veren setup yöntemi MSI veya Windows Installer yöntemi olarak geçiyor. (Şirketinizin genelinde, adminler tarafından tüm PC'lere dağıtım yapılması işi ise başka bir süreç olup, ben şahsen bunu hiç yapmadım ancak ihtiyacınız bu ise bu sayfadan bilgi edinebilirsiniz)

Bu kurulum seçeneğinde tüm PC'ye kurulum yapılacağı için kurulum yapan kişinin Admin yetkilerine sahip olması gerektiği de aşikardır. Şahsi PC'lerde bu çok sorun olmayacaktır ancak kurumsal ortamlarda BT(IT) politikaları nedeniyle bu pek mümkün olmayabilir. Böyle bir durumda ClickOnce seçeneği değerlendirilebilir.

Şimdi burda da geçmişe bakıldığında iki farklı yöntem görünüyor. Ben birine kısaca ISLE yöntemi, diğerine Installer yöntemi diyeceğim. Burada ve burada görüleceği üzer ISLE yöntemi VS'nun Community versiyonunda desteklenmiyormuş, sadece ücretli versiyonlarında destekleniyormuş, ancak bunun yerine sonra Installer yöntemi gelmiş, biz de bunu kullanacağız. Olur da ISLE yöntemini de denemek istersneiz burdan bilgi alabilirsiniz.

Ana referans dokümanımız şu: https://docs.microsoft.com/en-us/visualstudio/vsto/deploying-a-vsto-solution-by-using-windows-installer?view=vs-2019

Referans dokümanında bahsedilen installer’ı indirmek için buraya tıklayınız. Bu link VS 2017 ve 2019 için geçerli. Daha eski(veya yeni) versiyonlar için sayfadaki yönlendirmeleri takip ediniz.

Bunu indirip çalıştırdıktan sonra(VS kapalı olsun bu arada) VS'yu çalıştıralım. Ve pencereye yeni seçenekler geldiğini görelim.

post-thumb

Şimdi ben VSTOvb projem içine bir setup programı oluşturacağım. O yüzden bu solution’ı açıyoruz.

  • File menüsünden New Project diyip yeni eklenenlerden ilkini(Setup Project) seçiyoruz
  • Solution kısmında "Add do Solution" diyip mevcut solution’a ekleyeceğimizi belirtelim, ben adını MySetup dedim.(Kötü bi isim ama, ana projeden kolay ayırdetmek adına şimdilik böyle diyebiliriz). Create dedikten sonra karşımıza aşağıdaki gibi bir pencere çıkacak. post-thumb
  • Solutionda MySetup'a sağ tıklayıp Add>Project Output diyoruz, ve Primary Output seçiyoruz. post-thumb
  • Yine MySetup'a sağ tıkalyıp Add> File, diyip ana proje klasörümüzdeki bin\Release yolunda vsto ve manifest uzantılı dosyaları ekliyoruz. post-thumb
  • Sonra, Solution Explorerda Detected Dependencies altındaki .Net Framework ve Utilites'le bitenler hariç diğerlerine sağ tıklayıp Properties diyoruz ve Exclude=True diyoruz. Bunun sebebi özetle şu: Bunlar add-in'imize pre-requisite olarak eklenmeli, yani kurulum sırasında öncelikli olarak kurulmalılar.  post-thumb
    Hemen akabinde yine MySetup'a sağ tıklayıp Properties'e tıklayalım
  • post-thumb
  • Burda da Prerequisites'e tıklayıp gerekli .Net Framework'ü ve VSTO Runtime'ı seçelim post-thumb
  • Bu aşamadan sonra uzunca bir Registry ayarlama süreci var, onu referans dokümanından bakabilirsiniz, ben aşağıya oluşması gereken resmi koydum. Bunun için MySetup'a sağ tıklayıp View>Registry diyorsunuz. CURRENTUSER ve LOCALMACHIINE altındaki Software>Manufacturer Key'lerini siliyorsunuz. Sonra en alttaki Key'e resimdeki hiyerarşide olacak şekilde sırayla bu Key'leri ekliyorsunuz. En alttaki Key'e de yandaki 4 Value(ilk ikisi ve sonuncusu String, üçüncüsü DWORD tipinde) değerini ekliyoruz, bunların değerleri de yine yanlarında yazılı. post-thumb
  • Solution Explorer'da MySetup seçiliyken aşağıdaki Properties penceresinde TargetPlatform belirliyoruz. 64 bit kullanacaklar içn 64, 32'ler için 86 seçmek gerekiyor. İki konfigürasyonu olan kişiler de kullanacaksa iki ayrı setup dosyası oluşturacaksınız demektir. Hazır Properties açıkken TargetPlatform'un biraz yukarısında Manufacturer alanında "Default Company Name" yazıyor, bunu da değiştirebilir, kendi adınızı veya şirket adını verebilirsiniz.
  • Kurulum yapan kişide VSTO Runtime olup olmadığını kontrol eden bir Launch Conditon ekliyoruz.(Bu adım zaruri değil, başka bir projemde böyle denedim, sorun yaşamadım, olur da sorun yaşarsanız bu adımı işletin). Adımları yine referans dokümanda bulabilirsiniz, çıktısı aşağıdaki gibi olacak. post-thumb
  • Bu condition belirleme sürecinden bir tane daha var(Bu aşamayı hiçbir projemde yapmadım, sorun yaşamadım. Sorun yaşayan kullanıcılarınız olması durumunda işletebilirsiniz)
  • Artık sona geldik, şimdi projemizi build edebiliriz. İşlem bitince File Explorer'dan ilgili klasöre gidip bin\Release altındaki 2 dosyayı da alıp insanların erişebileceği bir klasöre kopyalayalım. Herkes buradan setup dosyasını çalıştırarak programı(add-ini) kurabilir.

Gördüğünüz üzere, MSI kurulum yöntemi biraz daha teferruatlı. Tüm PC kullanıcılarına kurma gibi bir derdiniz yoksa, veya bir lisans key gibi birşey girdirmeyecekseniz ClickOnce tercih edin derim. Özellikle ticari amaçlı bir proje yapmıyor, kendiniz ve/veya birkaç kullanıcı için bir add-in hazırlıyorsanız MSI'a hiç gerek yok.

Kurulum

Kurulum aşaması yine ClickOnce'daki gibi basit:

post-thumb

Next dedikten sonra çıkan ekranda nereye kurulum olacaksa orası seçilir. User'a mı tüm PC'ye mi kurulum yapacağını da soruyor, Everyone dersek tüm PC'ye yani tüm kullanıcılara tek seferde kurulmuş olur.

post-thumb

Ben Everyone dedim, sonra çıkıp PC'dei Aile hesaplarından birine girdim, baktım ve gerçekten orda da kurulumuş olduğunu gördüm.

Tabi Control Paneldeki Program & Features'an bakınca VSTOvb olarak değil MySetup olarak görünüyor. O yüzden setup projesinin isimlendirmesini daha anlaşılır yapmakta fayda var.