If you are new to InstallShield, you need to read this post. Veterans will probably be bored.
Let's say you an installation that has one feature that is required, and several components. You want the user to be able to select or deselect components during the installation, because some components are required and some are optional. During the development of your installation, you have found out that it isn't working. Here is why.
Features are the smallest installable part of a product from the end-user's perspective. Components are the smallest installable part of a product from the installation developer's perspective. As such, the end user has no access to the components in your installation, because he doesn't know about them. He only has access to the features. But since you only have one feature, which is a required feature that is always installed, there is nothing for the him to select or deselect. So, how do you solve your problem?
You must isolate the required components in the installation, and put them under the required feature. You are then left with the optional components. You want the user to be able to select or deselect them, but he can't. He can't access any components, because he does not know about them. He can only access features, and more importantly he can only select or deselect features.
For each optional component, you must create a corresponding feature for it, then assign the component to that feature. You then make each of these features optional. During the installation, the user will be able to select or deselect each optional feature, which will in turn and unbeknownst to him, select or deselect the component(s) that belongs to the feature.
That is the proper way to handle optional functionality in an installation.