Open Source Launcher With Detailed Tut menu

User Tag List

Results 1 to 2 of 2
  1. #1
    cwkhorne's Avatar Member
    Reputation
    14
    Join Date
    May 2013
    Posts
    24
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Open Source Launcher With Detailed Tut

    What this launcher has the options already implemented for?
    - Delete Cache Folder(working 100%)
    - Install Client Button
    - Version button
    - Update Checker
    - Reload Cache
    - Play Button
    - Hidden Facebook(or other website) button being the credits on the bottom of the launcher.
    - exit button on top right
    - ESC key closes the launcher.
    - works for enUS, enGB, deDE, frFR, ruRU.

    no its probably not the most efficient way to program it but it works for all those out there that don't know how to produce their own launcher.

    now i will walk you through customizing this launcher to your server.

    1. Download/Install Visual Studios C#(i suggest 2010 but thats just me) here is a link to their download page: Download | Microsoft Visual Studio 2012
    - note that it is free after the trial you can register FOR FREE and they give you a activation key for it.

    2. Now that you have downloaded VS C# unzip this project in the project folder documents/visual studio/project(yes i know the name is for CWoW but thats not important your users will never see that part) this .rar also has a client .exe inside to extract a entire 4.0.6 client:]rapidshare.com/files/3308484420/Courageous%20Launcher.rar

    3: now open Visual Studios C# navigate to the Projects folder if it didn't take you there already then open the Courageous Launcher SLN inside the Courageous Launcher Folder.

    4: Ok first we're going to go ahead and edit the visual part of it(i'm just walking through the text and background other than that you're on your own)

    4.A: on the right in your Solution Explorer(if its not open press Ctrl+W,S) now open the Form1.cs
    4.B: It will bring up what the launcher itself looks like, now first thing we need to do is change the Label for the launcher on the top, click on the label Courageous Launcher in red on the top.
    4.C: now you need your properties window open if it is not already open press Ctrl+W,P. now scroll down on the properties window until your see the field "Text" with the text being "Courageous Launcher" just double click the text "Courageous Launcher" and type in what you want it to be then click on the launcher picture off to the left and it should change.
    4.D: now you need to change the text on the bottom so as not to advertise my server on your launcher(unless you want to which i would be grateful) so click on the small red text on the bottom of the launcher and do the same thing as in 4.C

    5: now to change the hidden link button so it doesn't go to my servers facebook page, again if you want you can keep it as is. double click on the text on the bottom of the launcher where you just edited it should open up a new screen for you called Form1.cs(the one without the [Design].

    5.A: now your cursor should be blinking on the front of this line
    Code:
    string facebook = "https://www.facebook.com/CourageousWoW";
    what you need to do is change the url to whatever you want it to be.

    6: ok now click on the form1.cs [design] tab towards the top and now you have to think of a few things if you want them or not.

    6.1: does your server have custom patches and do you need the reload patch button?
    -if not click once on the reload patch button and push your Delete button on your keyboard.
    -if you do follow 6.1.A(only supporting MPQ downloads)
    6.1.A: double click on the reload patch button and it will put your cursor in front of this line
    Code:
    string path, enUS, enGB, deDE, frFR, ruRU;
    6.1.B: now you need to have all of your MPQ's being hosted off of a website or something that your players can download it from[if you do something like rapidshare or something like that then they will have to deal with the website but if its just in the root folder of your website with full access rights then then they won't need to do anything but click the button.
    6.1.C: now you should see this below
    Code:
    if (Directory.Exists(string.Format(enUS + "\\Data\\enUS")))//this if checks for where the realmlist is
                {
                    //WebClient webClient = new WebClient();
                    //webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);//this requests for a completed message to be sent once file is completed
                    //webClient.DownloadFileAsync(new Uri("placelinkhereforthe patch.txt"), path");//this line is what downloads the patches and puts it in the correct directories
                }
                else if (Directory.Exists(string.Format(enGB + "\\Data\\enGB")))//this if checks for where the realmlist is
                {
                    //WebClient webClient = new WebClient();
                    //webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);//this requests for a completed message to be sent once file is completed
                    //webClient.DownloadFileAsync(new Uri("placelinkhereforthe patch.txt"), path");//this line is what downloads the patches and puts it in the correct directories
                }
                else if (Directory.Exists(string.Format(deDE + "\\Data\\deDE")))//this if checks for where the realmlist is
                {
                    //WebClient webClient = new WebClient();
                    //webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);//this requests for a completed message to be sent once file is completed
                    //webClient.DownloadFileAsync(new Uri("placelinkhereforthe patch.txt"), path");//this line is what downloads the patches and puts it in the correct directories
                }
                else if (Directory.Exists(string.Format(frFR + "\\Data\\frFR")))//this if checks for where the realmlist is
                {
                    //WebClient webClient = new WebClient();
                    //webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);//this requests for a completed message to be sent once file is completed
                    //webClient.DownloadFileAsync(new Uri("placelinkhereforthe patch.txt"), path");//this line is what downloads the patches and puts it in the correct directories
                }
                else if (Directory.Exists(string.Format(ruRU + "\\Data\\ruRU")))//this if checks for where the realmlist is
                {
                    //WebClient webClient = new WebClient();
                    //webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);//this requests for a completed message to be sent once file is completed
                    //webClient.DownloadFileAsync(new Uri("placelinkhereforthe patch.txt"), path");//this line is what downloads the patches and puts it in the correct directories
                }
                //WebClient webClient = new WebClient();
                //webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);//this requests for a completed message to be sent once file is completed
                //webClient.DownloadFileAsync(new Uri("placelinkhereforthe patch.txt"), path");//this line is what downloads the patches and puts it in the correct directories
            }
    you need to change this to
    Code:
    if (Directory.Exists(string.Format(enUS + "\\Data\\enUS")))//this if checks for where the realmlist is
                {
                    WebClient webClient = new WebClient();
                    webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);//this requests for a completed message to be sent once file is completed
                    webClient.DownloadFileAsync(new Uri("placelinkhereforthe Data"), path + "\\Data\\");//this line is what downloads the patches and puts it in the correct directories
                }
                else if (Directory.Exists(string.Format(enGB + "\\Data\\enGB")))//this if checks for where the realmlist is
                {
                    WebClient webClient = new WebClient();
                    webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);//this requests for a completed message to be sent once file is completed
                    webClient.DownloadFileAsync(new Uri("placelinkhereforthe patch.txt"), path + "\\Data\\");//this line is what downloads the patches and puts it in the correct directories
                }
                else if (Directory.Exists(string.Format(deDE + "\\Data\\deDE")))//this if checks for where the realmlist is
                {
                    WebClient webClient = new WebClient();
                    webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);//this requests for a completed message to be sent once file is completed
                    webClient.DownloadFileAsync(new Uri("placelinkhereforthe patch.txt"),path + "\\Data\\");//this line is what downloads the patches and puts it in the correct directories
                }
                else if (Directory.Exists(string.Format(frFR + "\\Data\\frFR")))//this if checks for where the realmlist is
                {
                    WebClient webClient = new WebClient();
                    webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);//this requests for a completed message to be sent once file is completed
                    webClient.DownloadFileAsync(new Uri("placelinkhereforthe patch.txt"), path + "\\Data\\");//this line is what downloads the patches and puts it in the correct directories
                }
                else if (Directory.Exists(string.Format(ruRU + "\\Data\\ruRU")))//this if checks for where the realmlist is
                {
                    WebClient webClient = new WebClient();
                    webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);//this requests for a completed message to be sent once file is completed
                    webClient.DownloadFileAsync(new Uri("placelinkhereforthe patch.txt"), path + "\\Data\\");//this line is what downloads the patches and puts it in the correct directories
                }
                WebClient webClient = new WebClient();
                webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);//this requests for a completed message to be sent once file is completed
                webClient.DownloadFileAsync(new Uri("placelinkhereforthe patch.txt"), path + "\\Data\\");//this line is what downloads the patches and puts it in the correct directories
            }
    now you need to replace the placelinkhereforthe patch.txt to the url for the .mpq, if you have multiple MPQ's for them to download then copy and paste this
    Code:
    webClient.DownloadFileAsync(new Uri("placelinkhereforthe patch.txt"), path + "\\Data\\");//this line is what downloads the patches and puts it in the correct directories
    and make sure the url for each MPQ you needed is added in every single if else statement. and now the relaod patch button is done.

    7: now for the download client version i will update this at a later time but right now it is not linked to a folder if you wish to link it to a client your providing(which i advise cause you can put the client + patches in a .exe that extracts them all for the player. then go back to the form1.cs [design] tab and double click the download client button.

    7.1 this code
    Code:
    {
                string path, url;
                url = "fakewebsite.com";
    
                path = Path.GetDirectoryName(Application.ExecutablePath);
                MessageBox.Show("Sorry but this button is disabled until a later version. Thanks.");//this is the line that sends the completed message to the user
                //WebClient webClient = new WebClient();
                //webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Complete);//this requests for a completed message to be sent once file is completed
                //webClient.DownloadFileAsync(new Uri(url), path");//this line is what downloads the 4.0.6 folder and puts it in the current directory
            }
    needs to be changed this this:
    Code:
    {
                string path, url;
    
                url = "fakewebsite.com";
                path = Path.GetDirectoryName(Application.ExecutablePath);
    
                WebClient webClient = new WebClient();
                webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Complete);//this requests for a completed message to be sent once file is completed
                webClient.DownloadFileAsync(new Uri(url), path");//this line is what downloads the 4.0.6 folder and puts it in the current directory
            }
    and you need to change url = "fakewebsite.com"; to be your website instead of fakewebsite.com and wala that is now connected.

    7.2: to make your entire client folder into a .exe to be downloaded and then extracted by users download/install 7-zip Download as well as provided wow.exe so you have a base folder already to be used with a cracked wow.exe inside of it(fresh has nothing but addons inside of the folder + cracked wow to read patches(mpqs))

    7.3 now that you have both of those double click the wow.exe and extract the folder to a specified place.

    7.4 add any mpq's or anything you need your players to have into this folder DO NOTHING ELSE DO NOT RUN THE WOW.EXE THIS IS IMPORTANT.

    7.5 right click the wow folder that contains the wow.exe + data folder including your custom mpq's and click 7-zip "add to archive" now name it what you want it to be and off to the right click on the check box for "Create SFX Archive" then click ok

    7.6 you now have a client folder.exe that extracts all the needed files. when your user runs wow for the first time it will take awhile to kick in and get to the login screen let them know to just be patient the first few times that they run it because it needs to initialize alot of imformation as well as download extra imformation that is needed.

    8: now for the version label on the bottom left. to change it so that it say a different version number off on the right where your solution manager is right click Assemblyinfo.cs and click open.

    8.1 scroll to the bottom and you should see this code
    Code:
    [assembly: AssemblyVersion("1.6")]
    [assembly: AssemblyFileVersion("1.6")]
    [assembly: NeutralResourcesLanguageAttribute("en-US")]
    change the versions to the correct version of your launcher. then you can scroll back up to this code
    Code:
    [assembly: AssemblyTitle("Courageous Launcher")]
    [assembly: AssemblyDescription("Launcher for WoW Private Servers, Open source customizeable for every server.")]
    [assembly: AssemblyConfiguration("")]
    [assembly: AssemblyCompany("Courageous WoW")]
    [assembly: AssemblyProduct("Courageous Launcher")]
    [assembly: AssemblyCopyright("Copyright Ā©  2013")]
    [assembly: AssemblyTrademark("")]
    [assembly: AssemblyCulture("")]
    and change it to whatever you want it to be.

    9: now that your version button is changed you need to make the update checker work properly. so go back to form1.cs [design] and double click update checker. you will see this
    Code:
    private void label8_Click(object sender, EventArgs e)
            {
                MessageBox.Show("Currently Disabled until website is up");
                /*
                string downloadUrl = "";
                Version newVersion = null;
                string aboutUpdate = "";
                string xmlUrl = "";
                XmlTextReader reader = null;
                try
                {
                    reader = new XmlTextReader(xmlUrl);
                    reader.MoveToContent();
                    string elementName = "";
                    if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "appinfo"))
                    {
                        while (reader.Read())
                        {
                            if (reader.NodeType == XmlNodeType.Element)
                            {
                                elementName = reader.Name;
                            }
                            else
                            {
                                if ((reader.NodeType == XmlNodeType.Text) && (reader.HasValue))
                                    switch (elementName)
                                    {
                                        case "version":
                                            newVersion = new Version(reader.Value);
                                            break;
                                        case "url":
                                            downloadUrl = reader.Value;
                                            break;
                                        case "about":
                                            aboutUpdate = reader.Value;
                                            break;
                                    }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    Environment.Exit(1);
                }
                finally
                {
                    if (reader != null)
                        reader.Close();
                }
                Version applicationVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
                if (applicationVersion.CompareTo(newVersion) < 0)
                {
                    string str = String.Format("New version found!\nYour version: {0}.\nNewest version: {1}. \nAdded in this version: {2}. ", applicationVersion, newVersion, aboutUpdate);
                    if (DialogResult.No != MessageBox.Show(str + "\nWould you like to download this update?", "Check for updates", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
                    {
                        try
                        {
                            Process.Start(downloadUrl);
                        }
                        catch { }
                        return;
                    }
                    else
                    {
                        ;
                    }
                }
                else
                {
                    MessageBox.Show("Your version: " + applicationVersion + "  is up to date.", "Check for Updates", MessageBoxButtons.OK, MessageBoxIcon.None);
                }*/
    you need to remove
    Code:
     MessageBox.Show("Currently Disabled until website is up");
                /*
    and the */ from the very end of that section of code. then you need to change this
    Code:
    string downloadUrl = "";
    so that it is like this(again from your root directory in your web hosting ftp)
    Code:
    string downloadUrl = "xmldownloadlinkhere.xml";
    9.1 now that the code itself is fixed you need to make sure your xml on your root of your website is formatted corretly this is exactly how it should be
    Code:
    <?xml version="1.0" encoding="utf-8" ?>
    <appinfo>
    <version>1.5.0.0</version>
    <url>http://www.fiercemodder.com/Fierce%20Modder/v1.5.rar</url>
    <about>Remapped UI. Get License file from me</about>
    </appinfo>
    you need to change the <version>1.5.0.0</version> to the newest version of your launcher, the <about>is what the update is about</about> the <url>is for the updated launcher download url>

    10: now you need to edit is the play button. go to form1.cs [design] double click the play button.

    10.1: you need to switch yourserveriphere
    Code:
    serverdomain = "yourserveriphere";
    to the correct server ip to connect to the server.

    10.2 if your server uses a custom.exe that is distributed to your players and named something other than wow.exe like eternion_13635.exe then you also need to change wow.exe
    Code:
    wow += "\\wow.exe";
    to
    Code:
    wow += "\\eternion_13635.exe";
    11: now to edit the background image of the launcher go to the form1.cs [design] tab and click in the middle of the launcher now on the right where your properties box is scroll up/down until you find the BackgroundImage which should say System.Drawing.Bitmap and click on System.Drawing.Bitmap and then click the small box to the right that appears.

    11.1: click import on the new screen and browse and find your new background image.

    12: to change the icon of the launcher right click on "Courageous Launcher" in the Solution Explorer and click properties. a tab named Courageous Launcher should appear with a few new tabs on the left.

    12.1: click on Applications tab if its not already chosen and then look down to the icon: with favicon.ico in the text box click on the box to the right of this and browse and choose your new icon.(MUST BE A .ICO) but you can find a converter for it online easily.

    13: push F5 to debug and compile the launcher and it should change everything then close the launcher that pops up and close visual studios C# and navigate to the projects folder/Courageous Launcher/Courageous Launcher/Bin/Debug and there is your .exe to distribute to your players.


    meh that was a ton of typing but there you guys go for those that don't know how to create their own launcher. it's not optimized as best as possible but it works. also first release here, figured i'd stop being a leecher and release something and this is the only thing i have currently thats 100% mine so there you guys go. hope it helps at least some people.

    These ads disappear when you log in.

  2. #2
    Krack3n's Avatar Member
    Reputation
    11
    Join Date
    Feb 2010
    Posts
    101
    Thanks G/R
    231/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    +Rep Will try this out.

    Can't seem to get the download link to work.
    Last edited by Krack3n; 10-21-2013 at 01:29 PM.

Similar Threads

  1. Wow hack for 2.3.3 [Open Source] Delphi
    By robotkid in forum WoW Memory Editing
    Replies: 15
    Last Post: 05-23-2018, 10:53 PM
  2. [Release][Source] OpenSource Launcher with autoupdater
    By Scorpiones in forum WoW EMU Programs
    Replies: 4
    Last Post: 07-31-2011, 12:06 PM
  3. Can't Open My Server With My IP
    By kalkar9 in forum World of Warcraft Emulator Servers
    Replies: 2
    Last Post: 12-24-2007, 01:17 PM
  4. Making a transparant scan bar with animation tut (Signature)
    By windybone in forum Art & Graphic Design
    Replies: 30
    Last Post: 11-06-2007, 02:59 AM
  5. Glider Status in your signature *OPEN SOURCE*
    By Marlo in forum World of Warcraft Bots and Programs
    Replies: 8
    Last Post: 09-16-2007, 05:12 PM
All times are GMT -5. The time now is 10:40 AM. Powered by vBulletin® Version 4.2.3
Copyright © 2021 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2021 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search