Piotr Caban : msi: Fix feature actions overriding in process_state_property.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Jul 24 14:52:42 CDT 2014
Module: wine
Branch: master
Commit: 0dff7bff9afd6a69340ad99a6f348740b1ea3a25
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0dff7bff9afd6a69340ad99a6f348740b1ea3a25
Author: Piotr Caban <piotr at codeweavers.com>
Date: Thu Jul 24 12:35:31 2014 +0200
msi: Fix feature actions overriding in process_state_property.
---
dlls/msi/action.c | 21 ++++++++++-----------
1 file changed, 10 insertions(+), 11 deletions(-)
diff --git a/dlls/msi/action.c b/dlls/msi/action.c
index feb8296..9dc804c 100644
--- a/dlls/msi/action.c
+++ b/dlls/msi/action.c
@@ -1666,6 +1666,8 @@ static BOOL process_state_property(MSIPACKAGE* package, int level,
{
LPWSTR override;
MSIFEATURE *feature;
+ BOOL remove = !strcmpW(property, szRemove);
+ BOOL reinstall = !strcmpW(property, szReinstall);
override = msi_dup_property( package->db, property );
if (!override)
@@ -1676,15 +1678,15 @@ static BOOL process_state_property(MSIPACKAGE* package, int level,
if (strcmpW( property, szRemove ) && !is_feature_selected( feature, level ))
continue;
- if (!strcmpW(property, szReinstall)) state = feature->Installed;
+ if (reinstall)
+ state = (feature->Installed == INSTALLSTATE_ABSENT ? INSTALLSTATE_UNKNOWN : feature->Installed);
+ else if (remove)
+ state = (feature->Installed == INSTALLSTATE_ABSENT ? INSTALLSTATE_UNKNOWN : INSTALLSTATE_ABSENT);
if (!strcmpiW( override, szAll ))
{
- if (feature->Installed != state)
- {
- feature->Action = state;
- feature->ActionRequest = state;
- }
+ feature->Action = state;
+ feature->ActionRequest = state;
}
else
{
@@ -1698,11 +1700,8 @@ static BOOL process_state_property(MSIPACKAGE* package, int level,
if ((ptr2 && strlenW(feature->Feature) == len && !strncmpW(ptr, feature->Feature, len))
|| (!ptr2 && !strcmpW(ptr, feature->Feature)))
{
- if (feature->Installed != state)
- {
- feature->Action = state;
- feature->ActionRequest = state;
- }
+ feature->Action = state;
+ feature->ActionRequest = state;
break;
}
if (ptr2)
More information about the wine-cvs
mailing list