msi: Set the component's initial state based on its attributes.
diff --git a/dlls/msi/action.c b/dlls/msi/action.c
index d7be3b5..2479f2e 100644
--- a/dlls/msi/action.c
+++ b/dlls/msi/action.c
@@ -1115,8 +1115,25 @@
     comp->KeyPath = msi_dup_record_field( row, 6 );
 
     comp->Installed = INSTALLSTATE_ABSENT;
-    comp->Action = INSTALLSTATE_UNKNOWN;
-    comp->ActionRequest = INSTALLSTATE_UNKNOWN;
+
+    switch (comp->Attributes)
+    {
+        case msidbComponentAttributesLocalOnly:
+            comp->Action = INSTALLSTATE_LOCAL;
+            comp->ActionRequest = INSTALLSTATE_LOCAL;
+            break;
+        case msidbComponentAttributesSourceOnly:
+            comp->Action = INSTALLSTATE_SOURCE;
+            comp->ActionRequest = INSTALLSTATE_SOURCE;
+            break;
+        case msidbComponentAttributesOptional:
+            comp->Action = INSTALLSTATE_LOCAL;
+            comp->ActionRequest = INSTALLSTATE_LOCAL;
+            break;
+        default:
+            comp->Action = INSTALLSTATE_UNKNOWN;
+            comp->ActionRequest = INSTALLSTATE_UNKNOWN;
+    }
 
     comp->Enabled = TRUE;