PDA

View Full Version : What feature is my component in?



looeee
05-24-2006, 08:06 AM
A colleague has just shown me a component (in the components view) and asked me what feature it is in.

There is no easy way to answer this simple question within InstallShield

You have the following ways:
1) Copy the component name to the clipboard, and search for it in the FeatureComponents Table.
Yuk
2) Look to see where the component is being installed to. Switch to the files and folders view. Find it there. Switch on the "Show Components" setting. Right-click on the component. Choose Properties. Change to the features tab.
How many steps? Double Yuk.

The best place to display the (beautiful but obscurely hidden) dialog that you get using method 2 would be as one of the nodes in the Components View.

Please could you make this possible?

looeee

DebbieL
05-24-2006, 08:19 AM
Would the Setup Design view solve this problem? It shows the feature-component hierarchy. You can also use this view to associate unassociated components with features.

The Setup Design view is not available in some project types (for example, merge modules and QuickPatch projects); however, it is available in Basic MSI, InstallScript MSI, and InstallScript projects.

Debbie Landers
Macrovision Corporation

looeee
05-24-2006, 08:23 AM
No

The setup design view does not scale

as soon as you have dozens of features and hundreds of components it is impossible to find where the components are within that view

The Components View is sorted alphabetically which is why you go there on large projects

DebbieL
05-24-2006, 08:35 AM
Ah. I see what you mean. I logged this request as IOC-000050733. Thank you for suggesting this.

Debbie Landers
Macrovision Corporation

MichaelU
05-24-2006, 10:29 AM
Trying to do a little usability reverse engineering here, could you tell me why you want to know with what feature(s) a component is associated? For instance are you trying to verify it is attached where you expect it; are you trying to tweak settings on the feature(s) that contain(s) a given component; are you just curious; etc.?

I ask because it seems to me that something as simple as a "Go to feature" right click entry on each component would solve some of these uses but not others. It also wouldn't scale well to multiply attached components.

looeee
05-24-2006, 11:30 AM
Hi Michael

You've asked a very good question. There are a few reasons and circumstances where it would have been a godsend but I would like to sleep on it and give you some real-world problems tomorrow.

Meanwhile I've made you a mockup of how I envisage it looking, attatched


looeee

Jennifer
05-24-2006, 11:45 AM
Oh yes please include this new functionality! Also extend it to merge module projects.

MartinMarkevics
05-24-2006, 02:30 PM
That looks great. The only question I have is what should happen if you uncheck the Feature that the currently selected component is in? Should you allow it to be deselected, but then refresh the Feature\Component tree after you do it? That seems kind of weird behavior. Should that feature simply be disabled so that you cannot uncheck it here?

I suppose another option (or possibly in addition to what you mention) is to have a "Find Component" option in the Setup Design view.

Christopher Painter
05-24-2006, 09:32 PM
why not just use the direct editor and look at the FeatureComponents table?

looeee
05-25-2006, 08:42 AM
@Jennifer
>extend it to merge module projects
There are no features in Merge Module projects

@Christopher
>why not just use the direct editor and look at the FeatureComponents table?
Using the screenshot above as an example, the FeatureComponents Table would tell me that my component is in the ClientAc feature. I'd go to the SetupDesign View and see that there wasn't a root-level feature of that name. To find the top-level feature I'd then have to go to the Feature Table and walk my way up the Feature / Feature_Parent columns until I hit the top. I will have to have made a note of these features so that I can then drill down them in reverse order to get to my component in SetupDesign.
The feature hierarchy in that example project is trivial. As soon as you scale up the depth of the feature tree, you'd have no choice but to use that technique or use trial and error, randomly clicking on the treeview. If the component was in several features you'd be there all day.

@Michael
> could you tell me why you want to know with what feature(s) a component is associated?

Situation 1
We are making a transform to correct the validation errors in a vendor-supplied MSI.
The package contains an ICE57 because of a component containing HKCU as well as HKLM registry entries. (ICE57 being one of those must-fix errors for corporate deployment on locked-down boxes)
Solution: Make a new component IN THE SAME FEATURE as the problem component to move the HKCU entries into. For this you’ll need to know what feature(s) the component is a member of.

Situation 2
A packager asked me about a shortcut. He had a printscreen from the customer showing the shortcuts as they wanted them installed but he had one missing after installing using his transform.
In the shortcuts view we could see what component it was associated with so checked to see if there was a condition on that component. There wasn’t.
With no condition on the component, the next thing to check was for a condition on the feature, but which feature???

@Martin
>what should happen if you uncheck the Feature that the currently selected component is in?
I am only proposing a change to the Components View. Currently when a component is unassociated from features it has a funny little red icon in the corner.

In addition I really wish there were another coloured component icon to warn you that your component is in multiple features. As I’m sure you know, components with advertised shortcuts or COM do not work as expected when in multiple features.

>"Find Component" option in the Setup Design view
Nice idea but you really need a global search to mirror the one in Direct Editor where you could type in a search string and it would show you results in any view that it is found.

looeee

Jennifer
05-25-2006, 03:37 PM
Oops! I just want an easier way to find what a component is associated with and details about the component even if it is in a merge module.

Christopher Painter
05-26-2006, 08:22 AM
I was just kidding guys. It's just funny because the last 10 months I've been stuck in a world where we have over 800 visual studio merge modules that get merged into 20 different installs. As you may know, VS MM's create a component for every single resource and they all have cryptic GUIDS for names. I've had to get really good at using ORCA and searching from one table to another just to answer the simple questions that InstallShield users have become accustomed to the configuration views answering for them.