c# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
c# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

25 Ocak 2013 Cuma

C# ile masa üstü programınıza otomatik güncelleme özelliği eklemek


.net framework kullanarak (C#) yazdığım masa üstü yazılımlardan birine otomatik güncelleme özelliği eklemek istiyordum. Bu sebeple yaptığım çalışma gayet verimli oldu. Bende bu çalışmanın aşamalarını paylaşarak masa üstü program geliştiricilerin işine yarayacağını düşündüm. Bu bir ders veya konu anlatımı değil, sadece izlemeniz gereken yolu tarif edeceğim o kadar. Hazırsanız başlayalım ;

Problemimiz masa üstü programımızın kendi kendini update edebilme özelliği. Bunun birden fazla yolu olsa bile ben kendime göre en kolay olduğunu düşündüğüm versiyonu sizinle paylaşacağım.

Diagram şu şekilde olacak ;

1. Program çalıştırıldığında kendi sürümünü internet üzerinde bir sunucuda bulunan son sürüm ile karşılaştıracak.
2. Eğer yeni sürüm var ise yeni sürük kurulum programını download edecek.
3. Download tamamlanmış ise yeni sürümü yükleme yazılımını çalıştırarak kendisini update edecek.

Standart bir winform uygulaması oluşturarak işe başladığınızı farzediyorum. İlk yapmamız gereken şey programımızın kendi sürümünü bilmesini sağlamak. Bunun için ben "program.cs" içerisine aşağıdaki kodu ekledim.


buradaki "public static string versioncode" değişkeni ile programın versiyonunu tutuyorum. Daha sonra ana formun on load olayına update kontrolünü yapacak bir bölüm ekledim. Ayrıca hemen altında bulunan "updateme" prosedürü ile update işlemini yapacak olan formu çağırdığımı fark edeceksiniz. Burada thread kullanmaktaki amaç asıl formu kapatırken programın kapanmasını engellemek.


Uygulama ana formu yüklediğinde "checkupdate" fonksiyonunu çağırıyor. Basitçe fonksiyonun yaptığı şey web sunucumda bulunan bir php dosyasına kendi sürüm numarasını "v" değişkeni ile yollamak. Php dosyası eğer sürüm aynı ise "OK" eğer programın sürümü eski ise "UPDATE" değerini döndürüyor. CheckUpdate fonksiyonunun kodları şu şekilde;


Şimdi siz "Asıl iş PHP dosyasında. Tüm işi o yapıyor!" şeklinde düşüneceksiniz ama öyle değil. Php dosyası çok çok basit bir şekilde yayında olan versiyon ile programın yolladığı versiyonu kontrol ediyor o kadar. Aşağıda php dosyasının kodunu veriyorum. (Dilerseniz aynı şeyi .asp, .aspx, .asmx, .txt gibi dosyalar ile de yapabilirsiniz. kontrol işlemini masa üstü yazılımınıza yaptırabilirsiniz. Ben bu yolu seçtim)


Gördüğünüz gibi gayet basit bir kontrol. Buradan sonra program thread açarak güncelleme formunu yüklüyor ki asıl güncelleme işini yapan bu program. Güncelleme formunda basitce yerleştirilmiş iki label ve bir progressbar var. Bu sayede kullanıcıya güncelleme işlemi ile ilgili bilgi verebiliyor, işlemin ilerlemesini gösterebiliyoruz. Ayrıca ben sırf geyik olsun diye iki adet timer ekleyerek güncelleme işlemini toplamda 10 saniye kadar da yavaşlattım.

Formun tasarımı şu şekilde :


Güncelleme prosedürü ise şu şekilde :


Hızlıca özet geçmek gerekir ise ;

destPath değişkeni indirilecek olan dosyanın yolunu tutuyor. 1.timer ticklediğinde (aktif olup çalıştıktan sonra verdiğiniz süre kadar geçince timer nesnesinin tick olayı tetiklenir) ;
timer kendini kapatıyor
webclient nesnesi oluşturularak bu nesnenin downloadfilecomplete ve downloadprogresschange olayları yeniden yazılıyor. böylece indirmenin ilerlemesini ve bitip bitmediğini takip edebiliriz.
webclient downloadfileasync fonksiyonu ile uzak sunucudaki setup.exe yerel adrese indiriliyor.

bu esnada progresschange olayı ile progressbar update ediliyor.
indirme işlemi bittiğinde tetiklenen downloadfilecomplete olayı ile de program indirilen setup.exe yazılımını çalıştırarak kendisini kapatıyor. Buradan sonra kullanıcı normal bir kurulum yapar gibi güncellemeyi kuruyor.

Sorularınız için yorum atabilir, dilerseniz bana www.mesutaslan.com.tr adresindeki resmi sitemden ulaşabilirsiniz.

Umarım faydası olur....



Not  : Bu arada şunu söylediğinizi hissediyorum "Lan bu örnek kodları niye kopyalanır şekilde vermedin de resim şeklinde verdin dingil !", asıl dingil sizsiniz, eğer programcı olmak istiyorsanız önce yazmaya alışmanız gerekiyor, kopyalayıp yapıştırmaya değil !










26 Nisan 2012 Perşembe

kisa.us yeni url kısaltma hizmeti

 

 

kisa.us nedir ?

kisa.us uzun url, link, bağlantı adreslerini sizin için kısaltarak daha kolay paylaşmanızı sağlayan ücretsiz bir servistir.

neden url kısaltmalıyım ?

Uzun url, link veya bağlantıları hatırlamak zordur, ayrıca birçok sosyal medya ortamında (twitter gibi) paylaşım alanınızı boşuna harcarlar. Bu uzun url, link veya bağlantı adreslerini kisa.us ile kısaltabilirsiniz.

neden kisa.us ?

kisa.us kişisel bilgilerinizi kayıt etmez, hesap açmanız gerekmez, üyelik gerektirmez. E-Posta adresinize reklam, spam, v.b. göndermez. kisa.us sadece url, link veya bağlantılarınızı kısaltır.

kisa.us google chrome eklentisi nedir ?

kisa.us Google Chrome eklentisi sayesinde gezmekte olduğunuz internet sitesinin adresini tek tuşa basarak kisa.us ile kısaltabilirsiniz. Üstelik kurmak ve kullanmak çok basit !

http://kisa.us

14 Ekim 2011 Cuma

C, C++ ve C# ın dedesi rahmetli oldu

 

Bilişim dünyası ardarda gelen ölüm haberleri ile adeta çalkalanıyor. Bu gün kullandığımız, aşina olduğumuz önemli teknolojilerin mucitleri, yaratıcıları bir bir bu dünyadan göçüp gidiyorlar. Bunlardan bir tanesi de bu gün tabir doğru olursa “EKMEK YEMEMİZİ” sağlayan C# dilinin atası C dilinin yaratıcısı Dennis Ritchie.

Merhuma Rahmet diliyoruz…

dennis-ritchie-resimleri-fotolari-pictures-6Geçtiğimiz hafta Steve Jobs'ın ölümüyle sarsılan bilgisayar dünyası bu kez de C programlama dilinin ve UNIX'in kaşifi Dennis Ritchie'nin ölümünün üzüntüsünü yaşıyor.

C'nin günümüzdeki yansımaları C++, C# ve Java programlama dilleri. Yani şu anda kullanmakta olduğumuz işletim sistemi ve web tarayıcısı Dennis Ritchie'nin tasarladığı ve uyguladığı fikirlere, geliştirdiği C programlama diline dayanıyor.

Ritchie, Steve Jobs kadar medyatik olmasa da teknoloji dünyası için en az onun kadar önemli bir isim. C programlama dilinin ve UNIX işletim sisteminin yaratıcılarından Dennis Ritchie, yaşamı boyunca gerek kişisel, gerekse ekip arkadaşlarıyla birlikte yaptığı çalışmalar sayesinde birçok ödül almış bir uzmandı.

Uzun süredir sağlık durumu kötü giden ve 71 yaşında hayata veda eden Ritchie, "UNIX, temelde basit bir işletim sistemidir, ama bu basitliği anlamak için bir dahi olmanız gerekir" sözüyle biliniyor.

Dennis Ritchie, meslektaşı Kenneth Thompson ile birlikte 1968'de çalışmaya başladıkları Bell Laboratories (günümüzde Alcatel-Lucent haline geldi) firmasında UNIX işletim sisteminin ve C programlama dilinin ilk temel taşlarını koydu.

kd14

UNIX'in tek bir donanıma bağlı kalmayıp birçok bilgisayar sisteminde çalışabilir olmasını planlayan ikili, bu işletim sistemini yazabilmek için yeni bir programlama dili de gerektiğini farkederek 1969 - 1973 yılları arasında C dili üzerinde çalıştı.

Ritchie - Thompson ikilisinin C dışındaki diğer başarısıysa UNIX işletim sistemi. Geliştirilmesine 1969 yılında başlanan, 1970 yılında ilk, 1972 yılındaysa C programlama diliyle bütünüyle yeni baştan yazılmış ikinci sürümü kullanıma sunulan UNIX, bugün sayısız kişisel bilgisayar ve sunucuya can veren Linux işletim sisteminin ve hatta cebinizdeki telefonun Android işletim sisteminin atası.

Dennis Ritchie ve Brian Kernighan​ tarafından 1978 yılında yayınlanan ve tüm dünyaya bu yeni dili öğreten 'The C Programming Language' kitabıysa bugün hala C dilinin kutsal kitabı olarak görülüyor.

Turing Ödülü

1983’te Ritchie ve Ken Thompson Generic İşletim Sistemleri Teorisi ve özellikle UNIX işletim sistemini yaşama geçirmelerinden dolayı beraber Turing Ödülü’nü aldılar. Ritchie’nin Turing Ödülü konuşmasının başlığı “Reflections on Software Research” idi.

Ulusal Teknoloji Madalyası

27 Nisan 1999’da Ritchie ve Thompson bilgisayar donanımlarında ve yazılımlarında büyük gelişmeler sağlatan, ABD’nin bilgi çağına öncülük etmesini sağlayan UNIX işletim sistemine ve C programlama diline yardımlarından dolayı beraber Bill Clinton’dan 1998 Ulusal Teknoloji Madalyası’nı aldılar.

dennis-ritchie-resimleri-fotolari-pictures-8