Module: wine Branch: master Commit: d95e3eb4d2a89ef52e764069d0a5a167daa496d6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=d95e3eb4d2a89ef52e764069d0...
Author: Hans Leidekker hans@codeweavers.com Date: Wed Feb 17 09:55:03 2010 +0100
msi: PublishComponents must look at the requested install state of the feature, not the component.
---
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);