Module: wine Branch: master Commit: c41b8ce5c360d2e602a7ad26e271e29c18759d5a URL: http://source.winehq.org/git/wine.git/?a=commit;h=c41b8ce5c360d2e602a7ad26e2...
Author: Piotr Caban piotr@codeweavers.com Date: Fri Oct 20 22:18:33 2017 +0200
msi: Improve "full uninstall" detection code.
Signed-off-by: Piotr Caban piotr@codeweavers.com Signed-off-by: Hans Leidekker hans@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/msi/action.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-)
diff --git a/dlls/msi/action.c b/dlls/msi/action.c index da7af06..217d1dc 100644 --- a/dlls/msi/action.c +++ b/dlls/msi/action.c @@ -5351,25 +5351,16 @@ static UINT ACTION_UnpublishProduct(MSIPACKAGE *package)
static BOOL is_full_uninstall( MSIPACKAGE *package ) { - WCHAR **features, *remove = msi_dup_property( package->db, szRemove ); MSIFEATURE *feature; - BOOL ret = TRUE; - UINT i;
LIST_FOR_EACH_ENTRY( feature, &package->features, MSIFEATURE, entry ) { - if (feature->Action == INSTALLSTATE_LOCAL || feature->Action == INSTALLSTATE_SOURCE) ret = FALSE; - } - - features = msi_split_string( remove, ',' ); - for (i = 0; features && features[i]; i++) - { - if (!strcmpW( features[i], szAll )) ret = TRUE; + if (feature->Action != INSTALLSTATE_ABSENT && + (feature->Installed != INSTALLSTATE_ABSENT || feature->Action != INSTALLSTATE_UNKNOWN)) + return FALSE; }
- msi_free(features); - msi_free(remove); - return ret; + return TRUE; }
static UINT ACTION_InstallFinalize(MSIPACKAGE *package)