Author: ashaposhnikov Date: Thu Aug 24 22:04:44 2017 New Revision: 75662
URL: http://svn.reactos.org/svn/reactos?rev=75662&view=rev Log: [RAPPS] Changes in the update process: - Made UpdateAppsDB() functions static and added ForceUpdateAppsDB() - EnumAvailableApplications() doesn't update DB on it's own - Force updating now done only if bUpdateAtStart set or if no settings loaded (first run) - Minor cleanup
Modified: branches/GSoC_2017/rapps/reactos/base/applications/rapps/available.cpp branches/GSoC_2017/rapps/reactos/base/applications/rapps/gui.cpp branches/GSoC_2017/rapps/reactos/base/applications/rapps/include/available.h branches/GSoC_2017/rapps/reactos/base/applications/rapps/loaddlg.cpp branches/GSoC_2017/rapps/reactos/base/applications/rapps/unattended.cpp branches/GSoC_2017/rapps/reactos/base/applications/rapps/winmain.cpp
Modified: branches/GSoC_2017/rapps/reactos/base/applications/rapps/available.cpp URL: http://svn.reactos.org/svn/reactos/branches/GSoC_2017/rapps/reactos/base/app... ============================================================================== --- branches/GSoC_2017/rapps/reactos/base/applications/rapps/available.cpp [iso-8859-1] (original) +++ branches/GSoC_2017/rapps/reactos/base/applications/rapps/available.cpp [iso-8859-1] Thu Aug 24 22:04:44 2017 @@ -201,15 +201,28 @@ // CAvailableApplicationInfo
// CAvailableApps -CAvailableApps::CAvailableApps() -{ - //set all paths - if (GetStorageDirectory(m_szPath)) +ATL::CStringW CAvailableApps::m_szPath; +ATL::CStringW CAvailableApps::m_szCabPath; +ATL::CStringW CAvailableApps::m_szAppsPath; +ATL::CStringW CAvailableApps::m_szSearchPath; + +BOOL CAvailableApps::InitializeStaticStrings() +{ + //FIXME: maybe provide a fallback? + if (m_szPath.IsEmpty() && GetStorageDirectory(m_szPath)) { m_szAppsPath = m_szPath + L"\rapps\"; m_szCabPath = m_szPath + L"\rappmgr.cab"; m_szSearchPath = m_szAppsPath + L"*.txt"; - } + return TRUE; + } + return FALSE; +} + +CAvailableApps::CAvailableApps() +{ + //set all paths + InitializeStaticStrings(); }
VOID CAvailableApps::FreeCachedEntries() @@ -235,7 +248,6 @@ if (m_szPath.IsEmpty()) return;
- DeleteFileW(m_szCabPath.GetString()); hFind = FindFirstFileW(m_szSearchPath.GetString(), &FindFileData);
if (hFind != INVALID_HANDLE_VALUE) @@ -248,50 +260,62 @@ } while (FindNextFileW(hFind, &FindFileData) != 0); FindClose(hFind); } + + RemoveDirectoryW(m_szAppsPath); + RemoveDirectoryW(m_szPath); }
BOOL CAvailableApps::UpdateAppsDB() -{ - DeleteCurrentAppsDB(); - - CDownloadManager::DownloadApplicationsDB(APPLICATION_DATABASE_URL); - - if (m_szPath.IsEmpty()) - return FALSE; - - if (!ExtractFilesFromCab(m_szCabPath, m_szAppsPath)) - { - return FALSE; - } - - return TRUE; -} - -BOOL CAvailableApps::EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc) { HANDLE hFind = INVALID_HANDLE_VALUE; WIN32_FIND_DATAW FindFileData;
- if (!CreateDirectoryW(m_szPath.GetString(), NULL) && - GetLastError() != ERROR_ALREADY_EXISTS) - { - return FALSE; - } - + if (m_szPath.IsEmpty() && !InitializeStaticStrings()) + { + return FALSE; + } + + if (!CreateDirectoryW(m_szPath.GetString(), NULL) && GetLastError() != ERROR_ALREADY_EXISTS) + { + return FALSE; + } + + //if there are some files in the db folder - we're good hFind = FindFirstFileW(m_szSearchPath.GetString(), &FindFileData); + if (hFind != INVALID_HANDLE_VALUE) + { + return TRUE; + } + + CDownloadManager::DownloadApplicationsDB(APPLICATION_DATABASE_URL); + + if (!ExtractFilesFromCab(m_szCabPath, m_szAppsPath)) + { + return FALSE; + } + + DeleteFileW(m_szCabPath.GetString()); + + return TRUE; +} + +BOOL CAvailableApps::ForceUpdateAppsDB() +{ + DeleteCurrentAppsDB(); + return UpdateAppsDB(); +} + +BOOL CAvailableApps::EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc) +{ + HANDLE hFind = INVALID_HANDLE_VALUE; + WIN32_FIND_DATAW FindFileData; + + hFind = FindFirstFileW(m_szSearchPath.GetString(), &FindFileData);
if (hFind == INVALID_HANDLE_VALUE) { - if(!UpdateAppsDB()) { - return FALSE; - } - - hFind = FindFirstFileW(m_szSearchPath.GetString(), &FindFileData); - - if (hFind == INVALID_HANDLE_VALUE) - { - return FALSE; - } + //no db yet + return FALSE; }
do
Modified: branches/GSoC_2017/rapps/reactos/base/applications/rapps/gui.cpp URL: http://svn.reactos.org/svn/reactos/branches/GSoC_2017/rapps/reactos/base/app... ============================================================================== --- branches/GSoC_2017/rapps/reactos/base/applications/rapps/gui.cpp [iso-8859-1] (original) +++ branches/GSoC_2017/rapps/reactos/base/applications/rapps/gui.cpp [iso-8859-1] Thu Aug 24 22:04:44 2017 @@ -1321,7 +1321,7 @@ break;
case ID_RESETDB: - m_AvailableApps.UpdateAppsDB(); + CAvailableApps::ForceUpdateAppsDB(); UpdateApplicationsList(-1); break;
Modified: branches/GSoC_2017/rapps/reactos/base/applications/rapps/include/available.h URL: http://svn.reactos.org/svn/reactos/branches/GSoC_2017/rapps/reactos/base/app... ============================================================================== --- branches/GSoC_2017/rapps/reactos/base/applications/rapps/include/available.h [iso-8859-1] (original) +++ branches/GSoC_2017/rapps/reactos/base/applications/rapps/include/available.h [iso-8859-1] Thu Aug 24 22:04:44 2017 @@ -107,16 +107,21 @@ class CAvailableApps { ATL::CAtlList<CAvailableApplicationInfo*> m_InfoList; - ATL::CStringW m_szPath; - ATL::CStringW m_szCabPath; - ATL::CStringW m_szAppsPath; - ATL::CStringW m_szSearchPath; + static ATL::CStringW m_szPath; + static ATL::CStringW m_szCabPath; + static ATL::CStringW m_szAppsPath; + static ATL::CStringW m_szSearchPath; + + static BOOL InitializeStaticStrings();
public: CAvailableApps(); + + static BOOL UpdateAppsDB(); + static BOOL ForceUpdateAppsDB(); + VOID FreeCachedEntries(); - VOID DeleteCurrentAppsDB(); - BOOL UpdateAppsDB(); + static VOID DeleteCurrentAppsDB(); BOOL EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc); const PAPPLICATION_INFO FindInfo(const ATL::CStringW& szAppName); ATL::CSimpleArray<PAPPLICATION_INFO> FindInfoList(const ATL::CSimpleArrayATL::CStringW &arrAppsNames);
Modified: branches/GSoC_2017/rapps/reactos/base/applications/rapps/loaddlg.cpp URL: http://svn.reactos.org/svn/reactos/branches/GSoC_2017/rapps/reactos/base/app... ============================================================================== --- branches/GSoC_2017/rapps/reactos/base/applications/rapps/loaddlg.cpp [iso-8859-1] (original) +++ branches/GSoC_2017/rapps/reactos/base/applications/rapps/loaddlg.cpp [iso-8859-1] Thu Aug 24 22:04:44 2017 @@ -565,7 +565,6 @@ continue; }
- // build the path for the download p = wcsrchr(pCurrentInfo->szUrlDownload.GetString(), L'/'); q = wcsrchr(pCurrentInfo->szUrlDownload.GetString(), L'?');
Modified: branches/GSoC_2017/rapps/reactos/base/applications/rapps/unattended.cpp URL: http://svn.reactos.org/svn/reactos/branches/GSoC_2017/rapps/reactos/base/app... ============================================================================== --- branches/GSoC_2017/rapps/reactos/base/applications/rapps/unattended.cpp [iso-8859-1] (original) +++ branches/GSoC_2017/rapps/reactos/base/applications/rapps/unattended.cpp [iso-8859-1] Thu Aug 24 22:04:44 2017 @@ -56,6 +56,7 @@ }
CAvailableApps apps; + CAvailableApps::UpdateAppsDB(); apps.EnumAvailableApplications(ENUM_ALL_AVAILABLE, NULL); ATL::CSimpleArray<PAPPLICATION_INFO> arrAppInfo = apps.FindInfoList(arrNames); if (arrAppInfo.GetSize() > 0)
Modified: branches/GSoC_2017/rapps/reactos/base/applications/rapps/winmain.cpp URL: http://svn.reactos.org/svn/reactos/branches/GSoC_2017/rapps/reactos/base/app... ============================================================================== --- branches/GSoC_2017/rapps/reactos/base/applications/rapps/winmain.cpp [iso-8859-1] (original) +++ branches/GSoC_2017/rapps/reactos/base/applications/rapps/winmain.cpp [iso-8859-1] Thu Aug 24 22:04:44 2017 @@ -128,6 +128,7 @@ HANDLE hMutex; HACCEL KeyBrd; MSG Msg; + BOOL bFirstLaunch;
InitializeAtlModule(hInstance, TRUE);
@@ -149,8 +150,8 @@ SetForegroundWindow(hWindow); return 1; } - - if (!LoadSettings()) + bFirstLaunch = LoadSettings(); + if (bFirstLaunch) { FillDefaultSettings(&SettingsInfo); } @@ -158,19 +159,19 @@ InitLogs(); InitCommonControls();
- //skip window creation if there were some keys + // skip window creation if there were some keys if (!CmdParser(lpCmdLine)) { + if (SettingsInfo.bUpdateAtStart || bFirstLaunch) + CAvailableApps::ForceUpdateAppsDB(); + hMainWnd = CreateMainWindow(); + if (hMainWnd) { /* Maximize it if we must */ - ShowWindow(hMainWnd, (SettingsInfo.bSaveWndPos && SettingsInfo.Maximized ? SW_MAXIMIZE : nShowCmd)); + ShowWindow(hMainWnd, ((SettingsInfo.bSaveWndPos && SettingsInfo.Maximized) ? SW_MAXIMIZE : nShowCmd)); UpdateWindow(hMainWnd); - - //TODO: get around the ugliness - if (SettingsInfo.bUpdateAtStart) - GetAvailableApps()->UpdateAppsDB();
/* Load the menu hotkeys */ KeyBrd = LoadAcceleratorsW(NULL, MAKEINTRESOURCEW(HOTKEYS));