move FS mounting to ArchHooks

if executable is under Program Files, then mount /Save to ~/PRODUCT_ID/Save
This commit is contained in:
Chris Danford
2005-12-08 21:38:18 +00:00
parent 225262cc20
commit f02b8e3a3d
2 changed files with 47 additions and 3 deletions
+7 -3
View File
@@ -9,14 +9,18 @@
#define PRODUCT_NAME_BARE StepMania
#define PRODUCT_VER_BARE 4.0 CVS
//#define PRODUCT_VER_BARE 4.0 alpha 1
// String used for the install directory and registry locations
// Official releases = "StepMania"; intermediate releases = "StepMania CVS".
#define PRODUCT_ID_BARE StepMania CVS
// These cannot be #undef'd so make them unlikely to conflict with anything
#define PRODUCT_STRINGIFY(x) #x
#define PRODUCT_XSTRINGIFY(x) PRODUCT_STRINGIFY(x)
#define PRODUCT_NAME PRODUCT_XSTRINGIFY(PRODUCT_NAME_BARE)
#define PRODUCT_VER PRODUCT_XSTRINGIFY(PRODUCT_VER_BARE)
#define PRODUCT_NAME_VER PRODUCT_NAME " " PRODUCT_VER
#define PRODUCT_NAME PRODUCT_XSTRINGIFY(PRODUCT_NAME_BARE)
#define PRODUCT_VER PRODUCT_XSTRINGIFY(PRODUCT_VER_BARE)
#define PRODUCT_NAME_VER PRODUCT_NAME " " PRODUCT_VER
#define PRODUCT_ID PRODUCT_XSTRINGIFY(PRODUCT_ID_BARE)
#define VIDEO_TROUBLESHOOTING_URL "http://www.stepmania.com/stepmania/mediawiki.php?title=Video_Driver_Troubleshooting"
#define REPORT_BUG_URL "http://sourceforge.net/tracker/?func=add&group_id=37892&atid=421366"
@@ -406,6 +406,46 @@ int64_t ArchHooks::GetMicrosecondsSinceStart( bool bAccurate )
return ret;
}
#include "archutils/Win32/RegistryAccess.h"
#include "ProductInfo.h"
#include "RageFileManager.h"
#include <shlobj.h>
void ArchHooks_Win32::MountInitialFilesystems( const CString &sDirOfExecutable )
{
/* All Windows data goes in the directory one level above the executable. */
CHECKPOINT_M( ssprintf( "DOE \"%s\"", sDirOfExecutable.c_str()) );
CStringArray parts;
split( sDirOfExecutable, "/", parts );
CHECKPOINT_M( ssprintf( "... %i parts", parts.size()) );
ASSERT_M( parts.size() > 1, ssprintf("Strange sDirOfExecutable: %s", sDirOfExecutable.c_str()) );
CString Dir = join( "/", parts.begin(), parts.end()-1 );
FILEMAN->Mount( "dir", Dir, "/" );
CString sMyDocumentsDir;
{
bool bSuccess = RegistryAccess::GetRegValue( "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", "Personal", sMyDocumentsDir );
ASSERT( bSuccess );
sMyDocumentsDir.Replace( '\\', '/' );
sMyDocumentsDir += "/";
}
CString sProgramFilesDir;
{
bool bSuccess = RegistryAccess::GetRegValue( "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion", "ProgramFilesDir", sProgramFilesDir );
ASSERT( bSuccess );
sProgramFilesDir.Replace( '\\', '/' );
sProgramFilesDir += "/";
}
bool bInstalledToProgramFiles = BeginsWith( sDirOfExecutable, sProgramFilesDir );
if( bInstalledToProgramFiles )
{
CString sPersonalDir = sMyDocumentsDir + PRODUCT_ID + "/";
FILEMAN->Mount( "dir", sPersonalDir + "Save", "/Save" );
}
}
/*
* (c) 2003-2004 Glenn Maynard, Chris Danford
* All rights reserved.