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;