[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