Tools/Patcher

* Client patcher no longer has to be ran from administrator level command line to successfully create bnet module
* Set patched bnet module as readonly to prevent wow from deleting it
This commit is contained in:
Shauren
2019-09-29 01:24:21 +02:00
committed by Ovahlord
parent d1017e1c62
commit 40c865612a

View File

@@ -43,6 +43,8 @@ namespace Connection_Patcher
template<typename PATCH, typename PATTERN>
void PatchModule(boost::filesystem::path file, boost::filesystem::path path)
{
namespace fs = boost::filesystem;
std::cout << "Patching module...\n";
Patcher patcher(file);
@@ -50,13 +52,15 @@ namespace Connection_Patcher
patcher.Patch(PATCH::Password(), PATTERN::Password());
std::string const moduleName(Helper::GetFileChecksum(patcher.binary) + ".auth");
boost::filesystem::path const modulePath
(path / std::string(&moduleName[0], 2) / std::string(&moduleName[2], 2));
fs::path const modulePath
(path / std::string(&moduleName[0], 2) / std::string(&moduleName[2], 2));
if (!boost::filesystem::exists(modulePath))
boost::filesystem::create_directories(modulePath);
if (!fs::exists(modulePath))
fs::create_directories(modulePath);
fs::permissions(modulePath / moduleName, fs::add_perms | fs::others_write | fs::group_write | fs::owner_write);
patcher.Finish(modulePath / moduleName);
fs::permissions(modulePath / moduleName, fs::remove_perms | fs::others_write | fs::group_write | fs::owner_write);
std::cout << "Patching module finished.\n";
}