How ISXGames patcher works

Kannkor

Ogre
This post is mostly for when people are having issues, that we can link it to explain what/why things are happening and how to fix them.

TL;DR - Having problems? Close all your clients and reload them.



A few years ago (I think anyways.. time seems to fly on by), Amadeus started using the patcher that I wrote.
We recently updated it for better support for multiple computers, and to avoid having sessions crash.
There's also some edge cases that can happen (the point of this post), and how to fix them.

When Innerspace loads an extension, such as ISXEQ2.dll, it locks the file for writing. Meaning you cannot modify the file or delete the file. However.. you can rename it.
The renaming is important, since it is ISXEQ2.dll that is downloading the new ISXEQ2.dll.. but, it's locked, and we can't modify or delete the file.
What the patcher does, is renames it (since that is allowed) to ISXEQ2.dll.isxgamespatcherold. Then it saves the new isxeq2.dll, as ISXEQ2.dll. Then it reloads the extension (unlocking isxeq2.dll.isxgamespatcherold), and loading the freshly downloaded isxeq2.dll! Nice and easy.

However.. here's an edge case.
Lets say ISXEQ2 is on version 2022.06.13.0001
You load a session, IS1, that's the latest version, .0001. No patch. Great!
.0002 is patched out.
You still have IS1 open, but you want a second session, so you load a new one, IS2.
IS2 patches. This means ISXEQ2(v.0001) gets renamed to ISXEQ2.dll.isxgamespatcherold, and it downloads a new ISXEQ2.dll(v.0002).
IS1 is unaffected, so it's running on .0001
IS2 updated, and is running on .0002. This is perfectly fine (rare for even this to happen, but fine none the less).
.0003 is patched out.
You still have IS1 open on .0001
You still have IS2 open on .0002
You load a new session, IS3.
It loads .0002 (since that is what ISXEQ2.dll is). It sees there is a new patch (.0003). It needs to be able to rename ISXEQ2.dll to ISXEQ2.dll.isxgamespatcherold, so it can download a new one. However... IS1 is still using that file. This means IS3 is now stuck. It tries to delete it, because it needs that file, but it fails. So it will try again, and fail... try again and fail...
There is a solution in progress. However, in the mean time, if this serious of unfortunate events happens to you, all you have to do, is close all your sessions (IS1/2/3 in this case), and reload them, and everything is fine again.

Having said that, we ask that any time there is a patch, if you have any problems at all, please close all your sessions, and load 1, that will make sure you are on the latest patch, then we can trouble shoot with you on the latest version.
 
Top Bottom