diff options
Diffstat (limited to 'PackUpdater/Src/Utils.cpp')
-rw-r--r-- | PackUpdater/Src/Utils.cpp | 45 |
1 files changed, 42 insertions, 3 deletions
diff --git a/PackUpdater/Src/Utils.cpp b/PackUpdater/Src/Utils.cpp index 1c77076..3665fdb 100644 --- a/PackUpdater/Src/Utils.cpp +++ b/PackUpdater/Src/Utils.cpp @@ -291,8 +291,8 @@ static void CheckUpdates(void *) } // end check update name
lstrcpyn(Files[CurrentFile].File.tszDiskPath, tszBuff, SIZEOF(Files[CurrentFile].File.tszDiskPath));
GetPrivateProfileString(tszFileInfo, _T("InfoURL"), _T(""), Files[CurrentFile].tszInfoURL, SIZEOF(Files[CurrentFile].tszInfoURL), tszTmpIni);
- GetPrivateProfileString(tszFileInfo, _T("FileType"), _T(""), tszBuff, SIZEOF(tszBuff), tszTmpIni);
- Files[CurrentFile].FileType = _tstoi(tszBuff);
+ Files[CurrentFile].FileType = GetPrivateProfileInt(tszFileInfo, _T("FileType"), 0, tszTmpIni);
+ Files[CurrentFile].Force = GetPrivateProfileInt(tszFileInfo, _T("Force"), 0, tszTmpIni);
Files[CurrentFile].FileNum = CurrentFile+1;
if (Files[CurrentFile].FileType == 2)
@@ -321,7 +321,46 @@ static void CheckUpdates(void *) } // user have not admin's rights
else
{
- UpdateFiles.push_back(Files[CurrentFile]);
+ //добавить проверку на существование файла
+ TCHAR tszFilePathDest[MAX_PATH] = {0};
+ TCHAR* tszUtilRootPlug = NULL;
+ TCHAR* tszUtilRootIco = NULL;
+ TCHAR* tszUtilRoot = NULL;
+
+ switch (Files[CurrentFile].FileType)
+ {
+ case 0:
+ case 1:
+ break;
+ case 2:
+ tszUtilRootPlug = Utils_ReplaceVarsT(_T("%miranda_path%\\Plugins"));
+ if (lstrcmp(Files[CurrentFile].tszAdvFolder, _T("")) == 0)
+ mir_sntprintf(tszFilePathDest, SIZEOF(tszFilePathDest), _T("%s\\%s"), tszUtilRootPlug, Files[CurrentFile].File.tszDiskPath);
+ else
+ mir_sntprintf(tszFilePathDest, SIZEOF(tszFilePathDest), _T("%s\\%s\\%s"), tszUtilRootPlug, Files[CurrentFile].tszAdvFolder, Files[CurrentFile].File.tszDiskPath);
+ mir_free(tszUtilRootPlug);
+ break;
+ case 3:
+ tszUtilRootIco = Utils_ReplaceVarsT(_T("%miranda_path%\\Icons"));
+ if (lstrcmp(Files[CurrentFile].tszAdvFolder, _T("")) == 0)
+ mir_sntprintf(tszFilePathDest, SIZEOF(tszFilePathDest), _T("%s\\%s"), tszUtilRootIco, Files[CurrentFile].File.tszDiskPath);
+ else
+ mir_sntprintf(tszFilePathDest, SIZEOF(tszFilePathDest), _T("%s\\%s\\%s"), tszUtilRootIco, Files[CurrentFile].tszAdvFolder, Files[CurrentFile].File.tszDiskPath);
+ mir_free(tszUtilRootIco);
+ break;
+ case 4:
+ case 5:
+ tszUtilRoot = Utils_ReplaceVarsT(_T("%miranda_path%"));
+ if (lstrcmp(Files[CurrentFile].tszAdvFolder, _T("")) == 0)
+ mir_sntprintf(tszFilePathDest, SIZEOF(tszFilePathDest), _T("%s\\%s"), tszUtilRoot, Files[CurrentFile].File.tszDiskPath);
+ else
+ mir_sntprintf(tszFilePathDest, SIZEOF(tszFilePathDest), _T("%s\\%s\\%s"), tszUtilRoot, Files[CurrentFile].tszAdvFolder, Files[CurrentFile].File.tszDiskPath);
+ mir_free(tszUtilRoot);
+ break;
+ }//end* switch (Files[CurrentFile].FileType)
+
+ if (Files[CurrentFile].Force || Exists(tszFilePathDest))
+ UpdateFiles.push_back(Files[CurrentFile]);
// Save last version
lstrcpyn(Files[CurrentFile].tszLastVer, Files[CurrentFile].tszNewVer, SIZEOF(Files[CurrentFile].tszLastVer));
mir_snprintf(szKey, SIZEOF(szKey), "File_%d_LastVersion", CurrentFile + 1);
|