• 🎉 Hey there! I've just launched my brand new server voting platform — Metin2 P Servers 🚀

[ Preview ] AutoPatcher v1.0 (Python Src Fully Customizable)

[SA] - TheSeed Project
Member
Sep
Threads
4
201
10
18
HubMoney
534
logo-png.2639


Hello,
My nick is
free-discord-logo-icon-download-in-svg-png-gif-file-formats--social-network-media-communicatio...png


Today I'm here to share a preview of my AutoPatcher.
There are many out there on the forum, but in my opinion, they are too complicated, and I also wanted to practice.

⚠️ It's not intended for end-user use (with a few improvements it could be) but I developed it only for my beta testers. ⚠️




🛠️ Server Side:
📂 Pack: (with updated file ready to download)
1735046639694.png
📁 Patcher: (with patch_list.json)
JSON:
{
    "patch_14.8": [
        {
            "locale.data": {
                "hash": "0b9dc31f07064c805e1cbe8b02e1676cbf460ac6c1d29f3012c5e21d80cdc33f",
                "size": 53122560
            },
            "locale.idx": {
                "hash": "3d73f7f25be0793d91e451f150c60e1668db7085bb06b10c77f10c32530ea388",
                "size": 72956
            },
            "root.data": {
                "hash": "e172c66a46e17e6fe474b6668a1f20b3f331289d067058905617d8f848717523",
                "size": 3738112
            },
            "root.idx": {
                "hash": "2ed323cc0c6fbadbd7ca4b1174e9daa15d870b7c28139df5f74c225e7882b90f",
                "size": 15156
            }
        }
    ],
    "exe": {
        "Metin2Release.exe": {
            "hash": "d9ec724b2aa89fbe9ddbc67521d92e992beed98e4f7d7bbfd7a1301bb87cee39",
            "size": 6532608
        }
    }
}

🛠️ Client Side:
📜Version.txt (with current client version)
📂 Pack (with eix/epk*)
🤖 Patcher.exe

❓ How it's work?

The patcher operates by connecting to a server to download a patchlist, which contains the version numbers and file hashes of the latest updates.
Then compares these details with the version numbers and hashes of the files present in the client, If discrepancies are found either in the version numbers or file hashes the patcher automatically downloads the necessary updated files from the server to ensure the client is up- to-date.


❓ How do I generate the patchlist?

🛠️ Admin Side:
I also developed a script that processes the files inside the update folder.
It calculates their size and hash values and then generates a JSON file, which is ready to be uploaded to the server for managing updates efficiently.

📜 PatcherMaker.py (patchlist maker)
📂 Update (folder with new file updated)

✨
The project is lightweight, fast, and efficient.
It has been compiled into an executable (.exe) and is fully customizable.


🖼️ All images/icons are in the Images folder
⚙️all addresses, including slide links are fully customizable in a config.py file

🤙
After due testing i will be happy to release it if anyone might be interested.
There are definitely more professional tools, but this is simple and super fast to set up,
great for beta phases or to keep the server updated for friends.



LESGOSKY 🇮🇹