From 6c6b2a7a18e0b50ee19a5f3af51006a39eb2dc28 Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Tue, 2 Mar 2010 14:57:37 +0100 Subject: [PATCH] msi: Look at the requested action when publishing assemblies, not the action taken. --- dlls/msi/action.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/dlls/msi/action.c b/dlls/msi/action.c index 879a0137e52..eec7b2b76ce 100644 --- a/dlls/msi/action.c +++ b/dlls/msi/action.c @@ -6481,20 +6481,25 @@ static UINT load_assembly(MSIRECORD *rec, LPVOID param) { ASSEMBLY_LIST *list = param; MSIASSEMBLY *assembly; + LPCWSTR component; assembly = msi_alloc_zero(sizeof(MSIASSEMBLY)); if (!assembly) return ERROR_OUTOFMEMORY; - assembly->component = get_loaded_component(list->package, MSI_RecordGetString(rec, 1)); + component = MSI_RecordGetString(rec, 1); + assembly->component = get_loaded_component(list->package, component); + if (!assembly->component) + return ERROR_SUCCESS; - if (!assembly->component || !assembly->component->Enabled || - !(assembly->component->Action & (INSTALLSTATE_LOCAL | INSTALLSTATE_SOURCE))) + if (assembly->component->ActionRequest != INSTALLSTATE_LOCAL && + assembly->component->ActionRequest != INSTALLSTATE_SOURCE) { - TRACE("Component not set for install, not publishing assembly\n"); - msi_free(assembly); + TRACE("Component not scheduled for installation: %s\n", debugstr_w(component)); + assembly->component->Action = assembly->component->Installed; return ERROR_SUCCESS; } + assembly->component->Action = assembly->component->ActionRequest; assembly->feature = find_feature_by_name(list->package, MSI_RecordGetString(rec, 2)); assembly->file = msi_find_file(list->package, assembly->component->KeyPath);