Yazılım Mimarileri ve Tasarım Desenleri Üzerine

C#’ta ClickOnce Deployment İle Uygulamaya Güncelleme Desteği

Merhaba,

Günümüzde bir yazılımın gelişim sürecindeki temel gaye, tüm plan ve algoritmaların gerçekleştirilmesi ve nihai unsur olarak ürünün elde edilmesinden ziyade ürünün inşasından sonraki gelişim sürecini de ilgilendiren durumları hesaba katmak ve yeni güncellemeleri son kullanıcılara bir şekilde duyurabilmek ve ulaştırabilmek için sonuç değil süreç odaklı bir teknik alt yapı geliştirebilmektir.

Yazılım geliştiriciler, üretilen bir yazılımın sonraki versiyonlarını kullanıcı kitlesine eriştirebilmek için birçok teknik ve yöntem geliştirmişlerdir. Tabi ki de bu teknik ve yöntemler; yetenekleri ve kapsamları açısından farklılık arz etmekte ve ihtiyaca dönük çok farklı imkan ve hizmetler sunabilmektedirler.

Bizler bu içeriğimizde bu teknik ve yöntemlerden amacımıza orta ölçekli hizmette bulunabilecek .NET mimarisi tarafından geliştirilmiş ClickOnce Deployment tekniğini inceliyor olacağız. ClickOnce Deployment, üretmiş olduğumuz yazılıma güncelleme desteği vermemizi sağlayabilen ve bunun yanında birazdan ele alacağımız birçok farklı nimeti bünyesinde barındıran bir deployment sistemidir.

ClickOnce Deployment Çalışma Mekanizması

Üretilen yazılımın yeni versiyonlarını kullanıcılara erişilebilir bir sunucu üzerinden ulaştırmaktadır. Yazımızın derinliklerinde de göreceğiniz üzere Visual Studio desteğiyle uygulayacağımız ClickOnce Deployment özelliği, projede olan her yeniliğe özel otomatik artan versiyon bilgisi oluşturmakta ve bu bilgi eşliğinde yazılımın son halini publish ederek ilgili sunucuya aktarmaktadır. Haliyle clienttaki uygulama, sunucudaki üst sürümü anlayabilmek için versiyon numarasını kontrol etmekte eğer yeni bir sürüm varsa kendini güncellemektedir.

ClickOnce Deployment İle Projeyi Publish Etme

Şimdi konuyu bir örnek proje üzerinden detaylıca ele alalım.

Güncelleme desteği vermek istediğiniz projeye “Solution Explorer” penceresinden sağ tıklayarak “Propertys” sekmesine tıklayınız.

Ardından karşımıza çıkan penceredeki sol menüden “Publish” sekmesine tıklayınız.

Şimdi tüm mevzu bu pencere üzerinde ceyran edeceği için yukarıdaki ekran görüntüsünü numaratik olarak parçalara bölmüş bulunmaktayım. Buyrun bu parçaları adım adım detaylandıralım.

Evet… Bu bilgiler ışığında örnek projemizi, uygulama açılır açılmaz güncellemeleri kontrol edecek şekilde ve aşağıdaki ayarlarda publish edelim.

Burada kendime ait bir web sitesi üzerinden örneklendirme yapmaktayım.

Publish yapar yapmaz otomatik tarayıcıda karşımızdaki web sayfası açılmaktadır.

Yazılımı yükledikten sonra, kapatıp tekrardan açarsanız eğer aşağıdaki gibi başlangıçta sürüm kontrolü yaptığını göreceksiniz.

Ve yaptığınız herhangi bir yenilik doğrultusunda yazılımı tekrardan publish ederseniz aşağıdaki gibi ilgili güncelleme programın ilk çalıştırılmasında fark edilecek ve kullanıcı onaylı başlatılacaktır.

Son olarak otomatik tüm güncelleştirme işlevlerini durdurup kullanıcı bazlı kontrol yapmak istiyorsanız eğer biraz koda bulaşmanız gerekecektir. Dolayısıyla aşağıdaki kod bloğu manuel olarak güncelleştirmeleri kontrol etmenizi sağlayacak yapıyı sizlere sunmaktadır.

            try
            {
                //ApplicationDeployment, güncelleştirme bilgilerine erişmemizi sağlayacak olan bir sınıftır.
                ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
                //CheckForDetailedUpdate metodu ile güncelleme var mı? yok mu? kontrol ediyoruz.
                UpdateCheckInfo info = ad.CheckForDetailedUpdate();
                if (info.UpdateAvailable)
                {
                    if (DialogResult.Yes == MessageBox.Show($@"Şu anki versiyonunuz: {ad.CurrentVersion.ToString()} Yeni versiyon: {info.AvailableVersion.ToString()} kullanılabilir durumda. Yüklemek istiyor musunuz?",
                        "Bilgi",
                        MessageBoxButtons.YesNo,
                        MessageBoxIcon.Information,
                        MessageBoxDefaultButton.Button1))
                    {
                        if (ad.Update())
                        {
                            MessageBox.Show("Program Başarıyla Güncellendi. Şimdi yeniden Başlatılacak.");
                            Application.Restart();
                        }
                        else
                            MessageBox.Show("Güncelleme Sırasında Hata Oluştu");
                    }
                }
                else
                    MessageBox.Show("Güncelleme bulunmamaktadır.");
            }
            catch
            {
                MessageBox.Show("Sunucuyla bağlantı sağlanamadı.");
            }

Bu komutlar eşliğinde programınızın yeni versiyonlarını kontrol edebilir, varsa güncelleyebilirsiniz.

Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Mobil sürümden çık