msi: Don't check a component's install state if a component ID is not provided.
This commit is contained in:
parent
6ac0f3ed29
commit
32f570222b
|
@ -1522,9 +1522,16 @@ static void ACTION_UpdateInstallStates(MSIPACKAGE *package)
|
||||||
MSICOMPONENT *comp;
|
MSICOMPONENT *comp;
|
||||||
MSIFEATURE *feature;
|
MSIFEATURE *feature;
|
||||||
|
|
||||||
|
/* FIXME: component's installed state should be determined
|
||||||
|
* by the component's registration
|
||||||
|
*/
|
||||||
LIST_FOR_EACH_ENTRY( comp, &package->components, MSICOMPONENT, entry )
|
LIST_FOR_EACH_ENTRY( comp, &package->components, MSICOMPONENT, entry )
|
||||||
{
|
{
|
||||||
INSTALLSTATE res;
|
INSTALLSTATE res;
|
||||||
|
|
||||||
|
if (!comp->ComponentId)
|
||||||
|
continue;
|
||||||
|
|
||||||
res = MsiGetComponentPathW( package->ProductCode,
|
res = MsiGetComponentPathW( package->ProductCode,
|
||||||
comp->ComponentId, NULL, NULL);
|
comp->ComponentId, NULL, NULL);
|
||||||
if (res < 0)
|
if (res < 0)
|
||||||
|
@ -1541,6 +1548,12 @@ static void ACTION_UpdateInstallStates(MSIPACKAGE *package)
|
||||||
{
|
{
|
||||||
comp= cl->component;
|
comp= cl->component;
|
||||||
|
|
||||||
|
if (!comp->ComponentId)
|
||||||
|
{
|
||||||
|
res = INSTALLSTATE_ABSENT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (res == -10)
|
if (res == -10)
|
||||||
res = comp->Installed;
|
res = comp->Installed;
|
||||||
else
|
else
|
||||||
|
@ -1548,8 +1561,11 @@ static void ACTION_UpdateInstallStates(MSIPACKAGE *package)
|
||||||
if (res == comp->Installed)
|
if (res == comp->Installed)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (res != comp->Installed)
|
if (res != INSTALLSTATE_DEFAULT || res != INSTALLSTATE_LOCAL ||
|
||||||
res = INSTALLSTATE_INCOMPLETE;
|
res != INSTALLSTATE_SOURCE)
|
||||||
|
{
|
||||||
|
res = INSTALLSTATE_INCOMPLETE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
feature->Installed = res;
|
feature->Installed = res;
|
||||||
|
|
|
@ -2510,90 +2510,63 @@ static void test_featureparents(void)
|
||||||
action = 0xdeadbee;
|
action = 0xdeadbee;
|
||||||
r = MsiGetComponentState(hpkg, "leo", &state, &action);
|
r = MsiGetComponentState(hpkg, "leo", &state, &action);
|
||||||
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
||||||
todo_wine
|
ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
||||||
{
|
|
||||||
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;
|
state = 0xdeadbee;
|
||||||
action = 0xdeadbee;
|
action = 0xdeadbee;
|
||||||
r = MsiGetComponentState(hpkg, "virgo", &state, &action);
|
r = MsiGetComponentState(hpkg, "virgo", &state, &action);
|
||||||
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
||||||
todo_wine
|
ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
||||||
{
|
|
||||||
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;
|
state = 0xdeadbee;
|
||||||
action = 0xdeadbee;
|
action = 0xdeadbee;
|
||||||
r = MsiGetComponentState(hpkg, "libra", &state, &action);
|
r = MsiGetComponentState(hpkg, "libra", &state, &action);
|
||||||
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
||||||
todo_wine
|
ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
||||||
{
|
|
||||||
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;
|
state = 0xdeadbee;
|
||||||
action = 0xdeadbee;
|
action = 0xdeadbee;
|
||||||
r = MsiGetComponentState(hpkg, "cassiopeia", &state, &action);
|
r = MsiGetComponentState(hpkg, "cassiopeia", &state, &action);
|
||||||
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
||||||
todo_wine
|
ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
||||||
{
|
|
||||||
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;
|
state = 0xdeadbee;
|
||||||
action = 0xdeadbee;
|
action = 0xdeadbee;
|
||||||
r = MsiGetComponentState(hpkg, "cepheus", &state, &action);
|
r = MsiGetComponentState(hpkg, "cepheus", &state, &action);
|
||||||
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
||||||
todo_wine
|
ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
||||||
{
|
|
||||||
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;
|
state = 0xdeadbee;
|
||||||
action = 0xdeadbee;
|
action = 0xdeadbee;
|
||||||
r = MsiGetComponentState(hpkg, "andromeda", &state, &action);
|
r = MsiGetComponentState(hpkg, "andromeda", &state, &action);
|
||||||
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
||||||
todo_wine
|
ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
||||||
{
|
|
||||||
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;
|
state = 0xdeadbee;
|
||||||
action = 0xdeadbee;
|
action = 0xdeadbee;
|
||||||
r = MsiGetComponentState(hpkg, "canis", &state, &action);
|
r = MsiGetComponentState(hpkg, "canis", &state, &action);
|
||||||
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
||||||
todo_wine
|
ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
||||||
{
|
|
||||||
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;
|
state = 0xdeadbee;
|
||||||
action = 0xdeadbee;
|
action = 0xdeadbee;
|
||||||
r = MsiGetComponentState(hpkg, "monoceros", &state, &action);
|
r = MsiGetComponentState(hpkg, "monoceros", &state, &action);
|
||||||
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
||||||
todo_wine
|
ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
||||||
{
|
|
||||||
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;
|
state = 0xdeadbee;
|
||||||
action = 0xdeadbee;
|
action = 0xdeadbee;
|
||||||
r = MsiGetComponentState(hpkg, "lepus", &state, &action);
|
r = MsiGetComponentState(hpkg, "lepus", &state, &action);
|
||||||
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
||||||
todo_wine
|
ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
||||||
{
|
|
||||||
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);
|
||||||
|
|
||||||
r = MsiSetFeatureState(hpkg, "orion", INSTALLSTATE_ABSENT);
|
r = MsiSetFeatureState(hpkg, "orion", INSTALLSTATE_ABSENT);
|
||||||
|
@ -2624,19 +2597,16 @@ static void test_featureparents(void)
|
||||||
action = 0xdeadbee;
|
action = 0xdeadbee;
|
||||||
r = MsiGetComponentState(hpkg, "leo", &state, &action);
|
r = MsiGetComponentState(hpkg, "leo", &state, &action);
|
||||||
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
||||||
todo_wine
|
ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
||||||
{
|
|
||||||
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;
|
state = 0xdeadbee;
|
||||||
action = 0xdeadbee;
|
action = 0xdeadbee;
|
||||||
r = MsiGetComponentState(hpkg, "virgo", &state, &action);
|
r = MsiGetComponentState(hpkg, "virgo", &state, &action);
|
||||||
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
||||||
|
ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
||||||
todo_wine
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2644,19 +2614,16 @@ static void test_featureparents(void)
|
||||||
action = 0xdeadbee;
|
action = 0xdeadbee;
|
||||||
r = MsiGetComponentState(hpkg, "libra", &state, &action);
|
r = MsiGetComponentState(hpkg, "libra", &state, &action);
|
||||||
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
||||||
todo_wine
|
ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
||||||
{
|
|
||||||
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;
|
state = 0xdeadbee;
|
||||||
action = 0xdeadbee;
|
action = 0xdeadbee;
|
||||||
r = MsiGetComponentState(hpkg, "cassiopeia", &state, &action);
|
r = MsiGetComponentState(hpkg, "cassiopeia", &state, &action);
|
||||||
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
||||||
|
ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
||||||
todo_wine
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2664,29 +2631,23 @@ static void test_featureparents(void)
|
||||||
action = 0xdeadbee;
|
action = 0xdeadbee;
|
||||||
r = MsiGetComponentState(hpkg, "cepheus", &state, &action);
|
r = MsiGetComponentState(hpkg, "cepheus", &state, &action);
|
||||||
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
||||||
todo_wine
|
ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
||||||
{
|
|
||||||
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;
|
state = 0xdeadbee;
|
||||||
action = 0xdeadbee;
|
action = 0xdeadbee;
|
||||||
r = MsiGetComponentState(hpkg, "andromeda", &state, &action);
|
r = MsiGetComponentState(hpkg, "andromeda", &state, &action);
|
||||||
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
||||||
todo_wine
|
ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
||||||
{
|
|
||||||
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;
|
state = 0xdeadbee;
|
||||||
action = 0xdeadbee;
|
action = 0xdeadbee;
|
||||||
r = MsiGetComponentState(hpkg, "canis", &state, &action);
|
r = MsiGetComponentState(hpkg, "canis", &state, &action);
|
||||||
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
||||||
|
ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
||||||
todo_wine
|
todo_wine
|
||||||
{
|
{
|
||||||
ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
|
||||||
ok( action == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", action);
|
ok( action == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", action);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2694,9 +2655,9 @@ static void test_featureparents(void)
|
||||||
action = 0xdeadbee;
|
action = 0xdeadbee;
|
||||||
r = MsiGetComponentState(hpkg, "monoceros", &state, &action);
|
r = MsiGetComponentState(hpkg, "monoceros", &state, &action);
|
||||||
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
||||||
|
ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
||||||
todo_wine
|
todo_wine
|
||||||
{
|
{
|
||||||
ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
|
||||||
ok( action == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", action);
|
ok( action == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", action);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2704,9 +2665,9 @@ static void test_featureparents(void)
|
||||||
action = 0xdeadbee;
|
action = 0xdeadbee;
|
||||||
r = MsiGetComponentState(hpkg, "lepus", &state, &action);
|
r = MsiGetComponentState(hpkg, "lepus", &state, &action);
|
||||||
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r );
|
||||||
|
ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
||||||
todo_wine
|
todo_wine
|
||||||
{
|
{
|
||||||
ok( state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
|
|
||||||
ok( action == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", action);
|
ok( action == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", action);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue