[pkg-wine-party] [SCM] Debian Wine packaging branch, wheezy, updated. wine-1.4-7-302-gb61b690

Alexandre Julliard julliard at winehq.org
Sun Jun 17 20:04:10 UTC 2012


The following commit has been merged in the wheezy branch:
commit d595b6e1a9a9880140c72b2a866cf6d17c1301ec
Author: Hans Leidekker <hans at codeweavers.com>
Date:   Tue Mar 13 12:51:26 2012 +0100

    msi: Fix deleting services on installation.
    
    Based on a patch by Berhard Loos.
    (cherry picked from commit c98bf1b57b795e97161c8960e1964eafde1816ea)

diff --git a/dlls/msi/action.c b/dlls/msi/action.c
index 87fc906..16e2186 100644
--- a/dlls/msi/action.c
+++ b/dlls/msi/action.c
@@ -5913,28 +5913,25 @@ static UINT ITERATE_DeleteService( MSIRECORD *rec, LPVOID param )
     MSIPACKAGE *package = param;
     MSICOMPONENT *comp;
     MSIRECORD *uirow;
-    LPCWSTR component;
     LPWSTR name = NULL, display_name = NULL;
     DWORD event, len;
     SC_HANDLE scm = NULL, service = NULL;
 
-    event = MSI_RecordGetInteger( rec, 3 );
-    if (!(event & msidbServiceControlEventDelete))
-        return ERROR_SUCCESS;
-
-    component = MSI_RecordGetString(rec, 6);
-    comp = msi_get_loaded_component(package, component);
+    comp = msi_get_loaded_component( package, MSI_RecordGetString(rec, 6) );
     if (!comp)
         return ERROR_SUCCESS;
 
+    event = MSI_RecordGetInteger( rec, 3 );
+    deformat_string( package, MSI_RecordGetString(rec, 2), &name );
+
     comp->Action = msi_get_component_action( package, comp );
-    if (comp->Action != INSTALLSTATE_ABSENT)
+    if (!(comp->Action == INSTALLSTATE_LOCAL && (event & msidbServiceControlEventDelete)) &&
+        !(comp->Action == INSTALLSTATE_ABSENT && (event & msidbServiceControlEventUninstallDelete)))
     {
-        TRACE("component not scheduled for removal %s\n", debugstr_w(component));
+        TRACE("service %s not scheduled for removal\n", debugstr_w(name));
+        msi_free( name );
         return ERROR_SUCCESS;
     }
-
-    deformat_string( package, MSI_RecordGetString(rec, 2), &name );
     stop_service( name );
 
     scm = OpenSCManagerW( NULL, NULL, SC_MANAGER_ALL_ACCESS );

-- 
Debian Wine packaging



More information about the pkg-wine-party mailing list