2009-05-25 3 views
0

Ich habe mehrere Klassenbibliotheken mit einigen Befehlen und Auto-Updater für ArcGIS. Bis jetzt enthielt jede Bibliothek eine Installer-Klasse und wir hatten ein einzelnes Setup-Projekt, das für die Installation aller DLLs zuständig war. Genau wie in here.
Ich habe jetzt eine andere Bibliothek erstellt, die eine Symbolleiste enthält, die alle Befehle enthalten sollte, die wir haben. Das Projekt verweist auf die anderen Projekte, und die AddItem (Von der BaseToolbar Basisklasse) verwendet die AddItem(Type type) Überladung, um alles stark typisiert zu haben und nicht nur basierend auf Strings (für CLSID oder Namen).
Natürlich enthält das Toolbar-Projekt den Insallter. Ich wollte nur wissen, ob es eine gute Idee ist, die vorgeschlagene Installer-Implementierung zu ändern (von dem obigen Link), damit sichergestellt wird, dass alle DLLs der Befehle registriert werden (Iterieren über DLL-Dateien im Ausgabeordner und Registrieren) sie? Gibt es einen besseren Weg?)
Dies wird die Installation Sorge aus jedem Befehlsprojekt an einen zentralen Ort verschieben. Ich denke, dass es auf diese Weise einfacher ist, weitere Befehle hinzuzufügen, da ich ihnen nur eine Referenz aus dem Toolbar-Projekt hinzufügen muss. Ist das sinnvoll, oder sollte ich ein Installationsprogramm einzeln in jedes Projekt einfügen und sie dem Setup-Projekt einzeln hinzufügen?arcgis com Registrierung

Und noch etwas - gibt es eine einfache Möglichkeit, wo innerhalb ArcMAP mehrere Befehle kommen? Ich habe dort einige seltsame Kategorien (erstellt von früheren Benutzern auf diesem Rechner), mit alten Befehlen, die ich gerne entfernen würde.

Antwort

0

Ich denke, es macht Sinn. Sie müssen nur sicher sein, dass alles an der richtigen Stelle ist, wenn das Installationsprogramm (wie in Wise, installshield, etc.) RegisterAssembly und UnregisterAssembly auf Ihrer Installer-Assembly aufruft. Wenn die Deinstallation beispielsweise Ihre "Befehls" -Assemblies vor dem Aufruf von UnregisterAssembly entfernt, könnte dies ein Problem sein. Ich denke, du musst es nur testen, um es herauszufinden. Solange Sie wissen, dass alle "Befehl" -Assemblys verfügbar sein werden, scheint es, als ob es in Ordnung wäre.

Sie können es auch lösen, indem Sie einfach den allgemeinen Installationscode in eine separate allgemeine Assembly aufnehmen und die Installer-Klassen immer implementieren.

0

Ein besserer und bequemerer Arbeitsablauf wäre, alle Befehle in einer Bibliothek/Baugruppe selbst zu haben. Auf diese Weise haben Sie nur eine DLL zu registrieren.

Zum Finden der DLLs, aus denen andere benutzerdefinierte Tools kommen: Es gibt einen Trick. Debuggen Sie alle benutzerdefinierten ArcGIS-Erweiterungen oder Beispiele, die ArcMap ausführen. Achten Sie auf das Ausgabefenster in Visual Studio. Dies gibt Ihnen eine Liste aller DLLs, die von ArcMap geladen werden

+0

Ja, ich weiß, wir hätten eine einzige Commands DLL für alle unsere Befehle gemacht. Sollte haben ist das Schlüsselwort :-) danke für den vs-Tipp. Ich werde diese Liste betrachten. –