msi: PublishComponents must look at the requested install state of the feature, not the component.
This commit is contained in:
parent
4e1c8767f9
commit
d95e3eb4d2
|
@ -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;
|
||||
|
||||
feature = MSI_RecordGetString(rec, 5);
|
||||
feat = get_loaded_feature(package, feature);
|
||||
if (!feat)
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
if (feat->ActionRequest != INSTALLSTATE_LOCAL &&
|
||||
feat->ActionRequest != INSTALLSTATE_SOURCE &&
|
||||
feat->ActionRequest != INSTALLSTATE_ADVERTISED)
|
||||
{
|
||||
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;
|
||||
|
||||
if (comp->ActionRequest != INSTALLSTATE_LOCAL &&
|
||||
comp->ActionRequest != INSTALLSTATE_SOURCE &&
|
||||
comp->ActionRequest != INSTALLSTATE_ADVERTISED)
|
||||
{
|
||||
TRACE("Component not scheduled for installation %s\n", debugstr_w(component));
|
||||
comp->Action = comp->Installed;
|
||||
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);
|
||||
|
|
Loading…
Reference in New Issue