Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    49

    [C#] download di file, estrazione e verifica dei file da remoto

    Come da titolo, mi servirebbe un aiuto circa l'implementazione di un codice C#

    Allora, il codice in questione fa parte di un "updater" che ha il compito di verificare remotamente la versione di alcuni files, e nel caso aggiornarli (scaricando l'update compresso ed estraendolo).

    Finora sono riuscito ad ottenere questo:

    codice:
                try            {
                    string localversion;
                    using (StreamReader streamReader = File.OpenText("version"))
                    {
                        localversion = streamReader.ReadToEnd();
                        Properties.Settings.Default.localversion = localversion.ToString();
                    }
                    this.Invoke((MethodInvoker)delegate() { label6.Text = "Checking for updates ..."; });
                    this.Invoke((MethodInvoker)delegate() { pictureBox1.Image = Properties.Resources.url_bw1; });
                    var webClient = new WebClient();
                    string readHtml = webClient.DownloadString(Server + "version");
                    string version = readHtml.ToString();
                    if (version.ToString() == localversion.ToString())
                    {
                        this.Invoke((MethodInvoker)delegate() { label6.Text = "Your client is up to date."; });
                        this.Invoke((MethodInvoker)delegate() { progressBar1.Value = 100; });
                        this.Invoke((MethodInvoker)delegate() { pictureBox1.Enabled = true; });
                        this.Invoke((MethodInvoker)delegate() { pictureBox1.Image = Properties.Resources.url_501; });
                    }
                    else
                    {
                        this.Invoke((MethodInvoker)delegate() { label6.Text = "Updating, please wait ..."; });
                        Properties.Settings.Default.remoteversion = version;
    
    
                        WebClient webClient2 = new WebClient();
                        Uri uri = new Uri(Server + localversion + ".zip");
                        webClient2.DownloadFileAsync(uri, localversion + ".zip");
                        webClient2.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressCallback);
                        webClient2.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadFileCallback2);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                }
            }
    e fino qui tutto bene, tuttavia il software mi scarica SOLO l'update più recente rispetto la versione client dei files, a me servirebbe che scaricasse anche tutti i precedenti update se i files lato client non fossero aggiornati. Altrimenti mi troverei tra qualche mese a dover elaborare una patch di 100GB e passa solo perchè altrimenti i client "datati" non avrebbero i files necessari... ed è un problema.

    Ho provato implementando un
    codice:
    for
    senza risultato.. idee?

  2. #2
    Io mi farei restituire dal server dei dati un po' più strutturati, ad esempio un XML o un JSON contenente la lista degli "zip di passaggio di versione" disponibili, per cui terrai un tot di aggiornamenti incrementali sul server, oltre ad uno completo dell'ultima versione. In base alla versione corrente e agli aggiornamenti disponibili il programma sceglierà se scaricare un tot di aggiornamenti progressivi che lo portino all'ultima versione, oppure se scaricare direttamente il pacchetto di installazione dell'ultima versione.
    Amaro C++, il gusto pieno dell'undefined behavior.

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.