本文是去年《ArcGis Classic COM Add-Ins插件开发的一般流程 C#》一文(以下称“开发流程”)的后续。“开发流程”中写到会有“安装与卸载”系列的文章,今天把它补上。

想起这个事情来缘由是一个小朋友问我怎么卸载插件。那厮是不是小朋友无法确定,不过从交流方式看挺符合“小朋友”的特征,他给我发的第一条信息是“怎么卸载?”怎么尼妹啊,天知道你说的啥,于是我让他看上面的文章自己研究去了……

一、安装

1、常用方法Add from file

在ArcMap中【自定义Customize】—【自定义模式Customize mode】—【自文件 Add from file】,添加.tlb文件。

要清楚.tlb是依赖.dll而存在的,不要删除、移动或者改名.dll。

开发流程”中写到“可以选择是否生成.tlb(Type Library)文件,可以通过在ArcGis的桌面程序中加载.tlb文件实现插件的加载”,也写到“不过这种加载方式有时会存在问题”。

这种方法适合加载一些commands, tools, and toolbars的组件,但是对于DockableWindow等的组件会有注册问题,也就是说这样安装插件,DockableWindow等的工具是不能用的。

具体的,官方帮助里是这样写的:

Use the Customize dialog box in ArcGIS applications to add commands, tools, and toolbars. Click the Add from File button on this dialog box to browse for the type library (.tlb) file created for your customization, then open it, which allows the ArcGIS Framework to add selected classes in the type library to the applicable component category.
This method is beneficial if you want to use an existing compiled component that contains command items (commands, tools, and toolbars) but does not have automatic registration code.
For .NET components, select the type library instead of the .dll file.

有兴趣扒洋文的,链接在这里→Registering classes in COM component categories

2、ESRIRegAsm.exe

自10.0开始ESri改变了以往的把COM组件注册信息写进注册表的注册方法,采用了自家的ESRIRegAsm.exe对dll进行注册,使用一个xml配置文件(.ecfg)保存注册信息。相关信息可以去翻看“开发流程”。ESRIRegAsm.exe在~:\Program Files\Common Files\ArcGIS\bin路径下。

注册成功会生成配置文件.ecfg,在~:\Program Files(Program Files x86)\Common Files\ArcGIS\Desktop10.0\Configuration\CATID路径下。

2.1手动

在需要安装注册的.dll上右键使用ESRIRegAsm.exe打开,选择要安装到的对象→注册就可以了,这个“对象”可以是Desktop,也可以是 Engine,它是在.dll的代码里写死的,比如下图的工具只能注册到desktop。相关信息移步阅读“开发流程”。

2.2自动

这种安装方式可以写一个批处理文件搞定,复制下面代码放到文本文档,把set b=%a%YTools.dll 的YTools.dll 改成你要安装的插件.dll名,保存,改扩展名为.bat,与.dll放到同一路径下,双击实现安装注册。

@echo off
echo 》安装插件到ArcMap……………………
set a=%~dp0
echo 》当前路径: %a%
set b=%a%YTools.dll
echo 》dll路径:%b%
if "%PROCESSOR_ARCHITECTURE%"=="x86" goto x86
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" goto x64
:x64
echo 》当前系统位数:64位
cmd /c"cd/d C:\Program Files (x86)\Common Files\ArcGIS\bin&&ESRIRegAsm.exe /p:desktop "%b%""
exit
:x86
echo 》当前系统位数:32位
cmd /c"cd/d C:\Program Files\Common Files\ArcGIS\bin&&ESRIRegAsm.exe /p:desktop "%b%""
exit
pause

批处理代码很简单,看不懂的就……放弃吧!

链接还是扔在这里,喜欢扒 洋文的自己戳→ESRIRegAsm utility

可以借由这种方式发布插件,实现用户一键注册。

二、卸载

在ArcMap顶部功能区右键勾掉,在“自定义”窗口勾掉,都不能卸载插件的,它只是不显示了而已。

1、在ArcMap勾掉插件项,然后删掉配置文件.ecfg

.ecfg在~:\Program Files\Common Files\ArcGIS\Desktop10.0\Configuration\CATID路径下,是{GUID}插件dll名.ecfg命名样式的一个文件,如{7a0b95da-488a-4dca-98fe-968ed7a12730}_YTools.ecfg

2、ESRIRegAsm.exe

2.1手动

在插件dll上右键使用ESRIRegAsm.exe打开,反注册。

2.2自动

还是用那个批处理代码,与安装代码的区别只在一个参数,有兴趣仔细瞅的还建议去看洋文。自己戳→ESRIRegAsm utility

@echo off
echo 》从ArcMap卸载本插件……………………
set a=%~dp0
echo 》当前路径: %a%
set b=%a%YTools.dll
echo 》dll路径:%b%
if "%PROCESSOR_ARCHITECTURE%"=="x86" goto x86
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" goto x64
:x64
echo 》系统位数:64位
cmd /c"cd/d C:\Program Files (x86)\Common Files\ArcGIS\bin&&ESRIRegAsm.exe /p:desktop /u "%b%""
exit
:x86
echo 》系统位数:32位
cmd /c"cd/d C:\Program Files\Common Files\ArcGIS\bin&&ESRIRegAsm.exe /p:desktop /u "%b%""
exit
pause

ArcGis Classic COM Add-Ins插件dll的安装与卸载的更多相关文章

  1. NSIS:使用PassDialog插件实现密码安装(卸载)功能

    原文 NSIS:使用PassDialog插件实现密码安装(卸载)功能 有时,出于特殊的需求,我们要给安装或卸载程序加一个密码,只有输入了正确的密码才可以继续.比如: 下面我们使用插件来实现安装密码: ...

  2. ArcGis Classic COM Add-Ins插件开发的一般流程 C#

    COM add-ins是我对这种开发方式的称呼,Esri的官方文档里称其为“Extending ArcObject”或者“Classic COM extensibility”,Esri所称的addin ...

  3. 在Revit中如何显示附件模块(Add Ins) 这个命令页?zz

      分类: 概念说明 Revit Revit界面编程 Revit 二次开发入门2013-08-22 13:58 1395人阅读 评论(9) 收藏 举报 在windows 7 32-bit OS 上装了 ...

  4. Dynamics CRM 注册插件dll到GAC

    以server2012为例,搜索cmd,打开红框中的命令框,gacutil.exe -i "dll路径" 通过该命令把需要用到dll注册进gac(这里包括你的插件dll和你插件中引 ...

  5. QML C++插件dll引用

    插件的创建非常简单,但是它可以复用,并且为不同的应用程序扩展类型.使用创建的插件是非常灵活的解决方案.关于插件一个很好的例子见QmlBook-In-Chinese 中最后一章介绍的例子. 本文主要备忘 ...

  6. arcgis python arcpy add data script添加数据脚本

    arcgis python arcpy add data script添加数据脚本mxd = arcpy.mapping.MapDocument("CURRENT")... df ...

  7. ArcGIS Desktop python Add-in Python 插件的文件结构

    如上图所示: 插件文件夹在根目录下有一个config.xml文件,这个文件保存有在向导添加的描述该插件的定制信息. 插件还有一个安装文件夹,这个文件夹的主要功能是存放Python脚本. 你可以在安装文 ...

  8. ionic插件安装与卸载

    使用下面的命令查询.安装.卸载插件: $ ionic plugin list //列出所有已安装插件 $ ionic plugin remove 插件名 //先根据上面的list列出插件,然后根据插件 ...

  9. jd-eclipse反编译插件的在线安装和使用

    jd-eclipse反编译插件的在线安装和使用 JD-Eclipse是一个Eclipse平台的插件.它允许您调试所有的Java源代码,有了它,以后调试的时候ctrl键就可以一键到底啦.下面简单说说ec ...

随机推荐

  1. python-重载

    重载概念 重载是对继承的父类方法进行重新定义.重载可以重新定义方法还可以重新定义运算符.因为通过继承的类不一定能满足当前类的需求.在当前类中只需要修改部分内容而达到自己的需求. 重载特点 减少代码量和 ...

  2. hbase 预分区与自动分区

    我们知道,HBASE在创建表的时候,会自动为表分配一个Region,当一个Region过大达到默认的阈值时(默认10GB大小),HBase中该Region将会进行split,分裂为2个Region,以 ...

  3. kubernetes deployment升级和回滚

    a.创建deployment pod kubectl run mynginx --image=docker.io/nginx: --record 准备svc文件 apiVersion: v1 kind ...

  4. MYSQL如何通过一张表更新另外一张表?

    1.背景说明 很多时候我们需要通过一张中间表的数据去更新另外一张表,而不仅仅是通过固定数值去更新,尤其是当数据量很大的时候,简单的复制粘贴就不大可行了. 2.MYSQL版本 SELECT VERSIO ...

  5. php中curl返回false的解决办法

    本文介绍一下自己在使用curl中遇到的问题解决办法.希望可以帮助到大家. 原文地址:代码汇个人博客 http://www.codehui.net/info/37.html 首先来看一个封装的curl函 ...

  6. Making A Circle Out Of Squares

    方形画圆 解决方案: 循环偏移5角度画方形 效果图: Python 源码 import turtle; window = turtle.Screen(); window.bgcolor("p ...

  7. go学习笔记(一)

  8. [十二省联考2019]D2T2春节十二响

    嘟嘟嘟 这题真没想到这么简单-- 首先有60分大礼:\(O(n ^ 2logn)\)贪心.(我也不知道为啥就是对的) 然后又送15分链:维护两个堆,每次去堆顶的最大值. 这时候得到75分已经很开心了, ...

  9. [BJOI2019]光线[递推]

    题意 题目链接 分析 令 \(f_i\) 表示光线第一次从第一块玻璃射出第 \(i\) 块玻璃的比率. 令 \(g_i\) 表示光线射回第 \(i\) 块玻璃,再射出第 \(i\) 块玻璃的比率. 容 ...

  10. 关于使用nodejs的mysql查询时碰到的坑

    今天在编写登录模块时,碰到一个隐蔽的坑,故记录一番 在使用Node.js的mysql模块的query方法时,查询语句使用了 `select password from login where name ...