I have been seeing a lot of discussion about CostFinalize and the ADDLOCAL property. People have said CostFinalize, which is before the dialogs on the UI sequence, will set the addlocal property which will determine which features get installed. Now I realize some of those older articles may have been referencing Win9x, since that always worked differently.

What I am seeing is ADDLOCAL is set between ExecuteAction and INSTALL, which is after the UI sequence. BUT the features added to ADDLOCAL is based totally on the Install Level, and the feature conditions seem to always evaluate to true.

The component conditions will work for your initial installation, but not when doing a modify.

If you really want to control your features, use the addlocal and remove actions in the next button of the dialog that is determining features and that will work for initial installations and when doing a modify.

Hopefully this will help someone swearing at features.