Jan18101997

Lightweight Exile Downloader and ArmA 3 Launcher

39 posts in this topic

You all hate it to update your current Exile installation without installing any heavy Software?

Then this is the way to go!

 

So I am currently working on a small lightweight Exile Launcher and Downloader and i would like to ask you about your opinion on my small project. It Downloads all data via http!

You can download it here: Link (requires .NET 4) (note if your download is to slow i cant do anithing about it it is not my server)

Windows 8/8.1/10 skip SmartScreen: Link

Changes: Link

In case you do not trust me or have any ideas (i can undersand this) here you have the source code: GitHub (all Controls are designed by me feel free to use them in your Project)

VirusTotal: Link

Some Screenshots:

Spoiler

Main Menue:

main.thumb.PNG.3a7ea38de662fcba95ef1f0fc

 

Direct Connect means directly connect to a specified server.

Install Page:

download.thumb.PNG.52f2d115a5dee8b508e73

Install Page with MultiMod:

download_multi.thumb.PNG.202e74b9688c8d3

See below for more infos how to add this for your own Server.

 

Settings:

settings.thumb.PNG.6a54404c4808da9bf8749

Direct connect may not work with domains haven't tried it

 

 

 

You want to develop something? This is how you can open this code in VisualStudio:

Spoiler

If you want to get into programming i can recommend https://code.org and http://www.sololearn.com  

 

1. Download sourcecode:

  Navigate to my GitHub page and click on "Download ZIP"

  git.thumb.PNG.1d050217f67a0443d714680a49

2. Unzip ZipFile

3. Download DotNetZip and save the needed dll File (DotNetZipLib-DevKit-v1.9.zip\zip-v1.9\Debug\Ionic.Zip.dll)

    ziplib.thumb.PNG.6ef110b86ce3a3b938331ba

4. Place it somewhere where you can find it.

5. Open up "Exile Launcher\Exile Launcher.sln"

6. Open the Reference group inside the Solution Explorer and remove Jan18101997.GUI.Controlls and Ionic.Zip

  solutionref.thumb.PNG.a44784249895d39465

7. Add References

  a. Rightklick on References and click "Add Reference...".

      Click on Browse and open the "Ionic.Zip.dll" file.

      browse.thumb.PNG.58164f0fccc074e36a15f7d

b. Navigate to Solution -> Projects and check Jan18101997.GUI.Controlls

    refjan18101997gui.thumb.PNG.3dda23d84975

  Click Ok

8. You are basically Done... Happy developing ;)

PS.: Make sure to download Exile, rename it as exile.zip and place it inside bin/Debug/exile.zip

 

(tested in VisualStudio 2013 Pro)

 

Project Info:

Spoiler

If you just want to change Something like the DirectConnect settings or the links have a look at CustomConfig/Settings.cs and change it the way you want it to be

 

How is the Project build up?

You basically have 3 folders inside your Solution Explorer (CustomConfig, GUI, Resources) there is everything you need to know.

CustomConfig -> contins all kinds of config options for serveradmins like setting a persistent DirectConnect and links to Teamspeak, Forum and Twitch. It also contains a About.txt file whitch has all license infos and other stuff to display inside the about frame.

GUI and GUI.Pages -> Contain all GUI elements like Windows, Pages, Klickevents, etc.

Resources -> contains all images used in this Project

 

How does the navigation thing work?

It is simple! If you start you application it will create a new instance of GUI.MainWindow and calls the constructor inside GUI/MainWindow.xaml.cs. Inside the contructor are thes methods InitializeComponent();, InitPages();, InitGamePath();, CheckGamePathPermissions();.

  InitializeComponent(); -> basic C# WPF Gui stuff and things

  InitPages(); -> Initializes all pages to navigate. Each page needs a MainWindow parameter it is in all cases this. On the end it will show a page of type pageMainMenue Navigate(typeof(pageMainMenue));

  InitGamePath(); -> checks if the Gamepath was found if not trys to find a new one or asks the user for defining one.

  CheckGamePathPermissions(); -> checks for WriteAccess inside the GamePath

But how doese it navigate? this is simple earlier we passed a MainWindow type to all Pages this means all pahes can get access to this MainWindow instace and call Navigate(typeof(<page>)); this will set the page to display inside the main frame. It also adjusts the Width and Height to match the Page size.

 

What things do i have to edit?

Typically just CustomConfig/Settings.cs. But if you want to do more have a look at the other files I cant realy help you with them just have a look through them and try to do your best...

 

Adding Multiple Mods:

This is one of the new fetures to allow you to add multiple mods/maps for examlpe namalsk. You just have to open /Calsses/Mods/ and add a new Class called something like ModNamalsk. This class has to inherit from IMod you have to implement all needes methods (rightklick on class ModNamalsk : IMod) and chose Implement Interface->Implement Interface Explicitly. 

From IMods:

 
Spoiler      

 

        /// <summary>
        /// A ID string just pure text like exilemod Wrong: @Exile, exile mod,...
        /// </summary>
        /// <returns></returns>
        string getModID();

        /// <summary>
        /// Mod Name
        /// </summary>
        /// <returns></returns>
        string getModName();

        /// <summary>
        /// Arma3 Mod start paramaeter like @potatopack
        /// </summary>
        /// <returns></returns>
        string getModParameter();

        /// <summary>
        /// Dowload path to mod something like trains.com/potatopack-<VERSIONSTRING>.zip make zure to use <VERSIONSTRING>
        /// </summary>
        /// <returns></returns>
        string getDownloadPath();

        /// <summary>
        /// Used to get the newes version of the mod later it will replace <VERSIONSTRING>
        /// </summary>
        /// <returns></returns>
        string getModVersion();

 

 

after you implementet all your code and settings your calss should look like this

 
Spoiler

 

    class ModNamalsk : IMod
    {
        string modeVersion = null;

        string IMod.getModID()
        {
            return "namalskmods";
        }

        string IMod.getModName()
        {
            return "Namalsk";
        }

        string IMod.getModParameter()
        {
            return "@Namalsk";
        }

        string IMod.getDownloadPath()
        {
            return "http://ThisIsTheRealNamalsk.download/@namalsk-<VERSIONSTRING>.zip";
        }

        string IMod.getModVersion()
        {
            if (modeVersion != null) //if we already have a version dont get it again
                return modeVersion;

            WebClient wc = new WebClient();
            string data = wc.DownloadString("http://ThisIsTheRealNamalsk.download/currentVersion.html");

            modeVersion = data;

            return data;
        }
    }

 

 

You just need to register your mod in /CustomConfig/Settings.cs at line 32 public static readonly IMod[] Mods = { new ModExile(), new ModNamalsk() }; 

download_multi.thumb.PNG.202e74b9688c8d3

 

 

Installer:

Inside the project is a Installer includet. If you want to add any custom files like a new dll just add it as a Link to the Installer/Files folder.

Make sure you change the build action to recourse.

 

Remember:

Do NOT remove or change anything from CustomConfig/About.txt just add your stuff!

Make sure to folow the license ruels!

 

PS: if you made some improvements make sure to push them into the git.

 

 

 

License: 

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/.

 

Edited by Jan18101997
10 people like this

Share this post


Link to post
Share on other sites

From a GUI perspective, looks nice :) Well done.

Had a quick look through the code, nice and clean :D

++

2 people like this

Share this post


Link to post
Share on other sites
Advertisement

Looks great! 

 

what would really be nice is allowing Server owners to enter their own details server links, website, team-speak ect, making this the the Main EXILE launcher for every one to use! 

Edited by William =D

Share this post


Link to post
Share on other sites

Adding Mods would be nice, Example CUP Weapons, Bornholm..etc. 

I think it would be easier for a player if it was only using a stored location of files that you have access to (similar to any cloud service ect) , to keep the files the same as per the server files? 

 

but never the less, more features are always great! 

Share this post


Link to post
Share on other sites

Correct. We have a repo and currently using Arma 3 Sync to allow them to upload the mods to their PC. But a custom tool would be useful. 

Share this post


Link to post
Share on other sites

ya it could be werry nice if you could dowload mods trough it ...... either from a fixede possition or from the local servers ..... :-)

But looking nice and easy to use... Good work

Edited by [RW] DaCoon

Share this post


Link to post
Share on other sites
Advertisement

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.