Pregunta

Tengo varias bibliotecas de clases que contienen algunos comandos y auto-actualizadores para ArcGIS. Hasta ahora, cada biblioteca que contiene una clase de instalador, y tuvimos un solo proyecto de instalación que estaba a cargo de la instalación de todos los archivos DLL. Al igual que aquí . < br> Ahora he creado otra biblioteca que contiene una barra de herramientas, que debe contener todos los comandos que tenemos. El proyecto refrences los otros proyectos, y el AddItem (De la clase base BaseToolbar) está utilizando la sobrecarga de AddItem(Type type), tenerlo todo inflexible y no sólo sobre la base de cadenas (por CLSID o nombres).
Naturalmente, el proyecto contiene la barra de herramientas insallter. Sólo quería saber si es una buena idea para cambiar la implementación instalador sugerido (desde el enlace anterior), por lo que se asegurará de dlls todos los comandos serán registrados (interactuando sobre archivos DLL en la carpeta de salida, y el registro ellos? ¿hay alguna manera mejor?)
Esto moverá la preocupación de la instalación de cada proyecto de comandos, en un lugar centralizado. Creo que va a ser más fácil de esta manera de añadir más comandos, ya que sólo tendrá que añadir una referencia a ellos desde la barra de herramientas del proyecto. ¿Tiene sentido, o debería atenerse a poner un instalador en cada proyecto éste por separado, y agregarlos a la proyecto de instalación por uno?

Y otra cosa - ¿hay una manera fácil de encontrar en varios comandos están viniendo, dentro de la ArcMAP? Tengo algunas categorías extrañas allí (creado por los usuarios pasadas en esta máquina), con comandos viejos que me gustaría eliminar.

¿Fue útil?

Solución

Creo que tiene sentido. Sólo tienes que estar seguro de que todo está en el lugar correcto cuando el instalador (como en Wise, InstallShield, etc.) invoca RegisterAssembly y UnregisterAssembly en su conjunto del instalador. Por ejemplo, si la desinstalación elimina sus asambleas "comando" antes de llamar UnregisterAssembly que podría ser un problema. Creo que sólo hay que probarlo para averiguar. Como siempre que se sepa que todos los montajes de "comando" estarán disponibles, parece que funcionaría bien.

También puede resolverlo con sólo incluyendo el código de instalación común en un conjunto común separada e implementar las clases instalador siempre.

Otros consejos

Un flujo de trabajo mejor y más conveniente sería tener todos los comandos de TEC en una biblioteca / montaje en sí. De esta manera sólo tiene un DLL para registrarse.

En cuanto a la búsqueda de los archivos DLL que otras herramientas personalizadas se viene: Hay un truco. Depurar cualquier extensión ArcGIS encargo o de la muestra, que se extiende ArcMap. Mantenga un puesto de observación en la ventana de resultados en Visual Studio. Esto le dará una lista de todas las DLL que se cargan por ArcMap

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top