Uruchom aplikację ArcGIS 10.1 na 10.2

10

Obsługuję aplikację .NET, która została skompilowana na komputerze z zainstalowanym ArcGIS 10.1. Aplikacja zawiera interfejs użytkownika i rozszerzenie pulpitu ArcGIS, a także zestaw instalatora, który jest wywoływany przez Instalatora Windows w celu zarejestrowania rozszerzenia pulpitu podczas instalacji.

Problemem jest to, że aplikacja nie działa na komputerze z ArcGIS 10.2, ponieważ nie znaleziono zestawów ESRI 10.1, więc ulega awarii. Wygląda na to, że ponieważ ESRI wer. 9.3 nie dostarcza już plików zasad wydawcy, aby przekierować program w czasie wykonywania do najnowszych wersji.

Udało mi się przekierować program w celu załadowania zestawów 10.2, dodając powiązanie zestawu wykonawczego do pliku .exe.config aplikacji. Nie przekierowuje to jednak rozszerzenia pulpitu i nie rozwiąże problemu z instalatorem szukającym bibliotek 10.1 podczas instalowania aplikacji.

Wydaje się, że rozwiązaniem ESRI jest ponowna kompilacja aplikacji za każdym razem, gdy wydawana jest nowa wersja ArcGIS. Oznacza to jednak, że musiałbym mieć kopię każdej wersji ArcGIS, z której korzystają użytkownicy końcowi. I musiałbym odinstalowywać i ponownie instalować różne wersje za każdym razem, gdy muszę zmienić kod aplikacji, aby go ponownie skompilować.

Czy ktoś ma jakieś sugestie? Czy biblioteki można ładować dynamicznie w czasie wykonywania, aby uniknąć szukania określonej wersji? Czy jest jakieś inne rozwiązanie?

Andy
źródło

Odpowiedzi:

2

Ustaw odniesienia ArcGIS w swoim projekcie, aby używały następujących właściwości:

Copy Local = False
Specific Version = False

W większości przypadków sprawi to, że twój program będzie kompatybilny z przyszłością, zakładając, że nie używasz żadnych obiektów arkadowych, które były przestarzałe lub mają przełomowe zmiany.

Bogaty Wawrzonek
źródło
Mam już te ustawienia w Visual Studio. „Określona wersja = fałsz” wpływa tylko na sposób ładowania referencji przez Visual Studio, a nie po zbudowaniu i wdrożeniu aplikacji.
Andy,
2

Najlepszym rozwiązaniem może być zmiana architektury projektu na dodatek ESRI. W ten sposób unikniesz zajmowania się Instalatorem Windows, który, jeśli dobrze rozumiem twoją architekturę, zajmuje się rejestrem systemu Windows.

Dodatki są znacznie prostsze, nie wymagają instalatorów specyficznych dla systemu Windows, są po prostu dostarczane jako specjalny plik .zip, który jest typem pliku .esriAddIn i są zalecane przez ESRI. Nie dotyczą one rejestru systemu Windows, tylko ESRI i instalują jednym kliknięciem pliku. Powinni lepiej egzekwować zmiany, które zasugerował Rich Wawrzonek.

Dodatkowo ESRI stwierdził ( patrz tutaj prezentacja ), że w głównych wersjach, tj. 10.x Dodatki są wstecznie kompatybilne, tj. 10.2 może używać dodatków 10.1 i 10.0, 10.1 może używać dodatków 10.0. Z zastrzeżeniem, że powinieneś być świadom, że rzeczy zostały usunięte lub zmienione w ArcObjects podczas przejścia.

Na przykład sygnatura metody dla metody OnContextMenu została zmieniona w 10.2 dla następujących interfejsów:

  • IDocumentEvents
  • IGxDocumentEvents
  • IGMxDocumentEvents
  • ISxDocumentEvents

W zakresie przeprowadzek jedynymi przeprowadzkami w 10.2 były :

  • MaplexUI
    • MaplexExtension
    • MaplexExtensionClass

Reszta zmian została dodana funkcjonalność.

Aby odpowiedzieć na twoje pytanie w komentarzach poniżej, tak, to powinno zagwarantować, że nie będziesz musiał kompilować dla różnych wersji Arc (dopóki pozostaniesz w wersji 10.x). Kiedy przechodzą na 11, może to być inna historia. Jeśli chodzi o obsługę MapInfo, nie znam tego.

GeoSharp
źródło
Dziękuję za sugestię, ale mam dwie przemyślenia: 1. Czy to gwarantuje obejście problemu wersji DLL, czy też dodatek nadal wymaga ponownej kompilacji dla każdej wersji ArcGIS? Problem nie dotyczy instalatora ani rejestru - problem polega na tym, że ESRI nie dostarcza już plików zasad wydawcy z nowymi wydaniami. 2. Moja aplikacja jest przeznaczona nie tylko dla ArcGIS, ale działa również z MapInfo. Tak więc większość aplikacji jest samodzielnym interfejsem i tylko niewielka część kodu dotyczy ArcGIS lub MapInfo.
Andy,
Andy widzi dodatki do mojej odpowiedzi, aby odpowiedzieć na twoje obawy.
GeoSharp,