Bu uygulamada C# dilinin güzelliklerinden faydalanacağız. C# ile bir programın internet üzerinden nasıl otomatik veya manuel güncelleştire bileceğimizden biraz bahsedeceğim. Buna benzer bir uygulamayı 6 - 7 senedir takip ettiğim 2D mmorpg tarzı bir oyun olan Ultima Online da bir kaç arkadaş ile beraber kurduğumuz server için connector programı hazırlamıştım. Bu konuda da biraz örnekler vereceğim. Öncelikle neden böyle bir yazılıma ihtiyaç duydum onu anlatayım kısaca. Ben tarihi olan ilkel her türlü şeye meraklı biriyim. Rezilliği seviyorum açıkçası ^^. O yüzden ultima online çok severek ve usanmadan takip ettiğim bir mmorpg oyunu. Ultima alt yapısında bir server kurmak masraflı ve bilgi gerektirir. (sphere script dili, world builder, quest writer, in game perf, web) gibi şeylerden anlamnız gerekiyor
Birde diğer kişilerin sizin servernıza bağlanmaları için bir bağlantı programına (connector) ihtiyanız var. Normalde bu connectoru bazı firmalar aylık 40 TL karşılığı size kiralıyor ama ben kendi bağlantı programımı yapmak istedim ve o connectore eşdeğer bazı yenilikler ekledim. Bunlardan bazıları API bağlantılı illagel programları engelleme, otomatik güncelleştirme, web duyuru panosu, server durumu, oyun içerisinde karekteriniz istatistikleri vb gibi bir kaç şey daha.
Bu connectorun kaynak kodlarını ne yazıkki veremiyorum ama işin mantığını anlamanız için küçük bir güncelleştirme programı hazırladım. Bu programda mevcut sürümün version numarası ile sitedeki güncel versiyon numarası birbirini tutmuyorsa gerekli işlemi yap şeklinde bir program.



İlk önce bir form oluşturun ve bu formun içerisine iki adet label yerleştirin. Labellerin birine lblProgramci diğerine lblSurum adını verin. Güncelleme için ise buton kullanılabilir ama ben menuStrip kullandım sizde bir adet menuStrip ekleyebilirsiniz.
Şimdi ikinci bir form oluşturalım. Bu formda güncelleştirme işlemlerine yer vereceğiz ve indirilen dosyanın boyutunu ve takibini yapacağız. İkinci formumuza bir adet progressbar ekleyelim. Hemen altına bir adette label ekliyelim ve labelın adını lblProgress olarak değiştirelim.



Program arayüzünde yapacaklarımız bu kadar. Şimdi birde dosya okuma ve dosya yazma işlemleri için programı kayıt ettiğiniz yere Ayarlar.txt adında bir metin belgesi oluşturun. Bu belgenin bir tanesi ASP_Guncelle.xml ile aynı dosyada diğeri ise programın kayıtlı olduğu yerde olması lazım. ASP_Guncelle.xml ile aynı dosyada olan Ayarlar.txt dosyasının sürümünü Sürüm: V 1.0 olarak değiştirin.
Ayarlar.txt belgesine yazılacak kod:
Sürüm kontrolü için birde web sayfamızdan sürümü bildirecek bir xml dosyasına ihtiyacımız olacak. Boş bir yere ASP_Guncelle.xml adında bir dosya oluşturun ve içerisine aşağıdaki kodu yapıştırıp kayıt edin.
<ASPsurum surum="V 1.0" dosya="Ayarlar.txt" />
Form1 için gerekli CS kodu:
Form2 için gerekli CS kodu:
Birde diğer kişilerin sizin servernıza bağlanmaları için bir bağlantı programına (connector) ihtiyanız var. Normalde bu connectoru bazı firmalar aylık 40 TL karşılığı size kiralıyor ama ben kendi bağlantı programımı yapmak istedim ve o connectore eşdeğer bazı yenilikler ekledim. Bunlardan bazıları API bağlantılı illagel programları engelleme, otomatik güncelleştirme, web duyuru panosu, server durumu, oyun içerisinde karekteriniz istatistikleri vb gibi bir kaç şey daha.
Bu connectorun kaynak kodlarını ne yazıkki veremiyorum ama işin mantığını anlamanız için küçük bir güncelleştirme programı hazırladım. Bu programda mevcut sürümün version numarası ile sitedeki güncel versiyon numarası birbirini tutmuyorsa gerekli işlemi yap şeklinde bir program.
İlk önce bir form oluşturun ve bu formun içerisine iki adet label yerleştirin. Labellerin birine lblProgramci diğerine lblSurum adını verin. Güncelleme için ise buton kullanılabilir ama ben menuStrip kullandım sizde bir adet menuStrip ekleyebilirsiniz.
Şimdi ikinci bir form oluşturalım. Bu formda güncelleştirme işlemlerine yer vereceğiz ve indirilen dosyanın boyutunu ve takibini yapacağız. İkinci formumuza bir adet progressbar ekleyelim. Hemen altına bir adette label ekliyelim ve labelın adını lblProgress olarak değiştirelim.
Program arayüzünde yapacaklarımız bu kadar. Şimdi birde dosya okuma ve dosya yazma işlemleri için programı kayıt ettiğiniz yere Ayarlar.txt adında bir metin belgesi oluşturun. Bu belgenin bir tanesi ASP_Guncelle.xml ile aynı dosyada diğeri ise programın kayıtlı olduğu yerde olması lazım. ASP_Guncelle.xml ile aynı dosyada olan Ayarlar.txt dosyasının sürümünü Sürüm: V 1.0 olarak değiştirin.
Ayarlar.txt belgesine yazılacak kod:
Kod:
:::::: ASP Güncelleme Sistemi ::::::
Programcı : Ahmet Salih POLAT
Sürüm : V 0.0
Programcı : Ahmet Salih POLAT
Sürüm : V 0.0
Sürüm kontrolü için birde web sayfamızdan sürümü bildirecek bir xml dosyasına ihtiyacımız olacak. Boş bir yere ASP_Guncelle.xml adında bir dosya oluşturun ve içerisine aşağıdaki kodu yapıştırıp kayıt edin.
<ASPsurum surum="V 1.0" dosya="Ayarlar.txt" />
Form1 için gerekli CS kodu:
Kod:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.IO;
namespace ASP_Guncelleme_Sistemi
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
ArrayList Programci = new ArrayList();
//Programci isminde ArayList Oluşturuldu.
ArrayList Surum = new ArrayList();
//Surum isminde ArayList Oluşturuldu.
string Dosya = "Ayarlar.txt";
//Dosya Yolu Belirtildi.
StreamReader DosyaOku = default(StreamReader);
//Dosyayı Okuması için
private void Form1_Load(object sender, EventArgs e)
{
oku();
lblProgramci.Text = Programci[0].ToString();
lblSurum.Text = Surum[0].ToString();
}
private void programHakkındaToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show(" Programcı : Ahmet Salih POLAT \r Web Site : www.32bit-core.com \r NOT : Eğitim Amaçlı Bir Projedir.", "ASP Güncelleme Sistemi Hakkında", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void güncellemeKoToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.Show();
}
void oku()
{
if ((File.Exists(Dosya) == true))
{
//Dosyanın Olup Olmadığına Bakılıyor.
DosyaOku = File.OpenText(Dosya);
//Dosya Açılıyor.
try
{
//Dosyadaki değerler ArayListe gönderiliyor.
string s = DosyaOku.ReadLine();
while ((!string.IsNullOrEmpty(s)))
{
s = DosyaOku.ReadLine();
Programci.Add(s);
s = DosyaOku.ReadLine();
Surum.Add(s);
}
}
finally
{
//Dosyayı kapatıyor.
DosyaOku.Close();
}
}
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.IO;
namespace ASP_Guncelleme_Sistemi
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
ArrayList Programci = new ArrayList();
//Programci isminde ArayList Oluşturuldu.
ArrayList Surum = new ArrayList();
//Surum isminde ArayList Oluşturuldu.
string Dosya = "Ayarlar.txt";
//Dosya Yolu Belirtildi.
StreamReader DosyaOku = default(StreamReader);
//Dosyayı Okuması için
private void Form1_Load(object sender, EventArgs e)
{
oku();
lblProgramci.Text = Programci[0].ToString();
lblSurum.Text = Surum[0].ToString();
}
private void programHakkındaToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show(" Programcı : Ahmet Salih POLAT \r Web Site : www.32bit-core.com \r NOT : Eğitim Amaçlı Bir Projedir.", "ASP Güncelleme Sistemi Hakkında", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void güncellemeKoToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.Show();
}
void oku()
{
if ((File.Exists(Dosya) == true))
{
//Dosyanın Olup Olmadığına Bakılıyor.
DosyaOku = File.OpenText(Dosya);
//Dosya Açılıyor.
try
{
//Dosyadaki değerler ArayListe gönderiliyor.
string s = DosyaOku.ReadLine();
while ((!string.IsNullOrEmpty(s)))
{
s = DosyaOku.ReadLine();
Programci.Add(s);
s = DosyaOku.ReadLine();
Surum.Add(s);
}
}
finally
{
//Dosyayı kapatıyor.
DosyaOku.Close();
}
}
}
}
}
Form2 için gerekli CS kodu:
Kod:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.IO;
using System.Net;
using System.Xml;
namespace ASP_Guncelleme_Sistemi
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
ArrayList Programci = new ArrayList();
//Programci isminde ArayList Oluşturuldu.
ArrayList Surum = new ArrayList();
//Surum isminde ArayList Oluşturuldu.
string Dosya = "Ayarlar.txt";
//Dosya Yolu Belirtildi.
StreamReader DosyaOku = default(StreamReader);
//Dosyayı Okuması için
private void Form2_Load(object sender, EventArgs e)
{
oku();
//XML dosya okunuyor.
bool sonlandir = true;
XmlTextReader XMLoku = new XmlTextReader("http://www.32bit-core.com/Guncelleme/ASP_Guncelle.xml");
try
{
while (XMLoku.Read())
{
string XMLsurum = "Sürüm : " + XMLoku.GetAttribute("surum");
string Dosyasurum = Surum[0].ToString();
//Surumler Esit DEGIL ise yukleme yapılıyor.
if (Dosyasurum != XMLsurum)
{
//XML'den dosya Adi aliniyor.
String DosyaAdi = XMLoku.GetAttribute("dosya");
WebClient indir = new WebClient();
Uri yol = new Uri("http://www.32bit-core.com/Guncelleme/" + XMLoku.GetAttribute("dosya"));
//indirilmeye baslaniyor.
indir.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DosyaIndir);
//kaydedilecek isim ve yol belirleniyor.
string kaydet = yol.ToString().Substring(yol.ToString().LastIndexOf('/') + 1);
indir.DownloadFileAsync(yol, kaydet);
sonlandir = true;
}
else
{
//Surumler Esit ise Gunceldir Uyarısı veriyor.
MessageBox.Show("ASP Güncelleme Sistemi Günceldir....", "ASPGüncelleme Sistemi", MessageBoxButtons.OK, MessageBoxIcon.Information);
sonlandir = false;
XMLoku.Close();
Close();
}
}
}
finally
{
if (sonlandir)
{
MessageBox.Show(" ASP Güncelleme Sistemi Güncellenniştir. \r Lütfen Programı Kapatıp Tekrar Açınız...", "ASP Güncelleme Sistemi", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
private void DosyaIndir(object sender, DownloadProgressChangedEventArgs e)
{
//indirilen dosya boyutu ve tamamlanma yuzdesi gosteriliyor.
progressBar1.Value = e.ProgressPercentage;
lblProgress.Text = "İndirilen: " + e.BytesReceived + "/" + e.TotalBytesToReceive + " Byte" + " %" + e.ProgressPercentage + " Tamamlandı.";
}
void oku()
{
if ((File.Exists(Dosya) == true))
{
//Dosyanın Olup Olmadığına Bakılıyor.
DosyaOku = File.OpenText(Dosya);
//Dosya Açılıyor.
try
{
//Dosyadaki değerler ArayListe gönderiliyor.
string s = DosyaOku.ReadLine();
while ((!string.IsNullOrEmpty(s)))
{
s = DosyaOku.ReadLine();
Programci.Add(s);
s = DosyaOku.ReadLine();
Surum.Add(s);
}
}
finally
{
//Dosyayı kapatıyor.
DosyaOku.Close();
}
}
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.IO;
using System.Net;
using System.Xml;
namespace ASP_Guncelleme_Sistemi
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
ArrayList Programci = new ArrayList();
//Programci isminde ArayList Oluşturuldu.
ArrayList Surum = new ArrayList();
//Surum isminde ArayList Oluşturuldu.
string Dosya = "Ayarlar.txt";
//Dosya Yolu Belirtildi.
StreamReader DosyaOku = default(StreamReader);
//Dosyayı Okuması için
private void Form2_Load(object sender, EventArgs e)
{
oku();
//XML dosya okunuyor.
bool sonlandir = true;
XmlTextReader XMLoku = new XmlTextReader("http://www.32bit-core.com/Guncelleme/ASP_Guncelle.xml");
try
{
while (XMLoku.Read())
{
string XMLsurum = "Sürüm : " + XMLoku.GetAttribute("surum");
string Dosyasurum = Surum[0].ToString();
//Surumler Esit DEGIL ise yukleme yapılıyor.
if (Dosyasurum != XMLsurum)
{
//XML'den dosya Adi aliniyor.
String DosyaAdi = XMLoku.GetAttribute("dosya");
WebClient indir = new WebClient();
Uri yol = new Uri("http://www.32bit-core.com/Guncelleme/" + XMLoku.GetAttribute("dosya"));
//indirilmeye baslaniyor.
indir.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DosyaIndir);
//kaydedilecek isim ve yol belirleniyor.
string kaydet = yol.ToString().Substring(yol.ToString().LastIndexOf('/') + 1);
indir.DownloadFileAsync(yol, kaydet);
sonlandir = true;
}
else
{
//Surumler Esit ise Gunceldir Uyarısı veriyor.
MessageBox.Show("ASP Güncelleme Sistemi Günceldir....", "ASPGüncelleme Sistemi", MessageBoxButtons.OK, MessageBoxIcon.Information);
sonlandir = false;
XMLoku.Close();
Close();
}
}
}
finally
{
if (sonlandir)
{
MessageBox.Show(" ASP Güncelleme Sistemi Güncellenniştir. \r Lütfen Programı Kapatıp Tekrar Açınız...", "ASP Güncelleme Sistemi", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
private void DosyaIndir(object sender, DownloadProgressChangedEventArgs e)
{
//indirilen dosya boyutu ve tamamlanma yuzdesi gosteriliyor.
progressBar1.Value = e.ProgressPercentage;
lblProgress.Text = "İndirilen: " + e.BytesReceived + "/" + e.TotalBytesToReceive + " Byte" + " %" + e.ProgressPercentage + " Tamamlandı.";
}
void oku()
{
if ((File.Exists(Dosya) == true))
{
//Dosyanın Olup Olmadığına Bakılıyor.
DosyaOku = File.OpenText(Dosya);
//Dosya Açılıyor.
try
{
//Dosyadaki değerler ArayListe gönderiliyor.
string s = DosyaOku.ReadLine();
while ((!string.IsNullOrEmpty(s)))
{
s = DosyaOku.ReadLine();
Programci.Add(s);
s = DosyaOku.ReadLine();
Surum.Add(s);
}
}
finally
{
//Dosyayı kapatıyor.
DosyaOku.Close();
}
}
}
}
}
Yorumlar |
OylamalarOylama :![]()
Üyelerin oylama ortalaması (10 dışında) : 10.00
![]() Oylar: 1 den itibaren 05-01-2012 01:07 |
Benzer Sayfalar
| Sayfalar | Yorumlar | Gönderen | Tarih |
| Maaş Sistemi | 0 | Kraagnar | 17-11-2011 |
| Flash üyelik sistemi | 0 | Culum | 25-09-2011 |
| Sorter Account Sistemi | 0 | Sorter | 23-07-2011 |
| Staff Book ve Jail Sistemi | 0 | Mesh | 20-06-2011 |
| Gm Topuk Yarışması Sistemi | 0 | Dryas | 04-06-2011 |








