Module: wine Branch: master Commit: 6518f3d7f2515b52a9c0d2f8a757998b41bd2ead URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=6518f3d7f2515b52a9c0d2f8...
Author: James Hawkins truiken@gmail.com Date: Fri Sep 15 17:10:01 2006 -0700
msi: INSTALLSTATE_SOURCE also overrides a parent feature state change to INSTALLSTATE_ABSENT.
---
dlls/msi/helpers.c | 19 ++++++++++--------- dlls/msi/tests/package.c | 8 ++++---- 2 files changed, 14 insertions(+), 13 deletions(-)
diff --git a/dlls/msi/helpers.c b/dlls/msi/helpers.c index 45d3ebe..8c957a2 100644 --- a/dlls/msi/helpers.c +++ b/dlls/msi/helpers.c @@ -869,20 +869,21 @@ void ACTION_UpdateComponentStates(MSIPAC /*if any other feature wants is local we need to set it local*/ LIST_FOR_EACH_ENTRY( f, &package->features, MSIFEATURE, entry ) { - if ( component->ActionRequest != INSTALLSTATE_LOCAL ) + if ( f->ActionRequest != INSTALLSTATE_LOCAL && + f->ActionRequest != INSTALLSTATE_SOURCE ) + { break; + }
LIST_FOR_EACH_ENTRY( clist, &f->Components, ComponentList, entry ) { - if ( clist->component == component ) + if ( clist->component == component && + (f->ActionRequest == INSTALLSTATE_LOCAL || + f->ActionRequest == INSTALLSTATE_SOURCE) ) { - if (f->ActionRequest == INSTALLSTATE_LOCAL) - { - TRACE("Saved by %s\n", debugstr_w(f->Feature)); - component->ActionRequest = INSTALLSTATE_LOCAL; - component->Action = INSTALLSTATE_LOCAL; - } - break; + TRACE("Saved by %s\n", debugstr_w(f->Feature)); + component->ActionRequest = f->ActionRequest; + component->Action = f->ActionRequest; } } } diff --git a/dlls/msi/tests/package.c b/dlls/msi/tests/package.c index f5ff39c..e07f86a 100644 --- a/dlls/msi/tests/package.c +++ b/dlls/msi/tests/package.c @@ -2638,8 +2638,8 @@ static void test_featureparents(void) todo_wine { ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state); - ok( action == INSTALLSTATE_LOCAL, "Expected INSTALLSTATE_LOCAL, got %d\n", action); } + ok( action == INSTALLSTATE_LOCAL, "Expected INSTALLSTATE_LOCAL, got %d\n", action);
state = 0xdeadbee; action = 0xdeadbee; @@ -2658,8 +2658,8 @@ static void test_featureparents(void) todo_wine { ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state); - ok( action == INSTALLSTATE_LOCAL, "Expected INSTALLSTATE_LOCAL, got %d\n", action); } + ok( action == INSTALLSTATE_LOCAL, "Expected INSTALLSTATE_LOCAL, got %d\n", action);
state = 0xdeadbee; action = 0xdeadbee; @@ -2678,8 +2678,8 @@ static void test_featureparents(void) todo_wine { ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state); - ok( action == INSTALLSTATE_SOURCE, "Expected INSTALLSTATE_SOURCE, got %d\n", action); } + ok( action == INSTALLSTATE_SOURCE, "Expected INSTALLSTATE_SOURCE, got %d\n", action);
state = 0xdeadbee; action = 0xdeadbee; @@ -2688,8 +2688,8 @@ static void test_featureparents(void) todo_wine { ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state); - ok( action == INSTALLSTATE_SOURCE, "Expected INSTALLSTATE_SOURCE, got %d\n", action); } + ok( action == INSTALLSTATE_SOURCE, "Expected INSTALLSTATE_SOURCE, got %d\n", action);
state = 0xdeadbee; action = 0xdeadbee;