- Status: open --> migrated
It would be handy if the Class element supported the following attributes:
MiscStatus
ToolboxBitmap32
It would also improve the syntax of the Class element if it supported:
ProgId
VersionIndependentProgID
In combination these would allow for a Class element to handle a broader
range of COM objects (eg. typical GUI components created using ATL).
Instead of:
<Class Id="{someguid}" Context="InprocServer32" Description="Description of
control" ThreadingModel="apartment" Version="1.0" Control="yes" Programmable="yes" Insertable="yes">
<ProgId Id="Prog.Object.1" Description="Description of control">
<ProgId Id="Prog.Object" Description="Description of control"/>
</ProgId>
</Class>
<RegistryValue Root="HKCR" Key="CLSID\{someguid}\\MiscStatus\\1" Value="12312" Type="string" Action="write"/>
<RegistryValue Root="HKCR" Key="CLSID\{someguid}\\ToolboxBitmap32" Value="<span>[!myobject.dll]</span>, 1" Type="string" Action="write"/>
You could use:
<Class Id="{someguid}" Context="InprocServer32" Description="Description of control" ThreadingModel="apartment" Version="1.0" Control="yes" Programmable="yes" Insertable="yes" ProgId="Prog.Object.1" VersionIndependentProgId="Prog.Object" MiscStatus="12312" ToolboxBitmap32="<span>[!myobject.dll]</span>, 1"/>
These changes are more than mere cosmetics. The goal is to allow a COM
object's registration to be centralized into a single location in the .wxs
file (ie. the Class element).
Along those lines perhaps a more general solution would be better. Some
sort of <Registeration> child element. This element would work like
RegistryValue and/or RegistryKey. Then whatever registry values required
for a COM object would appear directly beneath its Class element.
Note: If these changes are made then corresponding changes will be needed
for the COM harvestor in heat.