My program has several components which are independent of each other, so different components may have different versions. So when I publish a new version of my program, I hope that user can selectively upgrade just part of components, with rest components staying the old version. However, when I use the feature dialogs, those unselected features will be uninstalled, which is not what I expected. So I want to ask whether there is a way to selectively upgrade part of features? Do I need to write a custom dialog to implement this requirement?