Hans Leidekker : msi: Check component attributes before extracting the cabinet.

Alexandre Julliard julliard at winehq.org
Tue Nov 16 12:45:44 CST 2010


Module: wine
Branch: master
Commit: b1b32529635b4c5ad89e675e291b00f92dc66844
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=b1b32529635b4c5ad89e675e291b00f92dc66844

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Tue Nov 16 09:06:50 2010 +0100

msi: Check component attributes before extracting the cabinet.

---

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

diff --git a/dlls/msi/files.c b/dlls/msi/files.c
index 4dcf5bd..db1a962 100644
--- a/dlls/msi/files.c
+++ b/dlls/msi/files.c
@@ -66,15 +66,23 @@ static void schedule_install_files(MSIPACKAGE *package)
 
     LIST_FOR_EACH_ENTRY(file, &package->files, MSIFILE, entry)
     {
-        if (file->Component->ActionRequest != INSTALLSTATE_LOCAL || !file->Component->Enabled)
+        MSICOMPONENT *comp = file->Component;
+
+        if (comp->ActionRequest != INSTALLSTATE_LOCAL || !comp->Enabled)
         {
             TRACE("File %s is not scheduled for install\n", debugstr_w(file->File));
+            file->state = msifs_skipped;
+            continue;
+        }
+        comp->Action = INSTALLSTATE_LOCAL;
+        ui_progress( package, 2, file->FileSize, 0, 0 );
 
-            ui_progress(package,2,file->FileSize,0,0);
+        if (file->state == msifs_overwrite &&
+            (comp->Attributes & msidbComponentAttributesNeverOverwrite))
+        {
+            TRACE("not overwriting %s\n", debugstr_w(file->TargetPath));
             file->state = msifs_skipped;
         }
-        else
-            file->Component->Action = INSTALLSTATE_LOCAL;
     }
 }
 
@@ -228,14 +236,6 @@ UINT ACTION_InstallFiles(MSIPACKAGE *package)
         if (file->state != msifs_missing && !mi->is_continuous && file->state != msifs_overwrite)
             continue;
 
-        if (file->state == msifs_overwrite &&
-            (file->Component->Attributes & msidbComponentAttributesNeverOverwrite))
-        {
-            TRACE("not overwriting %s\n", debugstr_w(file->TargetPath));
-            file->state = msifs_skipped;
-            continue;
-        }
-
         if (file->Sequence > mi->last_sequence || mi->is_continuous ||
             (file->IsCompressed && !mi->is_extracted))
         {




More information about the wine-cvs mailing list