msi: Component attributes are bitmasks.
diff --git a/dlls/msi/action.c b/dlls/msi/action.c
index ffaa216..f5e75b3 100644
--- a/dlls/msi/action.c
+++ b/dlls/msi/action.c
@@ -1800,19 +1800,14 @@
         {
             component = cl->component;
 
-            switch (component->Attributes)
-            {
-            case msidbComponentAttributesLocalOnly:
-                msi_component_set_state( component, INSTALLSTATE_LOCAL );
-                break;
-            case msidbComponentAttributesSourceOnly:
-                msi_component_set_state( component, INSTALLSTATE_SOURCE );
-                break;
-            case msidbComponentAttributesOptional:
+            if (component->Attributes & msidbComponentAttributesOptional)
                 msi_component_set_state( component, INSTALLSTATE_DEFAULT );
-                break;
-            default:
-                msi_component_set_state( component, INSTALLSTATE_LOCAL );
+            else
+            {
+                if (component->Attributes & msidbComponentAttributesSourceOnly)
+                    msi_component_set_state( component, INSTALLSTATE_SOURCE );
+                else
+                    msi_component_set_state( component, INSTALLSTATE_LOCAL );
             }
 
             if (component->ForceLocalState)