UO-Dev Arama


C# ile Güncelleme Sistemi (UO Connector)

Yazar: Ahmet Salih POLAT
Tarih: 10-02-2011 18:01


Paylaş : Paylaş

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.
http://www.32bit-core.com/images/stories/tanitim/ucak/gun1.JPG

http://www.32bit-core.com/images/stories/tanitim/ucak/gun2.JPG

http://www.32bit-core.com/images/stories/tanitim/ucak/gun3.JPG


İ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.

http://www.32bit-core.com/images/stories/tanitim/ucak/gun4.JPG

http://www.32bit-core.com/images/stories/tanitim/ucak/gun5.JPG

http://www.32bit-core.com/images/stories/tanitim/ucak/aspconnector.JPG


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


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();
                }
            }
        }
    }
}



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();
                }
            }
        }
    }
}



Yorumlar

1.   Gönderen smoce   08-03-2011 11:03    

very very super

2.   Gönderen Liz   13-07-2011 15:45    

Ben bu kodları vb2010da kullanıyorum aşağıda 50 60 tane hata çıkıyor ancak vb6da öyle olmuyor

3.   Gönderen gokay_a   27-08-2011 17:43    

gayet başarılı

4.   Gönderen Melancoly   05-01-2012 01:07    

elinize sağlık.

Oylamalar

Oylama :
Üyelerin oylama ortalaması (10 dışında) : 10.00   
Oylar: 1 den itibaren 05-01-2012 01:07

Benzer Sayfalar

SayfalarYorumlarGönderenTarih
Maaş Sistemi0Kraagnar17-11-2011
Flash üyelik sistemi0Culum25-09-2011
Sorter Account Sistemi0Sorter23-07-2011
Staff Book ve Jail Sistemi0Mesh20-06-2011
Gm Topuk Yarışması Sistemi0Dryas04-06-2011

Keywords:

ultima online, RunUO, ultima online download, sphere scripting, role play, uo grafik, second age ultima, uo loop, macroman, pvp server, server kurulumu, sphere, multool, ml mulls, 56b 55r 55i, htmlgumps, client 4x, client edit, sphere release, osi, rp server, sunucular, ghost mouse, inside uo, kingdom reborn, stygian abyss, uo nasıl oynanır, mondain's legacy, age of shadows, world build, grandmaster, ultima online pvp, player dosyaları, ultima online indir, frp game, RunUO 1.0.0, razor, uo rice, hue editör, skill tools, ultima online patch, axis, world build, verdata, verdata patcher, map editör, gump editör, mul patcher, aos mulls, scriptler, anim edit, anim publish, hues mul, hosting vps, event dialog, account sistemi, skill gain, static yapımı,