msi [2/3]: INSTALLSTATE_SOURCE also overrides a parent feature
state change to INSTALLSTATE_ABSENT
James Hawkins
truiken at gmail.com
Fri Sep 15 19:10:01 CDT 2006
Hi,
Changelog:
* 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(-)
--
James Hawkins
-------------- next part --------------
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;
--
1.4.2
More information about the wine-patches
mailing list