mirror of
https://github.com/reactos/reactos.git
synced 2025-05-29 14:08:22 +00:00
[RAPPS] Stopped GCC whining (fixed GCC build)
svn path=/branches/GSoC_2017/rapps/; revision=75824
This commit is contained in:
parent
fa2ddd2f4c
commit
a219ebec32
9 changed files with 76 additions and 73 deletions
|
@ -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)
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#ifndef _RAPPS_H
|
#ifndef _RAPPS_H
|
||||||
#define _RAPPS_H
|
#define _RAPPS_H
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue