Coder Social home page Coder Social logo

santaslittlehelper2 / wow-launcher Goto Github PK

View Code? Open in Web Editor NEW

This project forked from miorey/wow-launcher

0.0 0.0 0.0 4.56 MB

This is an app that downloads and repairs World of Warcraft clients while checking for file corruption using md5 signatures. It also enables the download of addons.

JavaScript 37.03% CSS 9.92% Makefile 1.18% HTML 6.01% Vue 45.68% SCSS 0.18%

wow-launcher's Introduction

wow-launcher

Wow launcher is a downloader for World of Warcraft files

Setup as app

To setup the app you have to setup with your servers values:

{
    "host": "ftp.murlocvillage.com",
    "available_language": ["frFR", "enUS"],
    "default_language": "enUS",
    "patchlist_endpoint": "https://wotlk.murlocvillage.com/api/launcher",
    "end_sound": "murloc.mp3",
    "extension": true
}
  • host is the FTP server where you stored your files.
  • patchlist_endpoint is the root level of your endpoint where are setup your patch requirements.
  • end_sound (optional) is the name of the mp3 file that should be played once the game is downloaded.
  • extension true if json is required at end of file else false (default false)

Test on localhost

In the directory fixtures/json_server you have an example of the server structure. To test it locally you can do it with http-server node package. Install it npm install http-server -g and launch:

http-server -c-1 --cors=Authorization -p 9000 ./fixtures/json_server

Now you will need your Data directory with the language directory ex enUS on the root level of the project. Todo that you can copy it from fixtures/client directory to the project root level.

Files installer structure

The patch-list files are divided in 3 section delete, mandatory and optional.

  • Delete will remove a list of files.
  • Mandatory will download files in a given path
  • Optional will download a list of files required for one option. (The optional section might be rework in the future)

Delete structure

Type: Object Ex:

{
  "delete": {
    "Test.txt": {
      "targetPath": "./Data/Test.txt"
    }
  },
  ...
}

This will delete ./Data/Test.txt from the root path of the launcher executable.

Mandatory structure

Type: Object Ex:

{
  ...
  "mandatory": {
    "Logo_800.avi": {
      "md5": "ad7c1a061ef0bf8b93936f2386a72311",
      "sourcePath": "/mandatory/enUS/Data/enUS/Interface/Cinematics/Logo_800.avi",
      "targetPath": "./Data/enUS/Interface/Cinematics/Logo_800.avi"
    }
  },
  ...
}

This will download sourcePath on the host server in targetPath. Once downloaded a md5 checksum of the downloaded file will be compared with the value of the md5 attribute.

Optional structure

Type: List of Objects The optional files contains mainly graphical improvements. Sometimes these improvements are dispatched in multiple files.

{
  ...
  "optional": [
    {
      "id": "characters",
      "name": {
        "enUS": "Win32 option 1 enUS",
        "frFR": "Win32 option 1 frFR"
      },
      "files": {
        "WOW_Intro_LK_800.avi": {
          "md5": "9445487724a0c399f200c3887420d1f8",
          "sourcePath": "/mandatory/enUS/Data/enUS/Interface/Cinematics/WOW_Intro_LK_800.avi",
          "targetPath": "./Data/enUS/Interface/Cinematics/WOW_Intro_LK_800.avi"
        }
      }
    }
  ]
}

Each options need a unique id attribute, this will be used client side to save the list of optional installed features. The name attribute contains an Object with key the language and value the title in this language (this part may change). The files is as list of objects which has exactly the same structure as Mandatory structure

Remote configuration structure

Some part of the configuration can be store remotely. Today only host and end_sound can be stored remotely.

  ...
  "conf": {
    "host": "ftp.murlocvillage.com",
    "end_sound": "murloc.mp3",
  },

Note that if the same setup is stored locally and remotely. The local one will always be prioritized.

Development

Vue electron documentation

npm install -g @vue/cli

On Windows please execute:

Set-ExecutionPolicy -Scope CurrentUser

and set RemoteSigned as execution policy for all check the value by executing Get-ExecutionPolicy

To install the required packages

npm ci

Compiles and hot-reloads for development

npm run electron:serve

Compiles and minifies for production

npm run electron:build

Lints and fixes files

npm run lint

Customize configuration

See Configuration Reference.

wow-launcher's People

Contributors

miorey avatar dependabot[bot] avatar gramedek avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.