Module: wine Branch: master Commit: 8933013b6266fbd092cca1852371b0ac84bb2a4c URL: http://source.winehq.org/git/wine.git/?a=commit;h=8933013b6266fbd092cca18523...
Author: Hans Leidekker hans@codeweavers.com Date: Thu Jan 20 09:06:19 2011 +0100
msi: Search all contexts in ACTION_GetComponentInstallStates.
---
dlls/msi/action.c | 18 ++++++++++++------ 1 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/dlls/msi/action.c b/dlls/msi/action.c index 8cf80bf..4bd5157 100644 --- a/dlls/msi/action.c +++ b/dlls/msi/action.c @@ -1834,11 +1834,9 @@ static UINT ACTION_FileCost(MSIPACKAGE *package) static void ACTION_GetComponentInstallStates(MSIPACKAGE *package) { MSICOMPONENT *comp; - INSTALLSTATE state; + INSTALLSTATE state = MsiQueryProductStateW( package->ProductCode ); UINT r;
- state = MsiQueryProductStateW(package->ProductCode); - LIST_FOR_EACH_ENTRY(comp, &package->components, MSICOMPONENT, entry) { if (!comp->ComponentId) continue; @@ -1847,9 +1845,17 @@ static void ACTION_GetComponentInstallStates(MSIPACKAGE *package) comp->Installed = INSTALLSTATE_ABSENT; else { - r = MsiQueryComponentStateW(package->ProductCode, NULL, - package->Context, comp->ComponentId, - &comp->Installed); + r = MsiQueryComponentStateW( package->ProductCode, NULL, + MSIINSTALLCONTEXT_USERMANAGED, comp->ComponentId, + &comp->Installed ); + if (r != ERROR_SUCCESS) + r = MsiQueryComponentStateW( package->ProductCode, NULL, + MSIINSTALLCONTEXT_USERUNMANAGED, comp->ComponentId, + &comp->Installed ); + if (r != ERROR_SUCCESS) + r = MsiQueryComponentStateW( package->ProductCode, NULL, + MSIINSTALLCONTEXT_MACHINE, comp->ComponentId, + &comp->Installed ); if (r != ERROR_SUCCESS) comp->Installed = INSTALLSTATE_ABSENT; }