-
Sending Patches To The Client Through The WoW Application
With Schlumpf's guidance I was able to successfully implement a way to send custom patches to the client through WoW rather than a custom launcher.
The implications for this are quite clear. It allows one to:
- Require the latest patch to login.
- Send incremental patches.
- Send any data.
I wrote up a guide to do this which Schlumpf has heavily edited to create a, hopefully, useful publication.
The link to this can be found here: PDF Link
~Harry & Schlumpf
Edit: 21/06/2014:
You will have to edit the binary to allow unsigned patches: [TOOL] Replace binary patterns in files with given data
This is my code changes for a more recent TrinityCore version in order to get patching to work: Dropbox - 404
You can send a Blizzard Installer or a Blizzard Downloader that downloads a Blizzard Installer to install your custom patch data. See:
https://github.com/stoneharry/Blizzard-Updater
https://github.com/stoneharry/Blizzard-Downloader
Last edited by stoneharry; 02-25-2019 at 01:10 PM.
-
Post Thanks / Like - 1 Thanks
Krack3n (1 members gave Thanks to stoneharry for this useful post)
-
Active Member
This is a very nice script, but can you update this script for the new Trinitycore Version
-
As I've probably told Harry, this is pretty much as revolutionary as a release can get towards the co-operation of emulation and model editing. (Badly formatted sentence, forgive me).
I will now go and +rep you both, amazing work.
-
Private
Nice, perfekt works.
but i have a question. So i will testing this, also have i the code rewriten in a new trinity core repo. I deletet the old functions and writen the new.
Than, i finish and will compile. here is me notice, that in the diff script little functions missing. or i'm stupid and found his not?
okey, look at the funktion gethash, here access to the member first and second. so i looked at the typedef struct Patch_info. Here is no first, no second.
i hope your can help me
and sorry for my bad english^^
-
Contributor
Originally Posted by
Xel
As I've probably told Harry, this is pretty much as revolutionary as a release can get towards the co-operation of emulation and model editing. (Badly formatted sentence, forgive me).
I will now go and +rep you both, amazing work.
Agreed. This thread needs way more lovin
-
Originally Posted by
sevi
Nice, perfekt works.
but i have a question. So i will testing this, also have i the code rewriten in a new trinity core repo. I deletet the old functions and writen the new.
Than, i finish and will compile. here is me notice, that in the diff script little functions missing. or i'm stupid and found his not?
okey, look at the funktion gethash, here access to the member first and second. so i looked at the typedef struct Patch_info. Here is no first, no second.
i hope your can help me
and sorry for my bad english^^
The TrinityCore patch provided was for a older version of WoW (3.0.3 I believe - quite a while ago). However, nothing much has really changed between then and now regarding the handling of patches, so it should be a simple matter of implementing the same concept if you have some C++ knowledge (or any real programming knowledge since it's just reorganising code).
-
Private
Jea. The TC patch works now.
What i now have, the patcher load the mpq patches, be he sends this not.
i rename the mpq so, version-locale.mqp(example, 12340-deDE.mpq) so. this load the patcher, i will loggin and they doesn't send.
i will try this, with a wow version 3.3.5a and 2.4.3.
or must the mpq any specific files or other have?
-
Originally Posted by
sevi
Jea. The TC patch works now.
What i now have, the patcher load the mpq patches, be he sends this not.
i rename the mpq so, version-locale.mqp(example, 12340-deDE.mpq) so. this load the patcher, i will loggin and they doesn't send.
i will try this, with a wow version 3.3.5a and 2.4.3.
or must the mpq any specific files or other have?
If you get no error message and log straight in -> you server version matches your client version, so the server lets them in and does not check for patches to send to update the client to the right build. You need to change the servers minimum allowed build.
AuthCodes.h
Code:
#define POST_BC_ACCEPTED_CLIENT_BUILD {12340, 11723, 11403, 11159, 10571, 10505, 10146, 9947, 8606, 0}
#define PRE_BC_ACCEPTED_CLIENT_BUILD {5875, 6005, 0}
12340 = 3.3.5a
If you get an error message but no patch sends -> You did not implement it correctly.
Last edited by stoneharry; 05-27-2012 at 02:08 PM.
-
Private
Okey. i change the server version :
Code:
#define POST_BC_ACCEPTED_CLIENT_BUILD {12345, 12340, 11723, 11403, 11159, 10571, 10505, 10146, 9947, 8606, 0}
when i loggin with a 3.3.5a wow, his doesn't send a patch. or understand i here what wrong?
the mpq in the patch folder i give this name: 12345-deDE.MPQ and a mpq: 12340-base.MPQ
i think, this is the right name? when i start the authserver, he add the two mpqs.
when i understand your right, when the authserver not send the patch, ich have the patch(for authserver) not correctly implement?
-
Originally Posted by
sevi
Okey. i change the server version :
Code:
#define POST_BC_ACCEPTED_CLIENT_BUILD {12345, 12340, 11723, 11403, 11159, 10571, 10505, 10146, 9947, 8606, 0}
when i loggin with a 3.3.5a wow, his doesn't send a patch. or understand i here what wrong?
the mpq in the patch folder i give this name: 12345-deDE.MPQ and a mpq: 12340-base.MPQ
i think, this is the right name? when i start the authserver, he add the two mpqs.
when i understand your right, when the authserver not send the patch, ich have the patch(for authserver) not correctly implement?
D: Why you no understand this.
At the moment your code will accept client version 12340. This is patch 3.3.5a. So it won't even begin to look for patches to send to the client.
Furthermore the patches should be in your patch folder and named versionlogcallity.mpq, e.g:
12340enGB.mpq to send that patch to a 3.3.5a enGB client.
-
Private
ahh okey. with my changes, the code will accept client with a version 12345.
mhm really with out a - between version and localization? because, the mpq has this name: 12340enGB.mpq, the authserver addet the patch not. 12340-enGB.mqp however. the mpq are in a patches folder.
The MPQ have this name: 12340-enGB/deDE.mqp (for different client localization), authserver started and add the two patches.
i start wow, and beginn with the loggin and noting happens. i can loggin with out sending the new patches.
when the mpq names: 12345-enGB.mqp, i think, the authserver will send this patch, as this a newer version is than my wow version.
or i added any logs messages, so look what every his doing D:
-
/happyface this makes it so much easier to be a developer!
-
Code:
#define POST_BC_ACCEPTED_CLIENT_BUILD {12345, 12340, 11723, 11403, 11159, 10571, 10505, 10146, 9947, 8606, 0}
You are allowed patch 12340 so it doesn't even look for new patches when that client build connects. You need to remove this.
-
Contributor
How come I don't get this.
Nevertheless, great guide and this simplifies developers life.
+Rep to both of you :]
-
Private
Thanks, now its working. When i will loggin, the client will download the patch.