Bu makalemizde C# ‘ da oluşturduğumuz bir uygulamaya güncelleme desteğini nasıl verebileceğimizden adım adım bahsedeceğim. İlk olarak aşağıdaki resimde görüldüğü gibi UygulamaGuncelleme adında yeni bir proje oluşturalım.


Uygulamamızı oluşturduktan sonra bir tane TextBox ve bir tane Button ekleyelim. Uygulamamız son halini aldıktan sonra sıra geldi güncelleme desteğini vermeye. Aşağıda resimde görüldüğü gibi sağ taraftaki Solution Explorer penceresinden C# logolu olan projemizin başlığına sağ tıklıyoruz ve en altta olan Properties seçeneğine tıklıyoruz.

Sonrasında aşağıdaki resimdeki gibi projemizin özellikler(Properties) penceresi karşımıza geliyor. Burada Publish yazan sekmeye tıklıyoruz.

Sonrasında aşağıdaki resimdeki gibi güncelleme ayarlarını yapacağımız ekran karşımıza geliyor. Buradaki menüleri adım adım açıklayacağım.

1 numaralı seçenek: Bütün ayarları bitirdikten sonra uygulamamızı Publish edince dosyaların yükleneceği dizini belirtiyoruz. Burada dikkat etmemiz gereken bir noktamız var. Eğer ki belirleyeceğimiz dizini internet üzerinde bir adres veya bilgisayarımızdaki localhostumuz altında bir adres olarak belirtirsek aşağıdaki hata ile karşılaşacağız.

Failed to connect to 'http://www.sinanakyazici.com/uygulamaGuncelleme/' with the following error: Unable to create the Web site 'http://www.sinanakyazici.com/uygulamaGuncelleme/'.  The Web server does not appear to have FrontPage Server Extensions installed.

Bu hatanın sebebi bilgisayarımızda dosyaların internet ortamına yüklenebilmesi için gerekli olan FrontPage Server Extensions uygulamasının bulmamasıdır. Tabi bu uygulamanız varsa böyle bir hata ile karşılaşmayacaksınız. Eğer belirtiğiniz yolun yazma izinlerinde de sorun yoksa dosyalarınız başarıyla belirtiğiniz adrese yüklenecektir. Bu eklenti olmadan işlem yapmak istiyorsanız benim örnekte kullandığımız gibi dosyalarınızı bilgisayardaki herhangi bir klasöre aktarıp daha sonra ftp adresinden kendiniz elle yükleyebilirsiniz.

2 numaralı seçenek: Kullanıcının dosyaları yükleyeceği dizini belirtiyoruz.

3 numaralı seçenek: Bu seçeneği seçerseniz kullanıcı her zaman sunucuya bağlanıp uygulamayı yükleyip o şekilde çalıştırabilecek. Yani internet bağlantısı olmadan uygulamayı kullanamayacaktır.

4 numaralı seçenek: Bu seçeneği seçerseniz kullanıcı internet bağlantısı olmadan uygulamaya Başlat Menüsü den erişebilir ve Program Ekle/Kaldır dan uygulamayı kaldırabilir.

5 numaralı seçenek: Burası uygulamamızın versiyon seçeneğidir. Buradaki versiyon bilgilerini kendimiz belirleyebiliyoruz.

6 numaralı seçenek: Bu seçenek işaretli olursa uygulamamızı her Publish ettiğimizde Revision kısmında olan rakam 1 artırılıyor.

7 numaralı seçenek: Bu seçenekte uygulamamızı bilgisayara kurulumu sırasında yükleneceği dosyaları belirtiyoruz. Butona tıkladığımızda aşağıdaki resimde olduğu gibi karşımıza çıkan ekranda, bizim exe dosyamızdan başka dosyamız olmadığı için onu sistem otomatik seçmiş durumda.

8 numaralı seçenek: Bu seçenekte uygulamamızın kullanıcının bilgisayarına yüklenebilmesi için Ön Koşul belirtebiliyoruz. Butona tıkladığımızda aşağıdaki gibi bir ekran ile karşılaşacağız.

Bu ekranda a seçeneğinde olan kutucuk işaretli olursa uygulamamıza b seçeneğinde bulunan Ön Koşul lardan istediğimizi dahil edebiliyoruz. Dahil ettikten sonra kullanıcı uygulamayı kullanabilmesi için bu koşullara sahip olması gerekmektedir. c seçeneğini seçili olursa kullanıcı bu Ön Koşul(lar) temin edebilmesi için yayıncı siteye yönlendirilecektir. d seçeneği seçili olursa uygulamanın yayınlandığı dizine yönlendirilecektir. e seçeneği seçili olursa kendimizin istediği bir adrese yönlendirilecektir. Örnek uygulamamıza Ön Koşul dahil etmeyeceğimiz için a seçeneği seçili değil.

9 numaralı seçenek: Bu seçenekte uygulamamızın güncelleme ayalarını belirliyoruz. Butona tıkladığımızda aşağıdaki gibi bir ekran ile karşılaşacağız.

Bu ekranda a seçeneğinde olan kutucuk işaretli olursa uygulamamızın güncellemeleri otomatik olarak ne şekilde kontrol edeceğini belirleyebiliriz. Seçili olmazsa uygulamamız otomatik olarak güncellemeleri kontrol etmeyecektir. a seçeneğini işaretledikten sonra b seçeneğini seçersek uygulamamız açıldıktan sonra güncelleştirmeleri kontrol edecektir. Bu bize uygulamamızın daha hızlı açılmasını sağlayacaktır. Uygulama açıldıktan sonra güncelleştirmeler uygulamanın bir sonraki çalıştırılmasında yüklenecektir. Ayrıca b seçeneği ile birlikte d seçeneğini seçersek uygulamamız her çalıştırıldığında güncelleştirmeleri kontrol edecek, e seçeneğini seçersek belirtiğimiz aralıkta güncelleştirmeleri kontrol edecektir. b seçeneği yerine c seçeneğini seçersek uygulamamız açılmadan güncelleştirmeleri kontrol edecektir. Bu yüzden açılmasında gecikmeler olacaktır. Fakat güncelleştirmeleri var ise güncelleştirmelerini yükleyip güncellenmiş olarak açılacaktır. f seçeneğinde ise güncellemelerin yüklenebilmesi için kullanıcının sahip olacağı minimum versiyonu belirleyebiliyoruz. g seçeneğinde ise uygulamamızı güncelleştirmeleri farklı bir adresten indirmesini istiyorsak o adresi belirtebiliyoruz. Eğer burada adres belirtmezsek varsayılan olarak uygulamayı yayınlandığımız adres güncelleme adresi olacaktır.

10 numaralı seçenek: Bu seçenekte uygulamamızın Publish seçeneklerini belirliyoruz. Butona tıkladığımızda aşağıdaki gibi bir ekran ile karşılaşacağız.

Bu erkanda Description sekmesinde a seçeneğinde yayınlama dilimizi belirliyoruz. Bu seçeneği değiştirmiyoruz. Default olarak kalıyor. b seçeneğinde yayınlayıcının adını, c seçeneğinde hazırladığımız ürünün adını ve d seçeneğinde uygulamamıza destek verdiğimiz url adresimizi belirtiyoruz. Deployment sekmesine tıkladığımızda ise aşağıdaki gibi bir ekran ile karşılaşacağız.

Bu erkanda Deployment sekmesinde a seçeneğinde yayınlama sayfamızın adını belirtebiliyoruz. Uzantısı .php,.aspx,.htm,.html gibi internette gösterime izin verecek şekilde olmalıdır. Eğer boş bırakırsak varsayılan olarak publish.htm olacaktır. b seçeneği seçili olursa uygulamamızı her yayınladığımızda yayınlama sayfası yeniden oluşturulacaktır. c seçeneği işaretli olursa uygulamamızı yayınladıktan sonra otomatik olarak bizi yayınlama adresini yönlendirecektir. d seçeneği seçili olursa uygulamamızı yayınladığımızda internet üzerinde oluşturulan exe uzantısını exe.deploy şeklinde oluşturuluyor. e seçeneği seçili olursa CD den kullanım için autorun.inf dosyası oluşturuyor. f seçeneği seçili olursa uygulamamızı yayınladıktan sonra dosyaların doğrulanması sağlıyor. Son olarak Manifests ve File Associations sekmesinde bir değişiklik yapmayacağımız için bu kısmı atlıyorum.

Uygulamamızın bütün ayarlarını tamamlamış olduk. Şimdi sıra geldi uygulamamızı yayınlamaya. 1 den 10 kadar numaralandırdığım ekrana geliyoruz ve sağ alt köşede bulunan Publish Now butonuna tıklıyoruz. Visual Studio nun sol alt köşesinde Publish succeeded yazısını gördüğümüzde uygulamamız başarıyla yayınlanmış oluyor. Bu örnekte dosyalarımız C:\Documents and Settings\Sinan AKYAZICI\Belgelerim\uygulamaGuncelleme dizininde bulunuyor. Bunları yayınlayacağım adres olan http://www.sinanakyazici.com/uygulamaGuncelleme dizinine yüklüyorum. Dosyaları yükledikten sonra Deployment sekmesinde yayınlama adresimizi yayinla.htm yaptığımzdan dolayı http://www.sinanakyazici.com/uygulamaGuncelleme/yayinla.htm adresine gidiyoruz. Aşağıdaki gibi bir sayfa ile karşılaşacağız.

Artık kullanıcılar Install butonuna tıklayarak uygulamayı bilgisayarlarına kurabilirler. Install butonuna tıklayınca aşağıdaki gibi bir uyarı ile karşılaşacağız.

Bu ekranda kullanıcılar Install butonuna tıklayarak uygulamayı çalıştırabilirler.

Artık kullanıcılar uygulamayı kullanırken siz adresinize uygulamanın yeni bir versiyonunu yüklediğinizde bu versiyon kullanıcıya haber verilecektir. Eğer kullanıcının uygulamanızda güncelleştirmeleri kendi isteği ile kontrol etmesini istiyorsanız bunu kod ile yaptırabiliyoruz. Kod örneği aşağıdaki gibidir.

 

using System.Deployment.Application;

ApplicationDeployment sınıfını kullanabilmemiz için yukarıdaki using satırını eklememiz gerekiyor.

try
{
    //Burada güncelleme bilgilerine erişebileceğimiz değişkeni tanımlıyoruz.
    ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
    //Kullanılabilir güncellemelerin olup olmadığını kontrol ediyoruz.
    UpdateCheckInfo info = ad.CheckForDetailedUpdate();
    if (info.UpdateAvailable) //Güncelleme varsa devam et.
    {
        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())//Güncelleştirmeleri yüklüyor...
            {
                //Güncelleştirmeler aktif olabilmesi için uygulamayı yeniden başlatmak gerekli.
                MessageBox.Show("Program Başarıyla Güncellendi.\n Şimdi yeniden Başlatılacak.");
                Application.Restart();
            }
            else
                MessageBox.Show("Güncelleme Sırasında Hata Oluştu");
        }
    }
    else
    {
        MessageBox.Show("Güncelleme Yok");
    }
}
catch
{
    MessageBox.Show("Sunucuyla bağlantı sağlamadı.");
}

Bu şekilde kod ile güncelleştirmeleri kontrol ettirebiliyor ve yükletebiliyoruz.