Hi Ladislav,
every bundle has its own state based on OSGi bundle life cycle.
INSTALLED means that is has been installed into a framework. This does not necessarily mean that it will work.
When bundle will be started, it goes first to RESOLVED state when all dependencies can be resolved, or stay in INSTALLED state when it can not be resolved. It will go to ACTIVE state when everything is fine.
To be honest there are more variations on that (intermediate states like STARTING, LAZY mode ...). For more details see OSGi R5 spec chapter 4.3.
Whether a bundle can be used in INSTALLED state or only in RESOLVED/ACTIVE state depends on your requirements.
If no Java classes are needed (which seems to be the case when you want to get the Manifest header for a Bundle-Icon) you can also try to get a resource via bundle.getEntry(). In OSGi spec 10.1.6.17 it will be stated that this should be possible. Only when bundle has been uninstalled it will raise an IllegalStateException.
I will check how Concierge will behave in such a situation.
But anyway: why do you want to use the bundle in INSTALLED state only? There are very few situations where this makes sense (e.g. just providing static content).
Bye, Jochen