msi: Split ACTION_UpdateInstallStates into two separate functions.

This commit is contained in:
Mike McCormack 2006-10-30 16:35:09 +09:00 committed by Alexandre Julliard
parent 0e71d0e136
commit b76691537f
1 changed files with 13 additions and 8 deletions

View File

@ -1592,15 +1592,10 @@ static MSIFOLDER *load_folder( MSIPACKAGE *package, LPCWSTR dir )
return folder; return folder;
} }
/* scan for and update current install states */ static void ACTION_GetComponentInstallStates(MSIPACKAGE *package)
static void ACTION_UpdateInstallStates(MSIPACKAGE *package)
{ {
MSICOMPONENT *comp; MSICOMPONENT *comp;
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;
@ -1608,12 +1603,19 @@ static void ACTION_UpdateInstallStates(MSIPACKAGE *package)
if (!comp->ComponentId) if (!comp->ComponentId)
continue; continue;
res = MsiGetComponentPathW( package->ProductCode, res = MsiGetComponentPathW( package->ProductCode,
comp->ComponentId, NULL, NULL); comp->ComponentId, NULL, NULL);
if (res < 0) if (res < 0)
res = INSTALLSTATE_ABSENT; res = INSTALLSTATE_ABSENT;
comp->Installed = res; comp->Installed = res;
} }
}
/* scan for and update current install states */
static void ACTION_UpdateFeatureInstallStates(MSIPACKAGE *package)
{
MSICOMPONENT *comp;
MSIFEATURE *feature;
LIST_FOR_EACH_ENTRY( feature, &package->features, MSIFEATURE, entry ) LIST_FOR_EACH_ENTRY( feature, &package->features, MSIFEATURE, entry )
{ {
@ -1972,6 +1974,9 @@ static UINT ACTION_CostFinalize(MSIPACKAGE *package)
msiobj_release(&view->hdr); msiobj_release(&view->hdr);
} }
/* read components states from the registry */
ACTION_GetComponentInstallStates(package);
TRACE("File calculations\n"); TRACE("File calculations\n");
LIST_FOR_EACH_ENTRY( file, &package->files, MSIFILE, entry ) LIST_FOR_EACH_ENTRY( file, &package->files, MSIFILE, entry )
@ -2053,7 +2058,7 @@ static UINT ACTION_CostFinalize(MSIPACKAGE *package)
MSI_SetPropertyW(package,szlevel, szOne); MSI_SetPropertyW(package,szlevel, szOne);
msi_free(level); msi_free(level);
ACTION_UpdateInstallStates(package); ACTION_UpdateFeatureInstallStates(package);
return MSI_SetFeatureStates(package); return MSI_SetFeatureStates(package);
} }