Module: wine Branch: refs/heads/master Commit: 38f2ba23f1a9f877f220e9776ad19f9d99492bd2 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=38f2ba23f1a9f877f220e977...
Author: James Hawkins truiken@gmail.com Date: Mon Jul 31 14:50:44 2006 -0700
msi: Fix a couple install state test cases.
- Correctly handle the msidbComponentAttributesOptional component attribute. - Don't set a component's state to INSTALLSTATE_LOCAL if the msidbComponentAttributesSourceOnly attribute is provided.
---
dlls/msi/action.c | 19 +++++++++++++------ dlls/msi/tests/package.c | 10 ++-------- 2 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/dlls/msi/action.c b/dlls/msi/action.c index 37513e0..65cfa77 100644 --- a/dlls/msi/action.c +++ b/dlls/msi/action.c @@ -1122,7 +1122,6 @@ static UINT load_component( MSIRECORD *r switch (comp->Attributes) { case msidbComponentAttributesLocalOnly: - case msidbComponentAttributesOptional: comp->Action = INSTALLSTATE_LOCAL; comp->ActionRequest = INSTALLSTATE_LOCAL; break; @@ -1130,6 +1129,10 @@ static UINT load_component( MSIRECORD *r comp->Action = INSTALLSTATE_SOURCE; comp->ActionRequest = INSTALLSTATE_SOURCE; break; + case msidbComponentAttributesOptional: + comp->Action = INSTALLSTATE_DEFAULT; + comp->ActionRequest = INSTALLSTATE_DEFAULT; + break; default: comp->Action = INSTALLSTATE_UNKNOWN; comp->ActionRequest = INSTALLSTATE_UNKNOWN; @@ -1713,16 +1716,20 @@ UINT MSI_SetFeatureStates(MSIPACKAGE *pa } else { - if (feature->Action == INSTALLSTATE_LOCAL) + if (feature->Attributes == msidbFeatureAttributesFavorLocal) { - component->Action = INSTALLSTATE_LOCAL; - component->ActionRequest = INSTALLSTATE_LOCAL; + if (!(component->Attributes & msidbComponentAttributesSourceOnly)) + { + component->Action = INSTALLSTATE_LOCAL; + component->ActionRequest = INSTALLSTATE_LOCAL; + } } - else if (feature->ActionRequest == INSTALLSTATE_SOURCE) + else if (feature->Attributes == msidbFeatureAttributesFavorSource) { if ((component->Action == INSTALLSTATE_UNKNOWN) || (component->Action == INSTALLSTATE_ABSENT) || - (component->Action == INSTALLSTATE_ADVERTISED)) + (component->Action == INSTALLSTATE_ADVERTISED) || + (component->Action == INSTALLSTATE_DEFAULT))
{ component->Action = INSTALLSTATE_SOURCE; diff --git a/dlls/msi/tests/package.c b/dlls/msi/tests/package.c index 24f4332..62920fa 100644 --- a/dlls/msi/tests/package.c +++ b/dlls/msi/tests/package.c @@ -1700,10 +1700,7 @@ static void test_states(void) r = MsiGetComponentState(hpkg, "beta", &state, &action); ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r ); ok( state == INSTALLSTATE_ABSENT, "Expected INSTALLSTATE_ABSENT, got %d\n", state); - todo_wine - { - 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; @@ -1731,10 +1728,7 @@ static void test_states(void) r = MsiGetComponentState(hpkg, "zeta", &state, &action); ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r ); ok( state == INSTALLSTATE_ABSENT, "Expected INSTALLSTATE_ABSENT, got %d\n", state); - todo_wine - { - 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;