Module: wine Branch: master Commit: 6c6b2a7a18e0b50ee19a5f3af51006a39eb2dc28 URL: http://source.winehq.org/git/wine.git/?a=commit;h=6c6b2a7a18e0b50ee19a5f3af5...
Author: Hans Leidekker hans@codeweavers.com Date: Tue Mar 2 14:57:37 2010 +0100
msi: Look at the requested action when publishing assemblies, not the action taken.
---
dlls/msi/action.c | 15 ++++++++++----- 1 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/dlls/msi/action.c b/dlls/msi/action.c index 879a013..eec7b2b 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);