惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
D
DataBreaches.Net
M
MIT News - Artificial intelligence
量子位
N
Netflix TechBlog - Medium
The Cloudflare Blog
The GitHub Blog
The GitHub Blog
P
Proofpoint News Feed
人人都是产品经理
人人都是产品经理
B
Blog RSS Feed
B
Blog
博客园_首页
博客园 - Franky
MyScale Blog
MyScale Blog
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
MongoDB | Blog
MongoDB | Blog
云风的 BLOG
云风的 BLOG
爱范儿
爱范儿
H
Help Net Security
Y
Y Combinator Blog
Stack Overflow Blog
Stack Overflow Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
酷 壳 – CoolShell
酷 壳 – CoolShell

博客园 - 元宝

2019年以后ArcGIS 调用天地图的资源URL xmlSpy套件(Altova MissionKit 2016)的Ollydbg调试过程及破解 RockWare RockWorks的Ollydbg调试过程及注册机(破解)思路 [转] SQL删除重复数据只保留一条 自已动手制做“0中带斜杠”的矢量字体 颜色直方图 HSI、HSV、RGB、CMYK、HSL、HSB、Ycc、XYZ、Lab、YUV颜色模型的区别 Visual MODFLOW4.1中文版学习资料 VS2005的C#使用WORD COM组件 英语飙升的好方法 ArcGIS删除重复点数据 如何完全卸载并重装ArcGIS ArcGIS Server分布式安装 Google Map浏览下载器 TTF文件的制作——打造属于自己的字体 .NET中获取系统硬件信息 Arcgis数据转换经验三测 地质三维软件Ctech(MVS,EVS-PRO)破解版 Visual MODFLOW4.1中文破解版
制作ArcGIS DLL插件的安装包
元宝 · 2010-07-01 · via 博客园 - 元宝

当我们编写了一个ArcGIS扩展DLL文件后,如何将它载入到ArcGIS程序中呢?这个很简单,无非是在“定制”面板中点击“Add from file”命令导入即可,但如果类实现了IDockableWindowDef,我们就得在组件管理器中将其再注册一次,这样做非常麻烦。

如果是自己写个DLL玩玩尚可,这也算不上什么了不起的工作,但如果你是给客户开发DLL,显然人家是不会接受这种安装方式的,那么,如何将DLL打成安 装包呢?

其实这个问题非常简单,一般的COM DLL如果要在操作系统中能被调用,肯定得注册到注册表中,这个过程可以使用命令regsvr32来实现,但如果你用这种方式注册ArcMap的DLL, 绝不会出现在ArcMap的命令栏、工具栏或浮动窗体一栏中,这是因为该COM的类虽然已经被注册,但并没有添加到正确的组件类型中去。因此,Add from file命令做了两件事情:1.调用Regsvr32注册DLL 2.将DLL中的类添加到正确的类型中。但是,这个命令并没有考虑IDockableWindowDef的类型情况,所以我们还得手工添加一次。

怎么样自动完成这个过程呢?也并不复杂,如果你是用VB写的DLL,在编写完成后,点击VB6中外接程序的ESRI Compile and Register命令,会弹出一个对话框,我们需要将左边的类对应正确的类型(在右边栏中),然后点击Compile按钮,在生成DLL的同时,也会产生 一个REG文件,我们来看看这个文件的内容:

来源:(http://blog.sina.com.cn/s/blog_4dc31b560100jhcs.html) - 制作ArcGIS DLL插件的安装包_SONGHQ_新浪博客

REGEDIT4
; This Registry Script enters CoClasses Into their appropriate Component Category
; Use this script during installation of the components
;
; It also lists all coclasses contained within the DLL
; CoClass: NBGISDataTools.cDataToolbar
; CLSID: {2AD16237-34B1-4BDD-85E7-BF4E0217915A}
; Component Category: ESRI Mx CommandBars
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{2AD16237-34B1-4BDD-85E7-BF4E0217915A}\Implemented Categories\{B56A7C4A-83D4-11D2-A2E9-080009B6F22B}]

; CoClass: NBGISDataTools.cDynamicDisplay
; CLSID: {13538A84-0856-4C07-8013-4539321D454E}
; Component Category: ESRI Mx Commands
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{13538A84-0856-4C07-8013-4539321D454E}\Implemented Categories\{B56A7C42-83D4-11D2-A2E9-080009B6F22B}]

这是文件的一个片段,好了。现在我们使用regsvr32将DLL进行注册,然后双击这个REG文件,然后打开ArcMap,你会发现相应的工具条或命令 已经出现了。

既然知道了注册的过程,那将它打包就更容易了,在Installshield中新建一个项目,添加需要注册的DLL,然后在Regedit栏目中将这个 REG文件导入即可,就是这么容易。