Page 1 of 1

[Q] New executable for single player mods, why?

PostPosted: Sat Jul 07, 12 8:35 pm
by DxPlayer
So looking at the best DeusEx mods released so far, why those usually have a different executable than DeusEx.exe? I mean, why not simple change the ini files throw command lines (2027,TNM stills do that, but also with a different .exe). I don't underspend why, for Deranged there is an launcher that calls DeusEx.exe with arguments for the custom ini files, that configures the game to run the proper player class and game class used in Deranged.


Project 2027 command line for 2027.exe :
Code: Select all
Init: Command line: ini="..\2027\System\2027.ini" userini="..\2027\System\2027User.ini" log="..\2027\System\2027.log"


Deranged command line for default DeusEx.exe:
Code: Select all
Init: Command line: ini=Deranged.ini userini=DRuser.ini log=Deranged.log


Are there benefits?

PostPosted: Sat Jul 07, 12 9:52 pm
by Dae
As far as I remember, the main reason is... the splash logo. If you rename DeusEx.exe to Sex.exe, on startup it would try to load Sex.bmp from the Help\ folder.

On top of that, I once hacked DeusEx.exe to remove ugly borders around the splash screen. Project: 2027 uses that modified .exe.

PostPosted: Sat Jul 07, 12 11:53 pm
by DxPlayer
Oh, I see.

Thx Dae!

PostPosted: Thu Nov 29, 12 11:41 pm
by han
A more severe issue is, that Default.ini / DefUser.ini will get used if someone deletes the Mod.ini / ModUser.ini.

But could be hacked away like:
Code: Select all
class FHXFileManagerWindows : public FFileManagerWindows
{
public:
   // Use HXDefault.ini / HXDefUser.ini (hack)
   FArchive* CreateFileReader( const TCHAR* Filename, DWORD Flags, FOutputDevice* Error )
   {
      if (!appStrcmp(Filename, TEXT("Default.ini")))
         return FFileManagerWindows::CreateFileReader( TEXT("HXDefault.ini"), Flags, Error );
      else if (!appStrcmp(Filename, TEXT("DefUser.ini")))
         return FFileManagerWindows::CreateFileReader( TEXT("HXDefUser.ini"), Flags, Error );
      else
         return FFileManagerWindows::CreateFileReader( Filename, Flags, Error );
   }
};