Jump to content

Metin2 Patcher with Electron

Recommended Posts

  • VIP

M2 Download Center

Download Here ( Internal )


252310GreenCheck.pngGitHub Repository: https://github.com/Karbust/Metin2-Patcher-Electron

            The tutorial bellow is also available on the repository.



A simple metin2 patcher made in Electron with React and TypeScript. The file verification is made with SHA256.


Getting Started

Install NodeJS: https://nodejs.org/en/download/

Install Yarn: https://yarnpkg.com/getting-started/install

Clone the repository:

git clone https://github.com/Karbust/Metin2-Patcher-Electron

Install the dependencies:

yarn install

Edit src/config.ts with your own values. Change resources/icon.png with your own logo (should be at least 256x256).

Available Commands

Command Purpose
yarn run start Starts the React App (aka Frontend) in development mode.
yarn run build Builds a production ready React bundle.
yarn run electron-start Starts the Electron App.
yarn run electron-pack Builds a production package of the app.
yarn run lint Check for linting errors.
yarn run lint-fix Fixing some linting errors.

About the Patcher

This project was made with the intend of learn more about Electron, something I wanted to do for a while.

If the folders don't exist, they'll be created. If the files don't exist they will be downloaded.

The patcher checks the local files and if their checksum mismatches the remote checksum, they will get downloaded.

This patcher runs the downloads asynchronously, this means it will download multiple files at the same time.

The entire project is made in React and Electron both with TypeScript. For CSS was used TailwindCSS.


After editing everything you must use the command yarn run electron-pack to build the application.

It will build 2 files inside the release folder:

  • Metin2 Patcher Electron-X.X.X-win.zip
  • metin2_patcher_electron.exe

The first file is the full bundle zipped that can be extracted to the client folder (after removing the 2 unnecessary LINCENSE files). DON'T USE THIS IF YOU ALREADY HAVE THE CEF BROWSER ON THE CLIENT.

The second file is also zipped but will be extract to a temporary folder during runtime (takes about 3 seconds to fully open) and clean after itself when it closes. This is the way if you can't perform the first option.

Development Testing

In case there isn't the possibility to use a local webserver (like Apache with Xampp, or Wampp) it may be necessary update the CORS on your remote server.


Go to the configuration file for the patcher host and add this line:

add_header 'Access-Control-Allow-Origin' 'http://localhost:3000';

For Apache

Go to the configuration file for the patcher host and add this line:

Header set Access-Control-Allow-Origin "http://localhost:3000"

It may also be needed to activate the headers module:

a2enmod headers

Web Server

Using this NodeJS script, you shall place the client files inside a folder called files and run the script.

It will generate the JSON file with the names, sizes and checksum hash of the files.





If you have any issues, post here or open an issue on the repository: https://github.com/Karbust/Metin2-Patcher-Electron/issues

  • Love 8
  • Good 2


Metin2 Icon Database

Link to comment
  • VIP
Posted (edited)

3, 2, 1




what a surprise you clicked here


and here


and ofc, it will be shared on just4scam too


love you






Edited by I3ooI3oo
  • Lmao 1
Link to comment
  • Administrator
1 minute ago, I3ooI3oo said:

3, 2, 1

  Hide contents


  Hide contents

what a suprise you clicked here

  Hide contents

and here

  Reveal hidden contents





Running Man Happy Dance GIF by MOODMAN


Link to comment
  • 2 weeks later...
  • 2 weeks later...
  • VIP
Posted (edited)


Added multi-language support. Instructions can be found on the README.



It ships with support for two languages, English (default) and Portuguese. These can be used as examples to add more languages.

To add more languages, you must edit both src\i18n.ts and src_electron\i18n.ts.

Three things are needed, import the translation file (.json) that must go inside the folder localization\, and add the language on resources and supportedLngs.

Do not edit the placeholders ( {{ }} ) when creating a new language, otherwise it won't work as expected.

To add flags edit the file src\components\Buttons.ts. There are flags for every language that are supported by the official, just need to add the button.

Edited by Karbust
  • Love 2


Metin2 Icon Database

Link to comment

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

  • Create New...

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.