none
[Konu Çözülemedi]C# Otomatik güncelleme sistemi hakkında RRS feed

  • Soru

  • Herkese Selamun Aleyküm,

    Projem için Güncelleme sistemi yapmaya calışıyorum fakat herhangibi bir hata olmamasına rağmen messagebox gözükmeyip güncelleme var diye bir ibare göstermiyor nerede yanlış kodum var acaba

    Şimdiden yardımlarınız için teşekkürler

    Form1 Kodları

    private void Form1_Load(object sender, EventArgs e)
    {
    
        if (checkupdate())
        {
        
    
            DialogResult a= MessageBox.Show(
                "Yeni Güncellemeler Mevcut. \n\r Şimdi Yüklemek İstermisiniz ?",
                "Güncelleme Bulundu",
                MessageBoxButtons.YesNo,
            MessageBoxIcon.Information);
    
            if (a == DialogResult.Yes)
            {
                System.Threading.Thread t= new System.Threading.Thread(
                    new System.Threading.ThreadStart(updateme)
    
                    );
                t.Start();
                this.Close();
     
                      
                       }
     }
    }
    public static void updateme()
    {
    
        Application.Run(new guncelle());
    }
    
    
    private Boolean checkupdate()
    {
        Boolean ret;
    
        try
    
    {
    
            WebClient client=new WebClient();
            Stream stream=client.OpenRead(
                "http://www.domain.com/app/check.php?v="+Program.versioncode);
                StreamReader reader = new StreamReader(stream);
            String content = reader.ReadToEnd();
            if(content ==  "Update")
    {
    
                ret=true;
     }
    else
    	{
                ret=false;
    	}
    	}
        catch   {
            ret =false;
    }
        return ret;
    }

    Guncelle Kodları

     private string destPath = Application.StartupPath + "\\setup.exe";
            public guncelle()
            {
                InitializeComponent();
            }
    
            private void ProgressChanged(
                object sender,
                DownloadProgressChangedEventArgs  e
                                    
                )
    
            {
               progressBar1.Value = e.ProgressPercentage;
            }
    
            private void Completed (Object sender, AsyncCompletedEventArgs e)
            {
    
               gson.Text = " İlerleme Durumu : İndirme Tamamlandı.";
               
    
    
            }
    
            private void timer1_Tick (object sender, EventArgs e)
            {
    
                timer1.Enabled = false;
                WebClient webclient = new WebClient();
                webclient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);                    
                webclient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
                webclient.DownloadFileAsync ( new Uri("http://www.domain.com/app/setup.exe"),destPath);
                      
                 }
    
            private void timer2_Tick(object sender, EventArgs e)
            {
                System.Diagnostics.Process.Start(destPath);
                this.Close();
    
    
            }
    
            private void guncelle_Load(object sender, EventArgs e)
            {
    
            }
    
            }
    
     }

    Program.cs Kodları

    {
        static class Program
        {
            public static string versioncode = "2";
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }
    }

    Şimdiden Teşekkürler.



    • Düzenleyen Furkan Ateş 5 Haziran 2017 Pazartesi 03:47 Konunun incelenmesini talep ediyorum.
    3 Haziran 2017 Cumartesi 06:37

Yanıtlar

Tüm Yanıtlar

  • Kontrolünü nasil sağlıyabilirim acaba ?
    3 Haziran 2017 Cumartesi 06:44
  • Check.php içerigi burda 
    <?
    $versioncode = "3"; 
    if($_GET["v"]){
     $currentversion = $_GET["v"];
     if($versioncode > $currentversion){
        echo "UPDATE"; 
      }
       else{
        echo "OK"; 
       }
    }
    ?>

    3 Haziran 2017 Cumartesi 06:45
  • Hocam yine aynı şekilde bir bildiri gelmiyor direk program açılıyor
    3 Haziran 2017 Cumartesi 07:20
  • Yukarıdaki kodu düzenledim. Yeni haliyle dener misiniz.?.

    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    Emeğinize sağlık hocam teşekkür ederim.
    3 Haziran 2017 Cumartesi 07:41
  • Hocam bir sorun daha oluştu bu seferde güncelleme penceresi geliyor fakat indirme işlemini yapmıyor
    3 Haziran 2017 Cumartesi 07:49
  • Bir gelişme varmı acaba hocam
    3 Haziran 2017 Cumartesi 08:25
  • The name 'ProgressChanged' does not exist in the current context

    The name 'destPath' does not exist in the current context

    The name 'Completed' does not exist in the current context

    Hatalarını almaktayım hocam.

    3 Haziran 2017 Cumartesi 08:48
  • Evet hocam sadece form1 load icindeki bu kodu girdigim zaman tepedeki hatayi veriyor diğer verdiginiz kodların tamamını form1 loada girdigim zaman ise progressbar1 bulunamıyor diyor haliyle cünkü guncelle formunda progressbar

    {
        if (checkupdate())
        {
            DialogResult a = MessageBox.Show("Yeni Güncellemeler Mevcut. \n\r Şimdi Yüklemek İstermisiniz ?", "Güncelleme Bulundu", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
            if (a == DialogResult.Yes)
            {
                WebClient webclient = new WebClient();
                webclient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);                    
                webclient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
                webclient.DownloadFileAsync(new Uri("http://www.domain.com/app/setup.exe"), destPath);
            }
         }
    }

    3 Haziran 2017 Cumartesi 09:46
  • Form1 Load Son Hali
    private void Form1_Load(object sender, EventArgs e)
    {
        if (checkupdate())
        {
            DialogResult a = MessageBox.Show("Yeni Güncellemeler Mevcut. \n\r Şimdi Yüklemek İstermisiniz ?", "Güncelleme Bulundu", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
            if (a == DialogResult.Yes)
            {
                WebClient webclient = new WebClient();
                webclient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
                webclient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
                webclient.DownloadFileAsync(new Uri("http://www.domain.com/app/setup.exe"), destPath);
            }
        }
    }
    
    private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
    {
        progressBar1.Value = e.ProgressPercentage;
    }
    
    private void Completed(Object sender, AsyncCompletedEventArgs e)
    {
        // gson.Text = " İlerleme Durumu : İndirme Tamamlandı.";
        System.Diagnostics.Process.Start(destPath);
        this.Close();
    }
    

    3 Haziran 2017 Cumartesi 09:57
  • Hocam ayrıca sürümler aynı bile olsa güncelleme var diyor
    3 Haziran 2017 Cumartesi 10:45
  • The name 'ProgressChanged' does not exist in the current context

    The name 'destPath' does not exist in the current context

    The name 'Completed' does not exist in the current context

    Halen hatalarını almaktayım hocam Forum1 Load Kısmına Girdim Kodları.

    3 Haziran 2017 Cumartesi 13:42
  • yukarıda yazdığım kodlar aynı form kodları içerisinde olacak. Farklı formlara yazarsanız çalışmaz. 


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    private void Form1_Load(object sender, EventArgs e)
    {
        if (checkupdate())
        {
            DialogResult a = MessageBox.Show("Yeni Güncellemeler Mevcut. \n\r Şimdi Yüklemek İstermisiniz ?", "Güncelleme Bulundu", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
            if (a == DialogResult.Yes)
            {
                WebClient webclient = new WebClient();
                webclient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
                webclient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
                webclient.DownloadFileAsync(new Uri("http://www.domain.com/app/setup.exe"), destPath);
            }
        }
    }
    
    private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
    {
        progressBar1.Value = e.ProgressPercentage;
    }
    
    private void Completed(Object sender, AsyncCompletedEventArgs e)
    {
        // gson.Text = " İlerleme Durumu : İndirme Tamamlandı.";
        System.Diagnostics.Process.Start(destPath);
        this.Close();
    }
    Bu şekilde sizin belirttiginiz gibi form1 load kısmına giriyorum

    3 Haziran 2017 Cumartesi 14:28
  • private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
    {
        //progressBar1.Value = e.ProgressPercentage;
    }
    Şimdilik bu kodu da açıklama haline getirin...

    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    Bu şekilde indirme yapıyor fakat dosyayı indirdikten sonra kurmuyor ve indirdigi exeyi acınca güncelleme sorusuna hayır demeden ana formu göremiyorsun sürekli olarak yeni güncelleme mevcut diyor.

    Hocam birde Teamwiever versem bakabilirmisiniz kodlara acaba

    3 Haziran 2017 Cumartesi 15:36
  • Neredeyse hatalı olmayan kodunuz yok. Ve size bu kadar vakit ayıran, bilgisini sunan birine karşı bile samimiyetsiz olduğunuz kanaatine vardım. Bundan sonra sorularınıza cevap vermemeyi tercih ediyorum. 

    Size iyi çalışmalar ve başarılar diliyorum...


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    4 Haziran 2017 Pazar 21:37
  • Samimiyetsizlik ? güldürüyorsunuz ne ile bu kanaate vardınız ? 

    20 saat 15 dakika sonra yanıt olarak işaretini  kaldırdıgımdan dolayı cevap verdiniz sanırsam.

    Gerçekten bilgini sunmak istemiyorsun isteseydin her cevabın ardına yanıt olarak işaretle yerine yardımcı olabildiysem ne mutlu bana diyebilmen gerekirdi.

    Ayriyetten ben sizi "Samimiyetsiz" Buluyorum insanlara sorunlarını sadece yanıt olarak işaretle demeleri için çözmeye calışıyorsunuz.


    5 Haziran 2017 Pazartesi 03:31
  • Neredeyse hatalı olmayan kodunuz yok. Ve size bu kadar vakit ayıran, bilgisini sunan birine karşı bile samimiyetsiz olduğunuz kanaatine vardım. Bundan sonra sorularınıza cevap vermemeyi tercih ediyorum. 

    Size iyi çalışmalar ve başarılar diliyorum...


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    Ayriyetten bana taktığınız sıfat olan "SAMİMİYETSİZ" kelimesinin bir sözlük anlamına bakın.

    SAMİMİYETSİZ:Samimi davranmayan, içtensiz.

    Samimi olmakSenlibenli olmak, çok yakınlığı bulunmak.

    Bilgilerinizi belli bir zaman diliminde öğrenmiş olmanız insanlara paylaşırken kibirlenip böbürlenmenizi gerektirmez.

    Ayrıca anlamını bilmediginiz "SIFATLARI" takmanıza sebep olamaz.

    Başarılar.


    5 Haziran 2017 Pazartesi 03:39
  • Deleted
    5 Haziran 2017 Pazartesi 04:02
  • Bu şekilde güncelleme yapmak başınızı ağrıtır. ClickOnce kullanmayı denediniz mi?


    try { OldugunGibiGorun(); } catch (BeceremedimException) { GorundugunGibiOl(); }

    Denemedim nasıl bir yol izlemem gerekir acaba ?
    5 Haziran 2017 Pazartesi 04:04
  • Deleted
    • Yanıt Olarak İşaretleyen Furkan Ateş 5 Haziran 2017 Pazartesi 12:55
    5 Haziran 2017 Pazartesi 12:32
  • Zaman ayırdıgınız için teşekkür ederim.

    Gerekli araştırmaları yaptım "Clickonce" daha kolay ve hızlı geldi alternatif sundugunuz için teşekkürler tekrardan.

    5 Haziran 2017 Pazartesi 12:55