From ff3ed5f05145b708c04a4ebc7e54bca36f2dc824 Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Tue, 2 Mar 2010 14:57:14 +0100 Subject: [PATCH] msi: Look at the requested action when moving files, 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 278d479af24..879a0137e52 100644 --- a/dlls/msi/action.c +++ b/dlls/msi/action.c @@ -6115,7 +6115,7 @@ static UINT ITERATE_MoveFiles( MSIRECORD *rec, LPVOID param ) { MSIPACKAGE *package = param; MSICOMPONENT *comp; - LPCWSTR sourcename; + LPCWSTR sourcename, component; LPWSTR destname = NULL; LPWSTR sourcedir = NULL, destdir = NULL; LPWSTR source = NULL, dest = NULL; @@ -6123,13 +6123,18 @@ static UINT ITERATE_MoveFiles( MSIRECORD *rec, LPVOID param ) DWORD size; BOOL ret, wildcards; - comp = get_loaded_component(package, MSI_RecordGetString(rec, 2)); - if (!comp || !comp->Enabled || - !(comp->Action & (INSTALLSTATE_LOCAL | INSTALLSTATE_SOURCE))) + component = MSI_RecordGetString(rec, 2); + comp = get_loaded_component(package, component); + if (!comp) + return ERROR_SUCCESS; + + if (comp->ActionRequest != INSTALLSTATE_LOCAL && comp->ActionRequest != INSTALLSTATE_SOURCE) { - TRACE("Component not set for install, not moving file\n"); + TRACE("Component not scheduled for installation: %s\n", debugstr_w(component)); + comp->Action = comp->Installed; return ERROR_SUCCESS; } + comp->Action = comp->ActionRequest; sourcename = MSI_RecordGetString(rec, 3); options = MSI_RecordGetInteger(rec, 7);