[2/4] msi: Honor msidbComponentAttributesPermanent.

Hans Leidekker hans at codeweavers.com
Tue Nov 16 02:07:07 CST 2010


---
 dlls/msi/files.c |   18 ++++++++++++------
 1 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/dlls/msi/files.c b/dlls/msi/files.c
index db1a962..9aeaaf3 100644
--- a/dlls/msi/files.c
+++ b/dlls/msi/files.c
@@ -925,12 +925,6 @@ static UINT ITERATE_RemoveFiles(MSIRECORD *row, LPVOID param)
     install_mode = MSI_RecordGetInteger(row, 5);
 
     comp = get_loaded_component(package, component);
-    if (!comp)
-    {
-        ERR("Invalid component: %s\n", debugstr_w(component));
-        return ERROR_FUNCTION_FAILED;
-    }
-
     if (!comp->Enabled)
     {
         TRACE("component is disabled\n");
@@ -944,6 +938,12 @@ static UINT ITERATE_RemoveFiles(MSIRECORD *row, LPVOID param)
         return ERROR_SUCCESS;
     }
 
+    if (comp->Attributes & msidbComponentAttributesPermanent)
+    {
+        TRACE("permanent component, not removing file\n");
+        return ERROR_SUCCESS;
+    }
+
     dir = msi_dup_property(package->db, dirprop);
     if (!dir)
         return ERROR_OUTOFMEMORY;
@@ -1027,6 +1027,12 @@ UINT ACTION_RemoveFiles( MSIPACKAGE *package )
             continue;
         }
 
+        if (file->Component->Attributes & msidbComponentAttributesPermanent)
+        {
+            TRACE("permanent component, not removing file\n");
+            continue;
+        }
+
         if (file->Version)
         {
             ver = msi_get_disk_file_version( file->TargetPath );
-- 
1.7.1







More information about the wine-patches mailing list