本文是去年《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. windows下为qt msvc版本配置调试器

    原文:https://blog.csdn.net/whatnamecaniuse/article/details/80716616 根据开发机的环境,下载 我的机器是win10,因此下载win 10 ...

  2. linux 系统shell运行程序不退出

    如果通过ssh远程连接到linux系统终端,在shell下执行程序.假如程序名称为app,且程序本身会一直执行不退出,程序执行需要参数文件paramfile. 当我们用 ./app paramfile ...

  3. vue typescript ui库

    https://blog.csdn.net/phj_88/article/details/81302043 vuetifyjs

  4. js操作文章、字符串换行

    操作前: 操作后: 第一步: 把中英文的逗号和顿号置换为 '\n’ support_unit = support_unit.replace(/,|,|./g, '\n')   第二步: //为了使\n ...

  5. Spring第一天——入门与IOC

    大致内容 spring基本概念 IOC入门 [17.6.9更新],如何学习spring? 掌握用法 深入理解 不断实践 反复总结 再次深入理解与实践 一.Spring相关概念  1.概述: Sprin ...

  6. ABP之启动配置

    ASP.NET Boilerplate提供了在StartUp中配置其模块的基础设施和模型. 配置ASP.NET Boilerplate 配置ABP是在模块的PreInitialize 方法中做的,如下 ...

  7. 关于ES6的module的循环加载

    今天写js时,碰到了一个模块循环加载的错误,下面时例子: // testa.mjs import testb from './testb.mjs'; const {b} = testb; const ...

  8. 如何改善SSH连接过慢(效率)

    +++++++++++++++++++++++++++++++++++++++++问题:通过SSH链接远程Linux主机过慢.重点:学习如何通过调整ssh_config配置文件,提高SSH连接效率.时 ...

  9. mybatis中常见的问题总结

    如下所有举例基于springboot+mybatis项目中,SSH使用mybatis的写法也一样,只是形式不同而已 问题1.org.apache.ibatis.binding.BindingExcep ...

  10. nginx基础之【study one】

    Nginx是种代理服务器,即可以作为反向代理服务器.邮件服务器等HTTP服务器,支持很多第三方模块扩展,如GZip.SSL.FastCGI. 最常用的功能有Http反向代理.负载均衡和Web缓存: 1 ...