fix installation reg values not written

This commit is contained in:
Chris Danford
2006-02-28 21:51:21 +00:00
parent 9ac8082f3a
commit 7146649851
5 changed files with 35 additions and 9 deletions
@@ -190,6 +190,32 @@ bool RegistryAccess::SetRegValue( const RString &sKey, const RString &sName, boo
return bSuccess;
}
bool RegistryAccess::CreateKey( const RString &sKey )
{
RString sSubkey;
HKEY hType;
if( !GetRegKeyType(sKey, sSubkey, hType) )
return NULL;
HKEY hKey;
DWORD dwDisposition = 0;
if( ::RegCreateKeyEx(
hType,
sSubkey,
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
NULL,
&hKey,
&dwDisposition ) != ERROR_SUCCESS )
{
return false;
}
::RegCloseKey(hKey);
return true;
}
/*
* (c) 2004 Glenn Maynard
* All rights reserved.
@@ -14,6 +14,8 @@ namespace RegistryAccess
bool SetRegValue( const RString &sKey, const RString &sName, const RString &val );
bool SetRegValue( const RString &sKey, const RString &sName, int val );
bool SetRegValue( const RString &sKey, const RString &sName, bool val );
bool CreateKey( const RString &sKey );
}
#endif
-2
View File
@@ -179,8 +179,6 @@ BOOL MainMenuDlg::OnInitDialog()
TCHAR szCurDir[MAX_PATH];
GetCurrentDirectory( ARRAYSIZE(szCurDir), szCurDir );
GetDlgItem( IDC_EDIT_INSTALLATION )->SetWindowText( szCurDir );
SMPackageUtil::AddGameInstallDir( szCurDir );
SMPackageUtil::SetDefaultInstallDir( szCurDir );
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
+6 -7
View File
@@ -15,17 +15,16 @@ static const RString INSTALLATIONS_KEY = "HKEY_LOCAL_MACHINE\\Software\\" PRODUC
void SMPackageUtil::WriteGameInstallDirs( const vector<RString>& asInstallDirsToWrite )
{
RegistryAccess::CreateKey( INSTALLATIONS_KEY );
for( unsigned i=0; i<100; i++ )
{
RString sName = ssprintf("%d",i);
// Reg.DeleteKey( sName ); // delete key is broken in this library, so just write over it with ""
RegistryAccess::SetRegValue( INSTALLATIONS_KEY, sName, RString() );
}
RString sValue;
if( i < asInstallDirsToWrite.size() )
sValue = asInstallDirsToWrite[i];
for( unsigned i=0; i<asInstallDirsToWrite.size(); i++ )
{
RString sName = ssprintf("%d",i);
RegistryAccess::SetRegValue( INSTALLATIONS_KEY, sName, asInstallDirsToWrite[i] );
RegistryAccess::SetRegValue( INSTALLATIONS_KEY, sName, sValue );
}
}
+1
View File
@@ -63,6 +63,7 @@ BOOL CSmpackageApp::InitInstance()
if( CAN_INSTALL_PACKAGES && SMPackageUtil::IsValidInstallDir(szCurrentDirectory) )
{
SMPackageUtil::AddGameInstallDir( szCurrentDirectory ); // add this if it doesn't already exist
SMPackageUtil::SetDefaultInstallDir( szCurrentDirectory );
}