Hans Leidekker : msi: Look at the requested action when installing services , not the action taken.

Alexandre Julliard julliard at winehq.org
Tue Mar 2 10:32:34 CST 2010


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

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Tue Mar  2 14:56:01 2010 +0100

msi: Look at the requested action when installing services, not the action taken.

---

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

diff --git a/dlls/msi/action.c b/dlls/msi/action.c
index 6ff4c67..0011bc5 100644
--- a/dlls/msi/action.c
+++ b/dlls/msi/action.c
@@ -5001,15 +5001,24 @@ static UINT ITERATE_StartService(MSIRECORD *rec, LPVOID param)
     MSIPACKAGE *package = param;
     MSICOMPONENT *comp;
     SC_HANDLE scm = NULL, service = NULL;
-    LPCWSTR *vector = NULL;
+    LPCWSTR component, *vector = NULL;
     LPWSTR name, args;
     DWORD event, numargs;
     UINT r = ERROR_FUNCTION_FAILED;
 
-    comp = get_loaded_component(package, MSI_RecordGetString(rec, 6));
-    if (!comp || comp->Action == INSTALLSTATE_UNKNOWN || comp->Action == INSTALLSTATE_ABSENT)
+    component = MSI_RecordGetString(rec, 6);
+    comp = get_loaded_component(package, component);
+    if (!comp)
         return ERROR_SUCCESS;
 
+    if (comp->ActionRequest != INSTALLSTATE_LOCAL)
+    {
+        TRACE("Component not scheduled for installation: %s\n", debugstr_w(component));
+        comp->Action = comp->Installed;
+        return ERROR_SUCCESS;
+    }
+    comp->Action = INSTALLSTATE_LOCAL;
+
     deformat_string(package, MSI_RecordGetString(rec, 2), &name);
     deformat_string(package, MSI_RecordGetString(rec, 4), &args);
     event = MSI_RecordGetInteger(rec, 3);




More information about the wine-cvs mailing list