2009-05-25 134 views
0

我有幾個類庫包含ArcGIS的一些命令和自動更新程序。到目前爲止,每個庫都包含一個安裝程序類,並且我們有一個負責安裝所有dll的安裝項目。就像in here一樣。
我現在已經創建了另一個包含工具欄的庫,它應該包含我們擁有的所有命令。該項目參考了其他項目,並且AddItem(來自BaseToolbar基類)使用AddItem(Type type)重載,強制類型化,而不僅僅基於字符串(對於CLSID或名稱)。
當然,工具欄項目包含insallter。我只想知道是否改變建議的安裝程序實現(從上面的鏈接)是一個好主意,這樣它將確保所有命令的dll都將被註冊(在輸出文件夾中迭代dll文件並註冊他們有沒有更好的辦法?)
這會將安裝問題從每個命令項目移到一個集中的地方。我認爲用這種方式添加更多命令會更容易,因爲我只需要從工具欄項目中添加對它們的引用。這是否有道理,還是應該堅持把安裝程序分別安裝到每個項目中,並將它們逐個添加到安裝項目中?arcgis com註冊

另一件事 - 是否有一種簡單的方法可以找到ArcMAP中的幾個命令來自哪裏?我有一些奇怪的類別(由本機上的過去用戶創建),以及我想刪除的舊命令。

回答

0

我認爲這是有道理的。當安裝程序(如Wise,installshield等)在您的安裝程序組件上調用RegisterAssembly和UnregisterAssembly時,您必須確保一切都在正確的位置。例如,如果在調用UnregisterAssembly之前,卸載程序會刪除您的「命令」程序集,這可能會造成問題。我認爲你只需要測試一下就可以發現。只要你知道所有的「命令」程序集都可以使用,看起來它可以正常工作。

您也可以通過將通用安裝代碼包含在單獨的常用程序集中並始終實現安裝程序類來解決此問題。

0

更好,更方便的工作流程將是在一個庫/程序集本身中擁有所有命令。 這樣你只有一個DLL註冊。

至於找到其他自定義工具來自的dll:有一個技巧。 調試運行ArcMap的任何自定義ArcGIS擴展或樣例。在Visual Studio中留意輸出窗口。這會給你一個由ArcMap加載的所有dll的列表。

+0

是的,我知道我們應該爲我們所有的命令製作一個Commands dll。應該有關鍵詞:-) 感謝vs技巧。我會看看那個清單。 – 2009-06-04 05:21:17