Telechargement

Signaler
Messages postés
5
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
7 août 2009
-
Messages postés
5
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
7 août 2009
-
Bonjour,

J'aimerais savoir comment je pourrais faire en sorte que quand j'ouvre mon logiciel que je crée en C# que sa telecharge des trucs automatiquement. Je voudrait faire comme un petit updater pour mon serveur de jeu.

J'ai essayer avec WebClient, mais quand j'arrive pour ouvrir sa me dit : Erreur a cause de WebExeption puis j'ai pas trouvé de solution.

Est-ce que vous pouvez m'aider svp ?

NewbieJava

9 réponses

Messages postés
72
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
12 août 2009
2
ClickOnce est la technologie dédiée à cela dans le Framework .NET.

Si tu persistes néanmoins à vouloir passer par WebClient, il faudrait que tu nous fournisses des informations complètes sur l'exception que tu rencontres.

Mathieu.
Messages postés
5
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
7 août 2009

Bonjour,

Merci de la réponse rapides. Est-ce que tu peut me faire une exemple de code pour pouvoir telecharger par mon logiciel SVP ?

NewbieJava
Messages postés
72
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
12 août 2009
2
Copier-coller d'MSDN :

string remoteUri = "http://www.contoso.com/library/homepage/images/";
string fileName "ms-banner.gif", myStringWebResource null;
WebClient myWebClient = new WebClient();
myStringWebResource = remoteUri + fileName;
myWebClient.DownloadFile(myStringWebResource,fileName);

En l'occurrence, cela téléchargerait le fichier vers ton Application.StartupPath.

Mathieu.
Messages postés
5
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
7 août 2009

Bonjour,

Merci du code il fonctionne très bien :D. Je suis encore débutant, puis j'ai besoin de créer un updater pour mon serveur de jeu. J'aimerais savoir comment:

-Définir l'endroit ou mettre le fichier quand le téléchargement est terminé.

-Faire avancer une bar de progression pour dire au joueurs a combien ils sont rendu.

-Dire le nom du fichier qui télécharge au dessus de la bar de progression

Merci de pouvoir un peu m'aider.

Pour m'a part je vais rechercher pour obtenir des informations.

NewbieJava
Messages postés
72
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
12 août 2009
2
1. L'empacement cible est défini par le second argument de la fonction WebClient.DownloadFile(string, string).

2. Pour la barre de progression, tu vas devoir utiliser une opération de téléchargement asynchrone avec WebClient.DownloadFileAsync(Uri, string), WebClient.DownloadProgressChanged et une fonction de Callback. Je te le déconseille si tu es débutant, mais si tu insistes tu peux trouver un exemple ici : http://www.dreamincode.net/forums/showtopic115491.htm

3. Place un Label au dessus de la barre de progression, tout simplement.

Mathieu.
Messages postés
5
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
7 août 2009

Bonjour,

Pour la progression bar j'ai une petit problème.

Voici mon code :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnStartDownload_Click(object sender, EventArgs e)
        {
            WebClient client = new WebClient();
            client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
            client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);

            // Starts the download
            client.DownloadFileAsync(new Uri("SomeURLToFile"), "SomePlaceOnLocalHardDrive");

            btnStartDownload.Text = "Download In Process";
            btnStartDownload.Enabled = false;
        }
        void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            double bytesIn = double.Parse(e.BytesReceived.ToString());
            double totalBytes = double.Parse(e.TotalBytesToReceive.ToString());
            double percentage = bytesIn / totalBytes * 100;

            progressBar1.Value = int.Parse(Math.Truncate(percentage).ToString());
        }
        void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
        {
            MessageBox.Show("Download Completed");

            btnStartDownload.Text = "Start Download";
            btnStartDownload.Enabled = true;
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void progressBar1_Click(object sender, EventArgs e)
        {

        }

        private void progressBar1_Click_1(object sender, EventArgs e)
        {

        }
    }
}


Et voici ici mon erreur :

Erreur	2	Le nom 'btnStartDownload' n'existe pas dans le contexte actuel	C:\Users\Felix-Etienne\AppData\Local\Temporary Projects\WindowsFormsApplication1\Form1.cs	30	13	WindowsFormsApplication1


Merci Beaucoup !

NewbieJava
Messages postés
72
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
12 août 2009
2
Ca dit assez bien ce que cela veut dire.

Aucun btnStartDownload n'est accessible à partir de la ligne en question de ton code. Tu ne l'aurais pas renommé entre temps ?

Essaye :
sender.Text = "Start Download";
sender.Enabled = true;


sender est là pour ça !

Mathieu.
Messages postés
72
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
12 août 2009
2
Oh pardon, ce n'est pas correct.

C'est valable dans btnStartDownload_Click, mais pas dans client_DownloadFileCompleted ou client_DownloadProgressChanged. Le problème c'est que quand tu c/c ton code les numéros de ligne ne sont pas spécifiés et donc je ne vois pas à quelle ligne l'exception se réfère. Peux tu préciser ?

Mathieu
Messages postés
5
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
7 août 2009

Bonjour,

Merci pour l'aide que tu m'apporte :D

Bon voila j'ai trouvé un code puis il y a aucune erreur mais les fichiers ce télécharge pas :S

Voici mon code

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        WebClient client = null;

        private void selectBouton_Click_1(object sender, EventArgs e)
        {

            if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
            {
                saveTo.Text = folderBrowserDialog.SelectedPath;
            }

        }


        private void downloadBouton_Click_1(object sender, EventArgs e)
        {

            if (Uri.IsWellFormedUriString("http://l2euthopia.fr/launcher/", UriKind.Absolute))
            {
                //Création d'une nouvelle instance de WebClient
                client = new WebClient();

                //On abonne notre instance client à l'évènement de progression du téléchargement
                client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);

                //On abonne notre instance client à l'évènement de fin du téléchargement
                client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);

                //On lance le téléchargement avec les paramètres saisies.
                //Le premier correspond à l'adresse du fichier à télécharger et le second à l'emplacement de sauvegarde
                Uri url = new Uri("http://l2euthopia.fr/launcher/");
                client.DownloadFileAsync(url, saveTo.Text);

                downloadBouton.Enabled = false;      // Rend inaccessible le bouton Télécharger
                downloadBouton.Text = "En cours..."; // Modifie le texte de ce même bouton 

                //Rend accessible le bouton Annuler afin de pouvoir arrêter le téléchargement
                cancelButton.Enabled = true;
            }
            else
            {
                MessageBox.Show("Vous devez saisir une adresse correcte");
            }

        }

        private void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            // Met à jour la position de la barre de progression à partir
            // de l'état d'avancement contenu dans l'attribut ProgressPercentage
            progressBar.Value = e.ProgressPercentage;
        }

        private void reinitialisation()
        {

            //Rend accessible le bouton Télécharger
            downloadBouton.Enabled = true;
            downloadBouton.Text = "Mise a Jour";

            //Rend inaccessible le bouton Annuler
            cancelButton.Enabled = false;

            //Réinitialisation de la barre de progression
            progressBar.Value = 0;
        }

        private void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
        {
            if (!e.Cancelled)
            {
                //Affichage du message de confirmation
                MessageBox.Show("Téléchargement terminé.");
            }
            else
            {
                //Affichage du message d'annulation
                MessageBox.Show("Téléchargement annulé.");
            }

            reinitialisation();
        }

        private void cancelButton_Click(object sender, EventArgs e)
        {
            client.CancelAsync();
        }

        private void saveTo_TextChanged(object sender, EventArgs e)
        {

        }

        private void progressBar_Click(object sender, EventArgs e)
        {

        }



    }
}


Je ne comprend pas pourquoi sa bug :S

J'ai compilé mon projet puis tu peut le télécharger ici

[url=http://www.megaupload.com/?d=0LM9Q4IW/url

Merci !

NewbieJava