[RAPPS] Stopped GCC whining (fixed GCC build)
authorAlexander Shaposhnikov <sanchaez@reactos.org>
Sun, 10 Sep 2017 21:02:06 +0000 (21:02 +0000)
committerAlexander Shaposhnikov <sanchaez@reactos.org>
Sun, 10 Sep 2017 21:02:06 +0000 (21:02 +0000)
svn path=/branches/GSoC_2017/rapps/; revision=75824

reactos/base/applications/rapps/CMakeLists.txt
reactos/base/applications/rapps/available.cpp
reactos/base/applications/rapps/gui.cpp
reactos/base/applications/rapps/include/available.h
reactos/base/applications/rapps/include/defines.h
reactos/base/applications/rapps/include/dialogs.h
reactos/base/applications/rapps/include/rapps.h
reactos/base/applications/rapps/loaddlg.cpp
reactos/base/applications/rapps/misc.cpp

index 350ead0..82ade46 100644 (file)
@@ -32,7 +32,10 @@ list(APPEND SOURCE
     include/unattended.h
 )
 
-add_definitions(-DUSE_CERT_PINNING)
+add_definitions(
+    -DUSE_CERT_PINNING
+    -D_ATL_NO_EXCEPTIONS)
+    
 file(GLOB_RECURSE rapps_rc_deps res/*.*)
 add_rc_deps(rapps.rc ${rapps_rc_deps})
 add_executable(rapps ${SOURCE} rapps.rc)
index 69817da..2574270 100644 (file)
@@ -19,9 +19,9 @@
 
  // CAvailableApplicationInfo
 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;
 
@@ -74,7 +74,8 @@ VOID CAvailableApplicationInfo::RetrieveInstalledStatus()
 
 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)
         || ::GetInstalledVersion(&m_szInstalledVersion, m_szName)
         || ::GetInstalledVersion(&m_szInstalledVersion, szNameVersion);
@@ -133,7 +134,7 @@ VOID CAvailableApplicationInfo::RetrieveLicenseType()
     }
     else
     {
-        m_LicenseType = LicenseType::LICENSE_NONE;
+        m_LicenseType = LICENSE_NONE;
     }
 }
 
index bcceeb0..e8ea731 100644 (file)
@@ -1,4 +1,4 @@
-/* 
+/*
  * PROJECT:     ReactOS Applications Manager
  * LICENSE:     GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
  * FILE:        base/applications/rapps/gui.cpp
@@ -113,13 +113,13 @@ class CAvailableAppView
         ATL::CStringW szLicense;
         switch (Info->m_LicenseType)
         {
-        case LicenseType::LICENSE_OPENSOURCE:
+        case LICENSE_OPENSOURCE:
             szLicense.LoadStringW(IDS_LICENSE_OPENSOURCE);
             break;
-        case LicenseType::LICENSE_FREEWARE:
+        case LICENSE_FREEWARE:
             szLicense.LoadStringW(IDS_LICENSE_FREEWARE);
             break;
-        case LicenseType::LICENSE_TRIAL:
+        case LICENSE_TRIAL:
             szLicense.LoadStringW(IDS_LICENSE_TRIAL);
             break;
         default:
@@ -368,8 +368,8 @@ class CAppsListView :
 
 public:
     CAppsListView() :
-        bAscending(TRUE),
         bHasAllChecked(FALSE),
+        bAscending(TRUE),
         bHasCheckboxes(FALSE)
     {
     }
@@ -557,11 +557,17 @@ public:
 class CSideTreeView :
     public CUiWindow<CTreeView>
 {
-    HIMAGELIST hImageTreeView = ImageList_Create(TREEVIEW_ICON_SIZE, TREEVIEW_ICON_SIZE,
-                                                 GetSystemColorDepth() | ILC_MASK,
-                                                 0, 1);
+    HIMAGELIST hImageTreeView;
 
 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)
     {
         return CUiWindow<CTreeView>::AddItem(hParent, const_cast<LPWSTR>(Text.GetString()), Image, SelectedImage, lParam);
@@ -603,7 +609,6 @@ public:
     ~CSideTreeView()
     {
         DestroyImageList();
-        CUiWindow<CTreeView>::~CUiWindow();
     }
 };
 
@@ -1352,7 +1357,7 @@ private:
                     UpdateApplicationsList(-1);
                 }
 
-            }          
+            }
             break;
 
         case ID_UNINSTALL:
@@ -1409,7 +1414,7 @@ private:
         }
     }
 
-    static BOOL SearchPatternMatch(PCWSTR szHaystack, PCWSTR szNeedle)
+    static BOOL SearchPatternMatch(LPCWSTR szHaystack, LPCWSTR szNeedle)
     {
         if (!*szNeedle)
             return TRUE;
@@ -1456,15 +1461,15 @@ private:
 
         HIMAGELIST hImageListView = ListView_GetImageList(hListView, LVSIL_SMALL);
 
-        if (!SearchPatternMatch(Info->m_szName, szSearchPattern) &&
-            !SearchPatternMatch(Info->m_szDesc, szSearchPattern))
+        if (!SearchPatternMatch(Info->m_szName.GetString(), szSearchPattern) &&
+            !SearchPatternMatch(Info->m_szDesc.GetString(), szSearchPattern))
         {
             return TRUE;
         }
 
         /* Load icon from file */
         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,
                                    szIconPath.GetString(),
                                    IMAGE_ICON,
@@ -1481,7 +1486,7 @@ private:
         Index = ImageList_AddIcon(hImageListView, 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_SetItemText(hListView, Index, 1, const_cast<LPWSTR>(Info->m_szVersion.GetString()));
@@ -1515,7 +1520,7 @@ private:
         {
             EnumType = SelectedEnumType;
         }
-        
+
         //if previous one was INSTALLED purge the list
         //TODO: make the Installed category a separate class to avoid doing this
         if (bWasInInstalled)
index 0c1b61d..aa1aebd 100644 (file)
@@ -19,7 +19,7 @@ enum LicenseType
 
 inline BOOL IsLicenseType(INT x)
 {
-    return (x >= LicenseType::LICENSE_MIN && x <= LicenseType::LICENSE_MAX);
+    return (x >= LICENSE_MIN && x <= LICENSE_MAX);
 }
 
 struct CAvailableApplicationInfo
@@ -60,9 +60,9 @@ struct CAvailableApplicationInfo
     VOID SetLastWriteTime(FILETIME* ftTime);
 
 private:
-    BOOL m_IsInstalled = FALSE;
-    BOOL m_HasLanguageInfo = FALSE;
-    BOOL m_HasInstalledVersion = FALSE;
+    BOOL m_IsInstalled;
+    BOOL m_HasLanguageInfo;
+    BOOL m_HasInstalledVersion;
     CConfigParser m_Parser;
 
     inline BOOL GetString(LPCWSTR lpKeyName, ATL::CStringW& ReturnedString);
@@ -86,7 +86,7 @@ class CAvailableApps
     static ATL::CStringW m_szSearchPath;
 
     static BOOL InitializeStaticStrings();
-    
+
     ATL::CAtlList<CAvailableApplicationInfo*> m_InfoList;
 
 public:
index 935cf6d..7934e96 100644 (file)
@@ -61,10 +61,10 @@ enum AppsCategories
 
 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)
 {
-    return (x >= AppsCategories::ENUM_INSTALLED_MIN && x <= AppsCategories::ENUM_INSTALLED_MAX);
+    return (x >= ENUM_INSTALLED_MIN && x <= ENUM_INSTALLED_MAX);
 }
index 9a24806..51efdc8 100644 (file)
@@ -13,7 +13,6 @@ class CDownloadManager
 {
     static ATL::CSimpleArray<DownloadInfo> AppsToInstallList;
     static CDowloadingAppsListView DownloadsListView;
-    static INT iCurrentApp;
 
     static VOID Download(const DownloadInfo& DLInfo, BOOL bIsModal = FALSE);
 
index a7af0c1..7b6f2d4 100644 (file)
@@ -1,4 +1,4 @@
-/* 
+/*
  * PROJECT:     ReactOS Applications Manager
  * LICENSE:     GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
  * FILE:        base/applications/rapps/loaddlg.cpp
 #define CERT_SUBJECT_INFO "Domain Control Validated\r\n*.reactos.org"
 #endif
 
-typedef enum
+enum DownloadStatus
 {
-    DLWaiting = IDS_STATUS_WAITING,
-    DLDownloading = IDS_STATUS_DOWNLOADING,
-    DLWaitingToInstall = IDS_STATUS_DOWNLOADED,
-    DLInstalling = IDS_STATUS_INSTALLING,
-    DLInstalled = IDS_STATUS_INSTALLED,
-    DLFinished = IDS_STATUS_FINISHED
-} DOWNLOAD_STATUS;
-
-ATL::CStringW LoadStatusString(DOWNLOAD_STATUS StatusParam)
+    DLSTATUS_WAITING = IDS_STATUS_WAITING,
+    DLSTATUS_DOWNLOADING = IDS_STATUS_DOWNLOADING,
+    DLSTATUS_WAITING_INSTALL = IDS_STATUS_DOWNLOADED,
+    DLSTATUS_INSTALLING = IDS_STATUS_INSTALLING,
+    DLSTATUS_INSTALLED = IDS_STATUS_INSTALLED,
+    DLSTATUS_FINISHED = IDS_STATUS_FINISHED
+};
+
+ATL::CStringW LoadStatusString(DownloadStatus StatusParam)
 {
     ATL::CStringW szString;
     szString.LoadStringW(StatusParam);
@@ -259,11 +259,11 @@ public:
     {
         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();
         ATL::CStringW szBuffer = LoadStatusString(Status);
@@ -283,7 +283,7 @@ public:
         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);
         AddItem(RowIndex,
@@ -376,7 +376,6 @@ inline VOID MessageBox_LoadString(HWND hMainWnd, INT StringID)
 // CDownloadManager
 ATL::CSimpleArray<DownloadInfo>         CDownloadManager::AppsToInstallList;
 CDowloadingAppsListView                 CDownloadManager::DownloadsListView;
-INT                                     CDownloadManager::iCurrentApp;
 
 VOID CDownloadManager::Download(const DownloadInfo &DLInfo, BOOL bIsModal)
 {
@@ -549,6 +548,8 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
     PWSTR p, q;
 
     HWND hDlg = static_cast<DownloadParam*>(param)->Dialog;
+    HWND Item;
+    INT iAppId;
 
     ULONG dwContentLen, dwBytesWritten, dwBytesRead, dwStatus;
     ULONG dwCurrentBytesRead = 0;
@@ -567,25 +568,21 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
     URL_COMPONENTS urlComponents;
     size_t urlLength, filenameLength;
 
-    const INT iAppId = iCurrentApp;
     const ATL::CSimpleArray<DownloadInfo> &InfoArray = static_cast<DownloadParam*>(param)->AppInfo;
     LPCWSTR szCaption = static_cast<DownloadParam*>(param)->szCaption;
     ATL::CStringW szNewCaption;
 
-
     if (InfoArray.GetSize() <= 0)
     {
         MessageBox_LoadString(hMainWnd, IDS_UNABLE_TO_DOWNLOAD);
         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
-        p = wcsrchr(CurrentInfo.szUrl.GetString(), L'/');
-        q = wcsrchr(CurrentInfo.szUrl.GetString(), L'?');
+        p = wcsrchr(InfoArray[iAppId].szUrl.GetString(), L'/');
+        q = wcsrchr(InfoArray[iAppId].szUrl.GetString(), L'?');
 
         // do we have a final slash separator?
         if (!p)
@@ -600,7 +597,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
             filenameLength -= wcslen(q - 1) * sizeof(WCHAR);
 
         // 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;
             if (!GetStorageDirectory(Path))
@@ -622,15 +619,15 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
         Path += L"\\";
         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
-            if (VerifyInteg(CurrentInfo.szSHA1.GetString(), Path))
+            if (VerifyInteg(InfoArray[iAppId].szSHA1.GetString(), Path))
                 goto run;
         }
 
         // Reset progress bar
-        HWND Item = GetDlgItem(hDlg, IDC_DOWNLOAD_PROGRESS);
+        Item = GetDlgItem(hDlg, IDC_DOWNLOAD_PROGRESS);
         if (Item)
         {
             SendMessageW(Item, PBM_SETPOS, 0, 0);
@@ -639,7 +636,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
         // Change caption to show the currently downloaded app
         if (!bCab)
         {
-            szNewCaption.Format(szCaption, CurrentInfo.szName.GetString());
+            szNewCaption.Format(szCaption, InfoArray[iAppId].szName.GetString());
         }
         else
         {
@@ -649,9 +646,9 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
         SetWindowTextW(hDlg, szNewCaption.GetString());
 
         // 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
         bTempfile = TRUE;
@@ -680,7 +677,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
         if (!hOpen)
             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)
         {
@@ -702,13 +699,13 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
         memset(&urlComponents, 0, sizeof(urlComponents));
         urlComponents.dwStructSize = sizeof(urlComponents);
 
-        urlLength = CurrentInfo.szUrl.GetLength();
+        urlLength = InfoArray[iAppId].szUrl.GetLength();
         urlComponents.dwSchemeLength = urlLength + 1;
         urlComponents.lpszScheme = (LPWSTR) malloc(urlComponents.dwSchemeLength * sizeof(WCHAR));
         urlComponents.dwHostNameLength = urlLength + 1;
         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;
 
         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
         // are we using HTTPS to download the RAPPS update package? check if the certificate is original
         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)))
         {
             MessageBox_LoadString(hMainWnd, IDS_CERT_DOES_NOT_MATCH);
@@ -752,7 +749,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
             }
 
             dwCurrentBytesRead += dwBytesRead;
-            dl->OnProgress(dwCurrentBytesRead, dwContentLen, 0, CurrentInfo.szUrl.GetString());
+            dl->OnProgress(dwCurrentBytesRead, dwContentLen, 0, InfoArray[iAppId].szUrl.GetString());
         } while (dwBytesRead && !bCancelled);
 
         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
         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;
 
@@ -775,7 +772,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
             SendMessageW(GetDlgItem(hDlg, IDC_DOWNLOAD_STATUS), WM_SETTEXT, 0, (LPARAM) Path.GetString());
 
             // 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))
                     goto end;
@@ -786,7 +783,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
         }
 
 run:
-        DownloadsListView.SetDownloadStatus(iAppId, DOWNLOAD_STATUS::DLWaitingToInstall);
+        DownloadsListView.SetDownloadStatus(iAppId, DLSTATUS_WAITING_INSTALL);
 
         // run it
         if (!bCab)
@@ -801,7 +798,7 @@ run:
 
             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
                 WaitForSingleObject(shExInfo.hProcess, INFINITE);
                 CloseHandle(shExInfo.hProcess);
@@ -825,10 +822,10 @@ end:
                 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);
     return 0;
 }
index 93a86a4..7a35440 100644 (file)
@@ -324,14 +324,14 @@ BOOL WriteLogMessage(WORD wType, DWORD dwEventID, LPCWSTR lpMsg)
 }
 
 BOOL GetInstalledVersion_WowUser(ATL::CStringW* szVersionResult,
-                                 const ATL::CStringW& RegName,
+                                 const ATL::CStringW& szRegName,
                                  BOOL IsUserKey,
                                  REGSAM keyWow)
 {
     BOOL bHasSucceded = FALSE;
     ATL::CRegKey key;
     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,
                  szPath.GetString(),
@@ -389,7 +389,7 @@ ATL::CStringW CConfigParser::GetINIFullPath(const ATL::CStringW& FileName)
     ATL::CStringW szBuffer;
 
     GetStorageDirectory(szDir);
-    szBuffer.Format(L"%ls\\rapps\\%ls", szDir, FileName);
+    szBuffer.Format(L"%ls\\rapps\\%ls", szDir.GetString(), FileName.GetString());
 
     return szBuffer;
 }