[prev in list] [next in list] [prev in thread] [next in thread]
List: helix-server-cvs
Subject: [Server-cvs] installer/common/uninstall/platform/win uninstall.cpp, 1.4.16.6.6.1, 1.4.16.6.6.2 unins
From: sfu () helixcommunity ! org
Date: 2013-02-27 21:50:28
[Download RAW message or body]
Update of /cvsroot/server/installer/common/uninstall/platform/win
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv9150
Modified Files:
Tag: MERCURY_ALPHA
uninstall.cpp uninstall.h
Log Message:
add log entry type to recursively remove directories and files
Index: uninstall.cpp
===================================================================
RCS file: /cvsroot/server/installer/common/uninstall/platform/win/uninstall.cpp,v
retrieving revision 1.4.16.6.6.1
retrieving revision 1.4.16.6.6.2
diff -u -d -r1.4.16.6.6.1 -r1.4.16.6.6.2
--- uninstall.cpp 23 Feb 2013 02:50:12 -0000 1.4.16.6.6.1
+++ uninstall.cpp 27 Feb 2013 21:50:18 -0000 1.4.16.6.6.2
@@ -767,6 +767,12 @@
UpdateDlgText(STR_DEL_REG);
RemoveRegTree(pItem->szValue, TRUE);
}
+ else if (stricmp(pItem->szName, UNINST_DIRECTORYTREE) == 0)
+ {
+ // Remove directory, files and sub-directories recursively
+ UpdateDlgText(STR_DEL_DIR);
+ RemoveInstDirectory(pItem->szValue, TRUE);
+ }
delete pItem;
if(!pNextItem)
@@ -1106,9 +1112,11 @@
* CUninstaller::RemoveInstDirectory - removes the directory if it is
* empty. If it contains subdirectories, recursively removes them if empty.
* Returns TRUE if successfully removed.
+ * If bRemoveFiles is true, remove the files and directories regardless whether
+ * they are empty.
*/
BOOL
-CUninstaller::RemoveInstDirectory(const char* szPath)
+CUninstaller::RemoveInstDirectory(const char* szPath, BOOL bRemoveFiles)
{
// All file removals should have already been handled by now.
@@ -1136,21 +1144,24 @@
if(strcmp(fd.cFileName, ".") != 0 &&
strcmp(fd.cFileName, "..") != 0)
{
+ char szFilePath[MAX_PATH];
+ _snprintf(szFilePath, MAX_PATH, "%s%c%s", szPath,
+ OS_SEPARATOR_CHAR, fd.cFileName);
+ szFilePath[MAX_PATH] = '\0';
+
// Remove empty subdirectories
if(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
- char szSubDir[MAX_PATH];
- if(szSubDir)
+ if(RemoveInstDirectory(szFilePath, bRemoveFiles))
{
- _snprintf(szSubDir, MAX_PATH, "%s%c%s", szPath,
- OS_SEPARATOR_CHAR, fd.cFileName);
- szFileDesc[MAX_PATH] = '\0';
- if(RemoveInstDirectory(szSubDir))
- {
- m_Dirs.FindAndRemove(szSubDir);
- }
+ m_Dirs.FindAndRemove(szFilePath);
}
}
+ else
+ if (bRemoveFiles)
+ {
+ RemoveInstallFile(szFilePath);
+ }
}
} while(FindNextFile(hFind, &fd));
Index: uninstall.h
===================================================================
RCS file: /cvsroot/server/installer/common/uninstall/platform/win/uninstall.h,v
retrieving revision 1.4.16.3
retrieving revision 1.4.16.3.6.1
diff -u -d -r1.4.16.3 -r1.4.16.3.6.1
--- uninstall.h 7 Jan 2013 21:00:11 -0000 1.4.16.3
+++ uninstall.h 27 Feb 2013 21:50:18 -0000 1.4.16.3.6.1
@@ -152,7 +152,7 @@
void RemoveRegValue(HKEY hkey, const char* szName, const char* szValue);
SInstItem* RemoveRegKeyVals(char* szKey);
- BOOL RemoveInstDirectory(const char* szPath);
+ BOOL RemoveInstDirectory(const char* szPath, BOOL bRemoveFiles = FALSE);
BOOL RemoveRegTree(HKEY hkeyRoot, const char* szKey, BOOL bDelVals);
BOOL RemoveRegTree(const char* szKey, BOOL bDelVals);
static const char* GetRootKey(const char* szName, HKEY& hkey);
_______________________________________________
Server-cvs mailing list
Server-cvs@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/server-cvs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic