Jump to content
La fin ?! Elle est là ! ×
×
×
  • Create New...

Uplauncher avec mise à jour et news


Wolfae
 Share

Recommended Posts

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

Link to comment
Share on other sites

  • Replies 25
  • Created
  • Last Reply

Top Posters In This Topic

  • 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

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

  • 4 weeks later...
  • 3 months later...
  • 5 months later...

Merci pour ce partage , mais il y a pas moyen d'avoir directement le scrip ? car je me retrouve toujours avec des erreurs le plus drole c'est que c'est sur les Msg ! =)

De plus vu que le code est en open source , je ne vois pas ou est le problème a mettre directement en vs

Tu en penses quoi Wolfae ?

Link to comment
Share on other sites

  • Retraité

Ce tutoriel est adressé aux personnes qui s'y connaissent un minimum en vb pour le mettre en œuvre, donc suivez des tutos pour apprendre les bases du langage, et ne prenez pas ce post pour AQS ...

Link to comment
Share on other sites

  • 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 :

Link to comment
Share on other sites

  • 1 year later...

Bonsoir, suite as de nombreuse lecture je n'est pas trop compris comment faire le Uplauncher 

Si quelqu'un pourrais bien m'aider sa sera super simpa 

Si cela ne vous dérange pas merci de m'ajouter sur Skype : xTii-Mallet

Je vous remercie par avance ! 

 

Cordialement,

Link to comment
Share on other sites

  • Retraité

Les sujets des tutoriels ne sont pas le bon endroit pour demander de l'aide.

 

Va dans la section prévue à cet effet et détaille un peu plus ton problème ou l'endroit où tu bloque afin que l'on puisse t'aider.

java style =)

Link to comment
Share on other sites

  • 2 years later...
 Share



Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.