регистрация ArcGIS Com - PullRequest
0 голосов
/ 25 мая 2009

У меня есть несколько библиотек классов, содержащих некоторые команды и автообновления для ArcGIS. До сих пор каждая библиотека содержала класс установщика, и у нас был один проект установки, который отвечал за установку всех библиотек DLL. Также как здесь .
Теперь я создал еще одну библиотеку, содержащую панель инструментов, которая должна содержать все имеющиеся у нас команды. Проект ссылается на другие проекты, и AddItem (из базового класса BaseToolbar) использует перегрузку AddItem(Type type), чтобы все это было строго типизировано, а не только на основе строк (для CLSID или имен).
Естественно, проект панели инструментов содержит инсальтер. Я просто хотел знать, будет ли хорошей идеей изменить предложенную реализацию установщика (по приведенной выше ссылке), чтобы он гарантировал, что все dll команд будут зарегистрированы (перебирая файлы dll в выходной папке и регистрируя их? Есть какой-нибудь лучший способ?)
Это перенесет проблему установки из каждого командного проекта в централизованное место. Я думаю, что таким способом будет проще добавить больше команд, поскольку мне нужно будет только добавить ссылку на них из проекта панели инструментов. Имеет ли это смысл, или я должен придерживаться установки программы установки в каждом проекте отдельно и добавления их в проект установки один за другим?

И еще один момент - есть ли простой способ найти источник нескольких команд внутри ArcMAP? У меня есть несколько странных категорий (созданных прошлыми пользователями на этом компьютере) со старыми командами, которые я хотел бы удалить.

Ответы [ 2 ]

0 голосов
/ 03 июня 2009

Лучшим и удобным рабочим процессом было бы объединение всех команд в одной библиотеке / сборке. Таким образом, у вас есть только одна DLL для регистрации.

Что касается поиска библиотек, из которых поступают другие пользовательские инструменты: есть хитрость Отладка любого пользовательского расширения или примера ArcGIS, на котором работает ArcMap. Следите за окном вывода в Visual Studio. Это даст вам список всех DLL, которые загружены ArcMap

0 голосов
/ 26 мая 2009

Я думаю, что это имеет смысл. Вы просто должны быть уверены, что все находится в нужном месте, когда установщик (как в Wise, installshield и т. Д.) Вызывает RegisterAssembly и UnregisterAssembly в вашей сборочной программе установки. Например, если удаление удаляет ваши «командные» сборки перед вызовом UnregisterAssembly, это может быть проблемой. Я думаю, что вы просто должны проверить это, чтобы узнать. Пока вы знаете, что все «командные» сборки будут доступны, кажется, что все будет работать нормально.

Вы также можете решить эту проблему, просто включив общий установочный код в отдельную общую сборку и всегда реализуя классы установщика.

...