[RAPPS] Stopped GCC whining (fixed GCC build)

svn path=/branches/GSoC_2017/rapps/; revision=75824
This commit is contained in:
Alexander Shaposhnikov 2017-09-10 21:02:06 +00:00
parent fa2ddd2f4c
commit a219ebec32
9 changed files with 76 additions and 73 deletions

View file

@ -32,7 +32,10 @@ list(APPEND SOURCE
include/unattended.h include/unattended.h
) )
add_definitions(-DUSE_CERT_PINNING) add_definitions(
-DUSE_CERT_PINNING
-D_ATL_NO_EXCEPTIONS)
file(GLOB_RECURSE rapps_rc_deps res/*.*) file(GLOB_RECURSE rapps_rc_deps res/*.*)
add_rc_deps(rapps.rc ${rapps_rc_deps}) add_rc_deps(rapps.rc ${rapps_rc_deps})
add_executable(rapps ${SOURCE} rapps.rc) add_executable(rapps ${SOURCE} rapps.rc)

View file

@ -19,9 +19,9 @@
// CAvailableApplicationInfo // CAvailableApplicationInfo
CAvailableApplicationInfo::CAvailableApplicationInfo(const ATL::CStringW& sFileNameParam) CAvailableApplicationInfo::CAvailableApplicationInfo(const ATL::CStringW& sFileNameParam)
: m_Parser(sFileNameParam) : m_IsInstalled(FALSE), m_HasLanguageInfo(FALSE), m_HasInstalledVersion(FALSE), m_Parser(sFileNameParam)
{ {
m_LicenseType = LicenseType::LICENSE_NONE; m_LicenseType = LICENSE_NONE;
m_sFileName = sFileNameParam; m_sFileName = sFileNameParam;
@ -74,7 +74,8 @@ VOID CAvailableApplicationInfo::RetrieveInstalledStatus()
VOID CAvailableApplicationInfo::RetrieveInstalledVersion() VOID CAvailableApplicationInfo::RetrieveInstalledVersion()
{ {
ATL::CStringW szNameVersion = m_szName + L" " + m_szVersion; ATL::CStringW szNameVersion;
szNameVersion = m_szName + L" " + m_szVersion;
m_HasInstalledVersion = ::GetInstalledVersion(&m_szInstalledVersion, m_szRegName) m_HasInstalledVersion = ::GetInstalledVersion(&m_szInstalledVersion, m_szRegName)
|| ::GetInstalledVersion(&m_szInstalledVersion, m_szName) || ::GetInstalledVersion(&m_szInstalledVersion, m_szName)
|| ::GetInstalledVersion(&m_szInstalledVersion, szNameVersion); || ::GetInstalledVersion(&m_szInstalledVersion, szNameVersion);
@ -133,7 +134,7 @@ VOID CAvailableApplicationInfo::RetrieveLicenseType()
} }
else else
{ {
m_LicenseType = LicenseType::LICENSE_NONE; m_LicenseType = LICENSE_NONE;
} }
} }

View file

@ -1,4 +1,4 @@
/* /*
* PROJECT: ReactOS Applications Manager * PROJECT: ReactOS Applications Manager
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+) * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
* FILE: base/applications/rapps/gui.cpp * FILE: base/applications/rapps/gui.cpp
@ -113,13 +113,13 @@ class CAvailableAppView
ATL::CStringW szLicense; ATL::CStringW szLicense;
switch (Info->m_LicenseType) switch (Info->m_LicenseType)
{ {
case LicenseType::LICENSE_OPENSOURCE: case LICENSE_OPENSOURCE:
szLicense.LoadStringW(IDS_LICENSE_OPENSOURCE); szLicense.LoadStringW(IDS_LICENSE_OPENSOURCE);
break; break;
case LicenseType::LICENSE_FREEWARE: case LICENSE_FREEWARE:
szLicense.LoadStringW(IDS_LICENSE_FREEWARE); szLicense.LoadStringW(IDS_LICENSE_FREEWARE);
break; break;
case LicenseType::LICENSE_TRIAL: case LICENSE_TRIAL:
szLicense.LoadStringW(IDS_LICENSE_TRIAL); szLicense.LoadStringW(IDS_LICENSE_TRIAL);
break; break;
default: default:
@ -368,8 +368,8 @@ class CAppsListView :
public: public:
CAppsListView() : CAppsListView() :
bAscending(TRUE),
bHasAllChecked(FALSE), bHasAllChecked(FALSE),
bAscending(TRUE),
bHasCheckboxes(FALSE) bHasCheckboxes(FALSE)
{ {
} }
@ -557,11 +557,17 @@ public:
class CSideTreeView : class CSideTreeView :
public CUiWindow<CTreeView> public CUiWindow<CTreeView>
{ {
HIMAGELIST hImageTreeView = ImageList_Create(TREEVIEW_ICON_SIZE, TREEVIEW_ICON_SIZE, HIMAGELIST hImageTreeView;
GetSystemColorDepth() | ILC_MASK,
0, 1);
public: public:
CSideTreeView() :
CUiWindow(),
hImageTreeView(ImageList_Create(TREEVIEW_ICON_SIZE, TREEVIEW_ICON_SIZE,
GetSystemColorDepth() | ILC_MASK,
0, 1))
{
}
HTREEITEM AddItem(HTREEITEM hParent, ATL::CStringW &Text, INT Image, INT SelectedImage, LPARAM lParam) HTREEITEM AddItem(HTREEITEM hParent, ATL::CStringW &Text, INT Image, INT SelectedImage, LPARAM lParam)
{ {
return CUiWindow<CTreeView>::AddItem(hParent, const_cast<LPWSTR>(Text.GetString()), Image, SelectedImage, lParam); return CUiWindow<CTreeView>::AddItem(hParent, const_cast<LPWSTR>(Text.GetString()), Image, SelectedImage, lParam);
@ -603,7 +609,6 @@ public:
~CSideTreeView() ~CSideTreeView()
{ {
DestroyImageList(); DestroyImageList();
CUiWindow<CTreeView>::~CUiWindow();
} }
}; };
@ -1352,7 +1357,7 @@ private:
UpdateApplicationsList(-1); UpdateApplicationsList(-1);
} }
} }
break; break;
case ID_UNINSTALL: case ID_UNINSTALL:
@ -1409,7 +1414,7 @@ private:
} }
} }
static BOOL SearchPatternMatch(PCWSTR szHaystack, PCWSTR szNeedle) static BOOL SearchPatternMatch(LPCWSTR szHaystack, LPCWSTR szNeedle)
{ {
if (!*szNeedle) if (!*szNeedle)
return TRUE; return TRUE;
@ -1456,15 +1461,15 @@ private:
HIMAGELIST hImageListView = ListView_GetImageList(hListView, LVSIL_SMALL); HIMAGELIST hImageListView = ListView_GetImageList(hListView, LVSIL_SMALL);
if (!SearchPatternMatch(Info->m_szName, szSearchPattern) && if (!SearchPatternMatch(Info->m_szName.GetString(), szSearchPattern) &&
!SearchPatternMatch(Info->m_szDesc, szSearchPattern)) !SearchPatternMatch(Info->m_szDesc.GetString(), szSearchPattern))
{ {
return TRUE; return TRUE;
} }
/* Load icon from file */ /* Load icon from file */
ATL::CStringW szIconPath; ATL::CStringW szIconPath;
szIconPath.Format(L"%lsicons\\%ls.ico", szFolderPath, Info->m_szName); szIconPath.Format(L"%lsicons\\%ls.ico", szFolderPath, Info->m_szName.GetString());
hIcon = (HICON) LoadImageW(NULL, hIcon = (HICON) LoadImageW(NULL,
szIconPath.GetString(), szIconPath.GetString(),
IMAGE_ICON, IMAGE_ICON,
@ -1481,7 +1486,7 @@ private:
Index = ImageList_AddIcon(hImageListView, hIcon); Index = ImageList_AddIcon(hImageListView, hIcon);
DestroyIcon(hIcon); DestroyIcon(hIcon);
Index = ListViewAddItem(Info->m_Category, Index, Info->m_szName, (LPARAM) Info); Index = ListViewAddItem(Info->m_Category, Index, Info->m_szName.GetString(), (LPARAM) Info);
ListView_SetImageList(hListView, hImageListView, LVSIL_SMALL); ListView_SetImageList(hListView, hImageListView, LVSIL_SMALL);
ListView_SetItemText(hListView, Index, 1, const_cast<LPWSTR>(Info->m_szVersion.GetString())); ListView_SetItemText(hListView, Index, 1, const_cast<LPWSTR>(Info->m_szVersion.GetString()));
@ -1515,7 +1520,7 @@ private:
{ {
EnumType = SelectedEnumType; EnumType = SelectedEnumType;
} }
//if previous one was INSTALLED purge the list //if previous one was INSTALLED purge the list
//TODO: make the Installed category a separate class to avoid doing this //TODO: make the Installed category a separate class to avoid doing this
if (bWasInInstalled) if (bWasInInstalled)

View file

@ -19,7 +19,7 @@ enum LicenseType
inline BOOL IsLicenseType(INT x) inline BOOL IsLicenseType(INT x)
{ {
return (x >= LicenseType::LICENSE_MIN && x <= LicenseType::LICENSE_MAX); return (x >= LICENSE_MIN && x <= LICENSE_MAX);
} }
struct CAvailableApplicationInfo struct CAvailableApplicationInfo
@ -60,9 +60,9 @@ struct CAvailableApplicationInfo
VOID SetLastWriteTime(FILETIME* ftTime); VOID SetLastWriteTime(FILETIME* ftTime);
private: private:
BOOL m_IsInstalled = FALSE; BOOL m_IsInstalled;
BOOL m_HasLanguageInfo = FALSE; BOOL m_HasLanguageInfo;
BOOL m_HasInstalledVersion = FALSE; BOOL m_HasInstalledVersion;
CConfigParser m_Parser; CConfigParser m_Parser;
inline BOOL GetString(LPCWSTR lpKeyName, ATL::CStringW& ReturnedString); inline BOOL GetString(LPCWSTR lpKeyName, ATL::CStringW& ReturnedString);
@ -86,7 +86,7 @@ class CAvailableApps
static ATL::CStringW m_szSearchPath; static ATL::CStringW m_szSearchPath;
static BOOL InitializeStaticStrings(); static BOOL InitializeStaticStrings();
ATL::CAtlList<CAvailableApplicationInfo*> m_InfoList; ATL::CAtlList<CAvailableApplicationInfo*> m_InfoList;
public: public:

View file

@ -61,10 +61,10 @@ enum AppsCategories
inline BOOL IsAvailableEnum(INT x) inline BOOL IsAvailableEnum(INT x)
{ {
return (x >= AppsCategories::ENUM_AVAILABLE_MIN && x <= AppsCategories::ENUM_AVAILABLE_MAX); return (x >= ENUM_AVAILABLE_MIN && x <= ENUM_AVAILABLE_MAX);
} }
inline BOOL IsInstalledEnum(INT x) inline BOOL IsInstalledEnum(INT x)
{ {
return (x >= AppsCategories::ENUM_INSTALLED_MIN && x <= AppsCategories::ENUM_INSTALLED_MAX); return (x >= ENUM_INSTALLED_MIN && x <= ENUM_INSTALLED_MAX);
} }

View file

@ -13,7 +13,6 @@ class CDownloadManager
{ {
static ATL::CSimpleArray<DownloadInfo> AppsToInstallList; static ATL::CSimpleArray<DownloadInfo> AppsToInstallList;
static CDowloadingAppsListView DownloadsListView; static CDowloadingAppsListView DownloadsListView;
static INT iCurrentApp;
static VOID Download(const DownloadInfo& DLInfo, BOOL bIsModal = FALSE); static VOID Download(const DownloadInfo& DLInfo, BOOL bIsModal = FALSE);

View file

@ -1,5 +1,3 @@
#pragma once
#ifndef _RAPPS_H #ifndef _RAPPS_H
#define _RAPPS_H #define _RAPPS_H

View file

@ -1,4 +1,4 @@
/* /*
* PROJECT: ReactOS Applications Manager * PROJECT: ReactOS Applications Manager
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+) * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
* FILE: base/applications/rapps/loaddlg.cpp * FILE: base/applications/rapps/loaddlg.cpp
@ -51,17 +51,17 @@
#define CERT_SUBJECT_INFO "Domain Control Validated\r\n*.reactos.org" #define CERT_SUBJECT_INFO "Domain Control Validated\r\n*.reactos.org"
#endif #endif
typedef enum enum DownloadStatus
{ {
DLWaiting = IDS_STATUS_WAITING, DLSTATUS_WAITING = IDS_STATUS_WAITING,
DLDownloading = IDS_STATUS_DOWNLOADING, DLSTATUS_DOWNLOADING = IDS_STATUS_DOWNLOADING,
DLWaitingToInstall = IDS_STATUS_DOWNLOADED, DLSTATUS_WAITING_INSTALL = IDS_STATUS_DOWNLOADED,
DLInstalling = IDS_STATUS_INSTALLING, DLSTATUS_INSTALLING = IDS_STATUS_INSTALLING,
DLInstalled = IDS_STATUS_INSTALLED, DLSTATUS_INSTALLED = IDS_STATUS_INSTALLED,
DLFinished = IDS_STATUS_FINISHED DLSTATUS_FINISHED = IDS_STATUS_FINISHED
} DOWNLOAD_STATUS; };
ATL::CStringW LoadStatusString(DOWNLOAD_STATUS StatusParam) ATL::CStringW LoadStatusString(DownloadStatus StatusParam)
{ {
ATL::CStringW szString; ATL::CStringW szString;
szString.LoadStringW(StatusParam); szString.LoadStringW(StatusParam);
@ -259,11 +259,11 @@ public:
{ {
for (INT i = 0; i < arrInfo.GetSize(); ++i) for (INT i = 0; i < arrInfo.GetSize(); ++i)
{ {
AddRow(i, arrInfo[i].szName.GetString(), DOWNLOAD_STATUS::DLWaiting); AddRow(i, arrInfo[i].szName.GetString(), DLSTATUS_WAITING);
} }
} }
VOID SetDownloadStatus(INT ItemIndex, DOWNLOAD_STATUS Status) VOID SetDownloadStatus(INT ItemIndex, DownloadStatus Status)
{ {
HWND hListView = GetWindow(); HWND hListView = GetWindow();
ATL::CStringW szBuffer = LoadStatusString(Status); ATL::CStringW szBuffer = LoadStatusString(Status);
@ -283,7 +283,7 @@ public:
return InsertItem(&Item); return InsertItem(&Item);
} }
VOID AddRow(INT RowIndex, LPCWSTR szAppName, const DOWNLOAD_STATUS Status) VOID AddRow(INT RowIndex, LPCWSTR szAppName, const DownloadStatus Status)
{ {
ATL::CStringW szStatus = LoadStatusString(Status); ATL::CStringW szStatus = LoadStatusString(Status);
AddItem(RowIndex, AddItem(RowIndex,
@ -376,7 +376,6 @@ inline VOID MessageBox_LoadString(HWND hMainWnd, INT StringID)
// CDownloadManager // CDownloadManager
ATL::CSimpleArray<DownloadInfo> CDownloadManager::AppsToInstallList; ATL::CSimpleArray<DownloadInfo> CDownloadManager::AppsToInstallList;
CDowloadingAppsListView CDownloadManager::DownloadsListView; CDowloadingAppsListView CDownloadManager::DownloadsListView;
INT CDownloadManager::iCurrentApp;
VOID CDownloadManager::Download(const DownloadInfo &DLInfo, BOOL bIsModal) VOID CDownloadManager::Download(const DownloadInfo &DLInfo, BOOL bIsModal)
{ {
@ -549,6 +548,8 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
PWSTR p, q; PWSTR p, q;
HWND hDlg = static_cast<DownloadParam*>(param)->Dialog; HWND hDlg = static_cast<DownloadParam*>(param)->Dialog;
HWND Item;
INT iAppId;
ULONG dwContentLen, dwBytesWritten, dwBytesRead, dwStatus; ULONG dwContentLen, dwBytesWritten, dwBytesRead, dwStatus;
ULONG dwCurrentBytesRead = 0; ULONG dwCurrentBytesRead = 0;
@ -567,25 +568,21 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
URL_COMPONENTS urlComponents; URL_COMPONENTS urlComponents;
size_t urlLength, filenameLength; size_t urlLength, filenameLength;
const INT iAppId = iCurrentApp;
const ATL::CSimpleArray<DownloadInfo> &InfoArray = static_cast<DownloadParam*>(param)->AppInfo; const ATL::CSimpleArray<DownloadInfo> &InfoArray = static_cast<DownloadParam*>(param)->AppInfo;
LPCWSTR szCaption = static_cast<DownloadParam*>(param)->szCaption; LPCWSTR szCaption = static_cast<DownloadParam*>(param)->szCaption;
ATL::CStringW szNewCaption; ATL::CStringW szNewCaption;
if (InfoArray.GetSize() <= 0) if (InfoArray.GetSize() <= 0)
{ {
MessageBox_LoadString(hMainWnd, IDS_UNABLE_TO_DOWNLOAD); MessageBox_LoadString(hMainWnd, IDS_UNABLE_TO_DOWNLOAD);
goto end; goto end;
} }
for (INT iAppId = 0; iAppId < InfoArray.GetSize(); ++iAppId) for (iAppId = 0; iAppId < InfoArray.GetSize(); ++iAppId)
{ {
const DownloadInfo &CurrentInfo = InfoArray[iAppId];
// build the path for the download // build the path for the download
p = wcsrchr(CurrentInfo.szUrl.GetString(), L'/'); p = wcsrchr(InfoArray[iAppId].szUrl.GetString(), L'/');
q = wcsrchr(CurrentInfo.szUrl.GetString(), L'?'); q = wcsrchr(InfoArray[iAppId].szUrl.GetString(), L'?');
// do we have a final slash separator? // do we have a final slash separator?
if (!p) if (!p)
@ -600,7 +597,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
filenameLength -= wcslen(q - 1) * sizeof(WCHAR); filenameLength -= wcslen(q - 1) * sizeof(WCHAR);
// is this URL an update package for RAPPS? if so store it in a different place // is this URL an update package for RAPPS? if so store it in a different place
if (CurrentInfo.szUrl == APPLICATION_DATABASE_URL) if (InfoArray[iAppId].szUrl == APPLICATION_DATABASE_URL)
{ {
bCab = TRUE; bCab = TRUE;
if (!GetStorageDirectory(Path)) if (!GetStorageDirectory(Path))
@ -622,15 +619,15 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
Path += L"\\"; Path += L"\\";
Path += (LPWSTR) (p + 1); Path += (LPWSTR) (p + 1);
if (!bCab && CurrentInfo.szSHA1[0] && GetFileAttributesW(Path.GetString()) != INVALID_FILE_ATTRIBUTES) if (!bCab && InfoArray[iAppId].szSHA1[0] && GetFileAttributesW(Path.GetString()) != INVALID_FILE_ATTRIBUTES)
{ {
// only open it in case of total correctness // only open it in case of total correctness
if (VerifyInteg(CurrentInfo.szSHA1.GetString(), Path)) if (VerifyInteg(InfoArray[iAppId].szSHA1.GetString(), Path))
goto run; goto run;
} }
// Reset progress bar // Reset progress bar
HWND Item = GetDlgItem(hDlg, IDC_DOWNLOAD_PROGRESS); Item = GetDlgItem(hDlg, IDC_DOWNLOAD_PROGRESS);
if (Item) if (Item)
{ {
SendMessageW(Item, PBM_SETPOS, 0, 0); SendMessageW(Item, PBM_SETPOS, 0, 0);
@ -639,7 +636,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
// Change caption to show the currently downloaded app // Change caption to show the currently downloaded app
if (!bCab) if (!bCab)
{ {
szNewCaption.Format(szCaption, CurrentInfo.szName.GetString()); szNewCaption.Format(szCaption, InfoArray[iAppId].szName.GetString());
} }
else else
{ {
@ -649,9 +646,9 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
SetWindowTextW(hDlg, szNewCaption.GetString()); SetWindowTextW(hDlg, szNewCaption.GetString());
// Add the download URL // Add the download URL
SetDlgItemTextW(hDlg, IDC_DOWNLOAD_STATUS, CurrentInfo.szUrl.GetString()); SetDlgItemTextW(hDlg, IDC_DOWNLOAD_STATUS, InfoArray[iAppId].szUrl.GetString());
DownloadsListView.SetDownloadStatus(iAppId, DOWNLOAD_STATUS::DLDownloading); DownloadsListView.SetDownloadStatus(iAppId, DLSTATUS_DOWNLOADING);
// download it // download it
bTempfile = TRUE; bTempfile = TRUE;
@ -680,7 +677,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
if (!hOpen) if (!hOpen)
goto end; goto end;
hFile = InternetOpenUrlW(hOpen, CurrentInfo.szUrl.GetString(), NULL, 0, INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_KEEP_CONNECTION, 0); hFile = InternetOpenUrlW(hOpen, InfoArray[iAppId].szUrl.GetString(), NULL, 0, INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_KEEP_CONNECTION, 0);
if (!hFile) if (!hFile)
{ {
@ -702,13 +699,13 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
memset(&urlComponents, 0, sizeof(urlComponents)); memset(&urlComponents, 0, sizeof(urlComponents));
urlComponents.dwStructSize = sizeof(urlComponents); urlComponents.dwStructSize = sizeof(urlComponents);
urlLength = CurrentInfo.szUrl.GetLength(); urlLength = InfoArray[iAppId].szUrl.GetLength();
urlComponents.dwSchemeLength = urlLength + 1; urlComponents.dwSchemeLength = urlLength + 1;
urlComponents.lpszScheme = (LPWSTR) malloc(urlComponents.dwSchemeLength * sizeof(WCHAR)); urlComponents.lpszScheme = (LPWSTR) malloc(urlComponents.dwSchemeLength * sizeof(WCHAR));
urlComponents.dwHostNameLength = urlLength + 1; urlComponents.dwHostNameLength = urlLength + 1;
urlComponents.lpszHostName = (LPWSTR) malloc(urlComponents.dwHostNameLength * sizeof(WCHAR)); urlComponents.lpszHostName = (LPWSTR) malloc(urlComponents.dwHostNameLength * sizeof(WCHAR));
if (!InternetCrackUrlW(CurrentInfo.szUrl, urlLength + 1, ICU_DECODE | ICU_ESCAPE, &urlComponents)) if (!InternetCrackUrlW(InfoArray[iAppId].szUrl, urlLength + 1, ICU_DECODE | ICU_ESCAPE, &urlComponents))
goto end; goto end;
if (urlComponents.nScheme == INTERNET_SCHEME_HTTP || urlComponents.nScheme == INTERNET_SCHEME_HTTPS) if (urlComponents.nScheme == INTERNET_SCHEME_HTTP || urlComponents.nScheme == INTERNET_SCHEME_HTTPS)
@ -720,7 +717,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
#ifdef USE_CERT_PINNING #ifdef USE_CERT_PINNING
// are we using HTTPS to download the RAPPS update package? check if the certificate is original // are we using HTTPS to download the RAPPS update package? check if the certificate is original
if ((urlComponents.nScheme == INTERNET_SCHEME_HTTPS) && if ((urlComponents.nScheme == INTERNET_SCHEME_HTTPS) &&
(wcscmp(CurrentInfo.szUrl, APPLICATION_DATABASE_URL) == 0) && (wcscmp(InfoArray[iAppId].szUrl, APPLICATION_DATABASE_URL) == 0) &&
(!CertIsValid(hOpen, urlComponents.lpszHostName))) (!CertIsValid(hOpen, urlComponents.lpszHostName)))
{ {
MessageBox_LoadString(hMainWnd, IDS_CERT_DOES_NOT_MATCH); MessageBox_LoadString(hMainWnd, IDS_CERT_DOES_NOT_MATCH);
@ -752,7 +749,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
} }
dwCurrentBytesRead += dwBytesRead; dwCurrentBytesRead += dwBytesRead;
dl->OnProgress(dwCurrentBytesRead, dwContentLen, 0, CurrentInfo.szUrl.GetString()); dl->OnProgress(dwCurrentBytesRead, dwContentLen, 0, InfoArray[iAppId].szUrl.GetString());
} while (dwBytesRead && !bCancelled); } while (dwBytesRead && !bCancelled);
CloseHandle(hOut); CloseHandle(hOut);
@ -763,7 +760,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
/* if this thing isn't a RAPPS update and it has a SHA-1 checksum /* if this thing isn't a RAPPS update and it has a SHA-1 checksum
verify its integrity by using the native advapi32.A_SHA1 functions */ verify its integrity by using the native advapi32.A_SHA1 functions */
if (!bCab && CurrentInfo.szSHA1[0] != 0) if (!bCab && InfoArray[iAppId].szSHA1[0] != 0)
{ {
ATL::CStringW szMsgText; ATL::CStringW szMsgText;
@ -775,7 +772,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
SendMessageW(GetDlgItem(hDlg, IDC_DOWNLOAD_STATUS), WM_SETTEXT, 0, (LPARAM) Path.GetString()); SendMessageW(GetDlgItem(hDlg, IDC_DOWNLOAD_STATUS), WM_SETTEXT, 0, (LPARAM) Path.GetString());
// this may take a while, depending on the file size // this may take a while, depending on the file size
if (!VerifyInteg(CurrentInfo.szSHA1.GetString(), Path.GetString())) if (!VerifyInteg(InfoArray[iAppId].szSHA1.GetString(), Path.GetString()))
{ {
if (!szMsgText.LoadStringW(IDS_INTEG_CHECK_FAIL)) if (!szMsgText.LoadStringW(IDS_INTEG_CHECK_FAIL))
goto end; goto end;
@ -786,7 +783,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
} }
run: run:
DownloadsListView.SetDownloadStatus(iAppId, DOWNLOAD_STATUS::DLWaitingToInstall); DownloadsListView.SetDownloadStatus(iAppId, DLSTATUS_WAITING_INSTALL);
// run it // run it
if (!bCab) if (!bCab)
@ -801,7 +798,7 @@ run:
if (ShellExecuteExW(&shExInfo)) if (ShellExecuteExW(&shExInfo))
{ {
DownloadsListView.SetDownloadStatus(iAppId, DOWNLOAD_STATUS::DLInstalling); DownloadsListView.SetDownloadStatus(iAppId, DLSTATUS_INSTALLING);
//TODO: issue an install operation separately so that the apps could be downloaded in the background //TODO: issue an install operation separately so that the apps could be downloaded in the background
WaitForSingleObject(shExInfo.hProcess, INFINITE); WaitForSingleObject(shExInfo.hProcess, INFINITE);
CloseHandle(shExInfo.hProcess); CloseHandle(shExInfo.hProcess);
@ -825,10 +822,10 @@ end:
DeleteFileW(Path.GetString()); DeleteFileW(Path.GetString());
} }
DownloadsListView.SetDownloadStatus(iAppId, DOWNLOAD_STATUS::DLFinished); DownloadsListView.SetDownloadStatus(iAppId, DLSTATUS_FINISHED);
} }
delete param; delete static_cast<DownloadParam*>(param);
SendMessageW(hDlg, WM_CLOSE, 0, 0); SendMessageW(hDlg, WM_CLOSE, 0, 0);
return 0; return 0;
} }

View file

@ -324,14 +324,14 @@ BOOL WriteLogMessage(WORD wType, DWORD dwEventID, LPCWSTR lpMsg)
} }
BOOL GetInstalledVersion_WowUser(ATL::CStringW* szVersionResult, BOOL GetInstalledVersion_WowUser(ATL::CStringW* szVersionResult,
const ATL::CStringW& RegName, const ATL::CStringW& szRegName,
BOOL IsUserKey, BOOL IsUserKey,
REGSAM keyWow) REGSAM keyWow)
{ {
BOOL bHasSucceded = FALSE; BOOL bHasSucceded = FALSE;
ATL::CRegKey key; ATL::CRegKey key;
ATL::CStringW szVersion; ATL::CStringW szVersion;
ATL::CStringW szPath = L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + RegName; ATL::CStringW szPath = ATL::CStringW(L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\%ls") + szRegName;
if (key.Open(IsUserKey ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE, if (key.Open(IsUserKey ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE,
szPath.GetString(), szPath.GetString(),
@ -389,7 +389,7 @@ ATL::CStringW CConfigParser::GetINIFullPath(const ATL::CStringW& FileName)
ATL::CStringW szBuffer; ATL::CStringW szBuffer;
GetStorageDirectory(szDir); GetStorageDirectory(szDir);
szBuffer.Format(L"%ls\\rapps\\%ls", szDir, FileName); szBuffer.Format(L"%ls\\rapps\\%ls", szDir.GetString(), FileName.GetString());
return szBuffer; return szBuffer;
} }