move FS mounting to ArchHooks
if executable is under Program Files, then mount /Save to ~/PRODUCT_ID/Save
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user