arcgis com注册

时间:2009-05-25 10:53:50

标签: com installation arcgis

我有几个类库,包含ArcGIS的一些命令和自动更新程序。到目前为止,每个库都包含一个安装程序类,我们有一个安装项目,负责安装所有的dll。就像in here一样 我现在创建了另一个包含工具栏的库,它应该包含我们拥有的所有命令。该项目引用其他项目,AddItem(来自BaseToolbar基类)使用AddItem(Type type)重载,使其全部强类型而不仅仅基于字符串(对于CLSID)或者姓名) 当然,工具栏项目包含了insallter。我只是想知道更改建议的安装程序实现(从上面的链接)是否是一个好主意,这样它将确保所有命令的dll将被注册(在输出文件夹中迭代dll文件,并注册他们?有更好的方法吗?)
这会将安装问题从每个命令项目转移到集中的位置。我认为这样添加更多命令会更容易,因为我只需要从Toolbar项目中添加对它们的引用。这是否有意义,或者我应该坚持在每个项目中单独安装一个安装程序,并将它们逐个添加到安装项目中?

另一件事 - 是否有一种简单的方法可以在ArcMAP中找到几个命令的来源?我有一些奇怪的类别(由这台机器上的过去用户创建),我想删除旧命令。

2 个答案:

答案 0 :(得分:0)

我认为这是有道理的。当安装程序(如Wise,installshield等)在安装程序集上调用RegisterAssembly和UnregisterAssembly时,您必须确保所有内容都在正确的位置。例如,如果卸载在调用UnregisterAssembly之前删除了“命令”程序集,则可能会出现问题。我想你只需要测试它就可以找到答案。只要您知道所有“命令”程序集都可用,它似乎可以正常工作。

您也可以通过将公共安装代码包含在单独的通用程序集中来解决它,并始终实现安装程序类。

答案 1 :(得分:0)

更好,更方便的工作流程是将所有命令放在一个库/程序集本身中。 这样你只需要一个dll来注册。

至于找到其他自定义工具来自的dll:有一个技巧。 调试运行ArcMap的任何自定义ArcGIS扩展或示例。请注意Visual Studio中的输出窗口。这将为您提供ArcMap加载的所有dll的列表