Register arcgis com
I have several class libraries containing some commands and automatic updates for ArcGIS. So far, each library has contained an installer class, and we have had one installer project that was responsible for installing all the DLLs. Just like here . Now I have created another library containing the toolbar, which should contain all the commands we have. The refrences project of other projects as well AddItem
(from the base class BaseToolbar
) uses overloading AddItem(Type type)
to keep things strictly typed, not just string-based (for CLSIDs or names).
Naturally, the toolbar project contains immunity. I just wanted to know if it is a good idea to change the suggested installer implementation (from the link above) so that all command DLLs are registered (iterating over the DLLs in the output folder and registering them? Is there a better way?)
This will move the installation issue from each team project to a centralized location. I think it will be easier to add more commands as I will need to add a reference to them from the dashboard project. Does this make sense, or should I stick with the installer installations in each project separately and add them to the installation project one by one?
One more thing - is there an easy way to find where multiple commands are coming from within ArcMAP? I have some weird categories (created by past users on this computer) with old commands that I would like to remove.
a source to share
I think it makes sense. You just have to make sure that everything is in the right place when the installer (like in Wise, installshield, etc.) calls RegisterAssembly and UnregisterAssembly on your installer assembly. For example, if deleting removes your "command" assemblies before calling UnregisterAssembly, this could be a problem. I think you just need to check it to find out. As long as you know that all "team" builds will be available, it looks like it will work fine.
You can also fix this problem simply by including the shared installation code in a separate shared assembly and always run the installer classes.
a source to share
A better and more convenient workflow would be to have all ect commands in one library / assembly itself. This way you only have one DLL to register.
As for finding the DLL that other custom tools come from: there is a trick. Debug any custom ArcGIS extension or sample that launches ArcMap. Watch out for the output window in Visual Studio. This will give you a list of all DLLs loaded by ArcMap.
a source to share