[1/3] msi: PublishComponents must look at the requested install state of the feature, not the component.
Hans Leidekker
hans at codeweavers.com
Wed Feb 17 02:55:03 CST 2010
---
dlls/msi/action.c | 37 ++++++++++++++++++-------------------
1 files changed, 18 insertions(+), 19 deletions(-)
diff --git a/dlls/msi/action.c b/dlls/msi/action.c
index 2c036b8..e12e014 100644
--- a/dlls/msi/action.c
+++ b/dlls/msi/action.c
@@ -4490,33 +4490,34 @@ static UINT ACTION_ExecuteAction(MSIPACKAGE *package)
static UINT ITERATE_PublishComponent(MSIRECORD *rec, LPVOID param)
{
MSIPACKAGE *package = param;
- LPCWSTR compgroupid=NULL;
- LPCWSTR feature=NULL;
- LPCWSTR text = NULL;
- LPCWSTR qualifier = NULL;
- LPCWSTR component = NULL;
- LPWSTR advertise = NULL;
- LPWSTR output = NULL;
+ LPCWSTR compgroupid, component, feature, qualifier, text;
+ LPWSTR advertise = NULL, output = NULL;
HKEY hkey;
- UINT rc = ERROR_SUCCESS;
+ UINT rc;
MSICOMPONENT *comp;
- DWORD sz = 0;
+ MSIFEATURE *feat;
+ DWORD sz;
MSIRECORD *uirow;
- component = MSI_RecordGetString(rec,3);
- comp = get_loaded_component(package,component);
- if (!comp)
+ feature = MSI_RecordGetString(rec, 5);
+ feat = get_loaded_feature(package, feature);
+ if (!feat)
return ERROR_SUCCESS;
- if (comp->ActionRequest != INSTALLSTATE_LOCAL &&
- comp->ActionRequest != INSTALLSTATE_SOURCE &&
- comp->ActionRequest != INSTALLSTATE_ADVERTISED)
+ if (feat->ActionRequest != INSTALLSTATE_LOCAL &&
+ feat->ActionRequest != INSTALLSTATE_SOURCE &&
+ feat->ActionRequest != INSTALLSTATE_ADVERTISED)
{
- TRACE("Component not scheduled for installation %s\n", debugstr_w(component));
- comp->Action = comp->Installed;
+ TRACE("Feature %s not scheduled for installation\n", debugstr_w(feature));
+ feat->Action = feat->Installed;
return ERROR_SUCCESS;
}
+ component = MSI_RecordGetString(rec, 3);
+ comp = get_loaded_component(package, component);
+ if (!comp)
+ return ERROR_SUCCESS;
+
compgroupid = MSI_RecordGetString(rec,1);
qualifier = MSI_RecordGetString(rec,2);
@@ -4525,8 +4526,6 @@ static UINT ITERATE_PublishComponent(MSIRECORD *rec, LPVOID param)
goto end;
text = MSI_RecordGetString(rec,4);
- feature = MSI_RecordGetString(rec,5);
-
advertise = create_component_advertise_string(package, comp, feature);
sz = strlenW(advertise);
--
1.6.3.3
More information about the wine-patches
mailing list