ArcGis Classic COM Add-Ins插件dll的安裝與卸載


本文是去年《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.dllYTools.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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM