Aller au contenu

Uplauncher avec mise à jour et news


Wolfae

Messages recommandés

Bonjour/Bonsoir à tous.

 

Tutoriel fait par demande de kiraxel. Section Programmation -> .Net Framework -> C# -> [Tuto]Demandez, et je le ferai.

 

Note: Ce tutoriel étant majoritairement des bouts de codes expliqués, il n'y aura pas d'images, simplement parce qu'il n'est pas destiné à des gens qui viennent juste d'installer Visual Studio ou leur IDE favori.

 

Ce tutoriel est destiné aux intermédiaires (Plus ou moins, pas vraiment besoin de grandes connaissances, le tutoriel est bien guidé, mais je préfère que vous compreniez tout :P) et a pour but de créer un Uplauncher, avec une mise à jour automatique (Avec barre de pourcentage) et des news.

 

Pour cela, nous allons d'abord créer notre projet que l'on va nommer UplauncherTuto.

 

Mettez-y :

- Un Listbox (Pour contenir les news). [Nom : lbNews]

- Un bouton Jouer. [Nom : btnPlay]

- Un bouton Site. [Nom : btnSite]

- Une barre de progrès. (Progressbar) [Nom : progressBar]

 

Nous n'allons pas parler de design cette fois-ci, mais seulement du code behind.

 

I ) Mise à jour Automatique

 

Bref! Commençons.

D'abord, allez vers la méthode créée au début, et rajoutez-y :

 

btnPlay.Enabled = false; // L'utilisateur ne peut plus cliquer sur jouer jusqu'à ce qu'on remet cette valeur à true.

 

Bien, maintenant, l'utilisateur ne peut pas cliquer sur jouer avant qu'on ne vérifie la version actuelle, et la version du client.

 

Ajoutez une directive using :

 

using System.Net;
using System.IO;

 

Et une variable string private pour toute la classe :

 

private string VersionActuelle;

 

Nous allons créer une méthode, plus précisément une bool :

 

private bool VerifyVersion()
{
 StreamReader VersionReader = new StreamReader("ULDATA/version.txt");
 string VersionClient = VersionReader.ReadToEnd(); // Lit le fichier version.txt dans le dossier ULDATA (Uplauncher Data)
}

 

Pour l'instant, on peut lire la version du client. Maintenant, on doit lire la version actuelle, ce qui requiert une nouvelle méthode pour garder un code propre.

 

private string ReadRemoteTextFile(string Url)
{
 Uri uri = new Uri(Url); // Nouvelle URI à partir du paramètre, Url.
 WebRequest wRequest = WebRequest.Create(uri); // On crée une requête.
 WebResponse wResponse = wRequest.GetResponse(); // Sa réponse.
 Stream ResponseStream = wResponse.GetResponseStream(); // En stream. 
 StreamReader sReader = new StreamReader(ResponseStream); // Un "lecteur" de stream..
 string Temp = sReader.ReadToEnd(); // Qui lit le stream et nous donne le string. 
 return Temp;
}

 

Voilà. Cette func nous retourne un string qui est le contenu du fichier texte. Continuons ensuite avec VerifyVersion, en y ajoutant :

 

VersionActuelle = ReadRemoteTextFile("http://www.votresite.com/maj/version.txt"); // Lien à modifier
if(VersionActuelle == VersionClient)
 return true;
else
 return false;

 

OK. Nous avons fait, désormais, la vérification de la version. Il nous manque une chose : Le téléchargement en soi! Alors, nouvelle méthode encore une fois.

 

private void Download(string Url, string DownloadTo)
{
 WebClient wClient = new WebClient(); // On crée un WebClient, qui se chargera du téléchargement.

 wClient.DownloadProgressChanged += new                                                                                               DownloadProgressChangedEventHandler(UpdateProgressChange);   // On lui ajoute le handler de l'évènement.

 wClient.DownloadFileCompleted += new System.ComponentModel.AsyncCompletedEventHandler(UpdateDone); // L'autre évènement (Complétion)

 wClient.DownloadFileAsync(new Uri(Url), DownloadTo); // On commence le téléchargement depuis l'URI       spécifiée, et le fichier sera mis dans le chemin DownloadTo.

}

 

Vous allez sûrement me demander où se trouve UpdateProgressChange et UpdateDone. Et bien, les voilà!

 

UpdateProgressChange :

C'est là où on modifie la barre de progrès.

 

private void UpdateProgressChange(object sender, DownloadProgressChangedEventArgs e)
{
 progressBar.Value = e.ProgressPercentage; // Simple!
}

 

Maintenant, UpdateDone :

C'est là où on notifie le joueur que la mise à jour est terminée, et qu'il peut désormais jouer. Mais aussi, on modifie le fichier version.txt.

 

private void UpdateDone(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
 MsgBox.Show("Mise à jour terminée! Vous pouvez désormais jouer.", "Notification"); // Message.
 btnPlay.Enabled = true; // Vous vous souvenez de ça? On le remet à true. 
 //NOTE : Si vous avez un .rar à télécharger, et vous voulez l'extraire, utiliser SharpZipLib. Je ne ferai pas de tuto pour l'instant sur cela. 
 File.Delete("ULDATA/version.txt");
 StreamWriter sWriter = File.CreateText("ULDATA/version.txt");
 sWriter.Write(VersionActuelle); 
}

 

Et voilà! Mise à jour finie. Passons aux NEWS.

 

II ) News

 

Requis : MySql.Data.Dll - Ajout d'une référence à MySql.Data.Dll [Google it]

 

D'abord, ajoutons une directive using :

 

using MySql.Data.MySqlClient;

 

Et ensuite, nous allons ajouter une variable string private pour toute la classe :

 

//A placer juste après le { de class.
private string TheConnectionString = "Server=AddresseServeur;Database=NomDeLaBDDNews;Uid=NomdUtilisateur;Pwd=MotDePasse;";

 

Oui, vous devez entrer l'addresse de votre serveur, le nom de la BDD, le nom d'utilisateur, et le mot de passe.

 

Bref. Avançons. Une autre méthode :

 

private List ReadNews()
{
  string SqlText = "SELECT * FROM nom_table"; // Texte de la commande SQL,
  List Templist; // String list dont on aura besoin.
  MySqlConnection SqlConnection = new MySqlconnection(TheConnectionString);
  MySqlCommand SqlCommand = new MySqlCommand(SqlText, SqlConnection);

  MySqlDataReader result = SqlCommand.ExecuteReader(); 

  while (Result.Read())
  {
    Templist.Add((string)Result["titre"]); // Ajoute, dans la liste, le titre. "titre" à changer.
  }

  return Templist;
}

 

OK. Plus qu'une seule chose...

 

Revenons à la première, toute première méthode, celle générée par Visual Studio à la création de projet, et ajoutons-y, au tout début :

 

List DataSrc = ReadNews();
lbNews.DataSource = DataSrc;
// Ca, c'est pour les news! ^

 

Ajoutez, après btnPlay.Enabled = false, ceci :

 

if (VerifyVersion())
  btnPlay.Enabled = true; // Version actuelle, OK!
else
  Download("lien", "maj.rar"); // Télécharger si la version n'est pas actuelle

 

Bien! Mise à jour, et news terminés entièrement.

 

III ) Trucs

 

Maintenant, plus qu'à double-cliquer sur Jouer, et double-cliquer sur Site. Ca nous donnera les méthodes pour l'évènement clic de chacun.

 

Pour celui de jouer, on ajoute :

 

System.Diagnostics.Process.Start("dofus.exe");

 

Et pour celui de Site, on ajoute :

 

System.Diagnostics.Process.Start("http://www.votreserveur.com/");

 

Maintenant, pour la méthode de début, on ajoute avant tout ce qu'il y a écrit :

 

btnPlay.Click += new EventHandler(btnPlay_Click);
btnSite.Click += new EventHandler(btnSite_Click); 

 

ET! On aura fini, notre Uplauncher.

 

Voilà, j'espère que le tutoriel est compréhensible, je suis assez fatigué là :b Mais j'espère qu'il a été utile!

 

Cordialement,

~ Netwolf /C# Dev/

Heaven Team 2012

Non mudera, potius mori quam foedari.

 

Connaissances : C#, VB.net, JavaScript, PHP

Libre service.

Lien vers le commentaire
  • Réponses 25
  • Created
  • Dernière réponse
  • 1 month later...

Ce tutoriel est destiné aux intermédiaires

 

J'ai déjà réalisé plusieurs petits logiciels/launcher avec Visual Basic donc je ne me considère pas comme un débutant.

 

(Plus ou moins, pas vraiment besoin de grandes connaissances, le tutoriel est bien guidé, mais je préfère que vous compreniez tout Tongue)

 

Personnellement je ne trouve pas qu'il est bien guidé, il y a des lignes de codes un peu n'importe où. Celui qui ne connait pas beaucoup le principe d'une maj avec VB n'y comprendra rien, même s'il est expert dans le domaine. Il n'y a aucune explication sur le code (son rôle...). Ce n'est qu'un avis personnelle

Lien vers le commentaire

Ce tutoriel est destiné aux intermédiaires

 

J'ai déjà réalisé plusieurs petits logiciels/launcher avec Visual Basic donc je ne me considère pas comme un débutant.

 

(Plus ou moins, pas vraiment besoin de grandes connaissances, le tutoriel est bien guidé, mais je préfère que vous compreniez tout Tongue)

 

Personnellement je ne trouve pas qu'il est bien guidé, il y a des lignes de codes un peu n'importe où. Celui qui ne connait pas beaucoup le principe d'une maj avec VB n'y comprendra rien, même s'il est expert dans le domaine. Il n'y a aucune explication sur le code (son rôle...). Ce n'est qu'un avis personnelle

C'est du C# pas du VB.

 

Lien vers le commentaire
  • 4 weeks later...
  • 3 months later...
  • 5 months later...
  • 1 year later...

Salut, désolé je remonte le topic, mais pourquoi ne pas avoir fait un système qui check si le fichier existe ou non, s'il n'existe pas, on va le télécharger.

Et un cryptage en MD5 des infos du fichier, nom, tailles, extension, et un check de celui ci via un .xml qui référence tout les fichier du jeu. Si le MD5 du fichier du jeu n'est pas le même que celui du .xml télécharger, c'est que le fichier n'est plus a jour (logique taille différente par exemple) donc on le télécharge

Partages :

Projets :

Lien vers le commentaire
  • 1 year later...
  • 2 years later...

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant


  • Flux d'Activité

    1. 0

      A la recherche de traducteurs!

    2. 2

      Plugin - Vote4Diamondz

    3. 24

      Rodnia2 | PVM | International | 3k + joueurs | Langues multiples (y compris FR) | le serveur 2 ouvre le: 13.02.2021

    4. 1

      L'E3 2021, on en parle !

    5. 0

      CelestiaMT2 | Recherche joueurs/testeurs/

  • En ligne récemment

    Aucun utilisateur enregistré regarde cette page.

×
×
  • Créer...

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.