Select to view content in your preferred language

Version and/or license compatibility issues in Arcgis Products

4679
4
06-23-2015 06:00 AM
murataydemir
Deactivated User

I have developed a stand-alone application using Arcobjects SDK 10.2.2 for .NET . I can run this app. when arcgis Desktop 10.2.2 is already installed on any other computer, but not on a computer with 10.3 (or other versions) installed.

Is it possible to run an app. developed with 10.2.2 SDK and environment, on 10.3 installed platform ? and how?

Best regards

0 Kudos
4 Replies
SamiEria
Deactivated User


Hello Murat,

The answer to your question is, NO, there is no way to run an older version of a stand-alone (Engine) ArcObjects application on a computer running a newer version of ArcGIS/ArcObjects. The same applies for the reverse situation; you cannot run an Engine application on a computer running an older version of ArcGIS/ArcObjects. Engine applications are neither forward, nor backward compatible. They only work on the platform for which they were compiled.

You will need to recompile your stand-alone (Engine) application for every newer/older version of ArcGIS. The recompilation process might require you to follow a careful migration workflow to take into account the fact that certain assemblies might have been deprecated or removed at newer versions of ArcGIS, while others might be missing at the older versions. 

I hope this answers your question.

Toddfrisvold1
Emerging Contributor

Sami,

I have another thread with a similar discussion (https://community.esri.com/thread/162083)... and there is a way to allow a stand-alone app to function on a system with a different version of ArcGIS install than the version the app was built on however it requires the installation package for the app to include the ArcGIS/ESRI referenced assemblies.  I understanding is this is against the ESRI license policy to redistribute the ESRI assemblies with your application built on ArcObjects.  Since the application packaged with the assemblies still require as ESRI ArcGIS/ArcEngine license function, shouldn't the ArcObjects license allow redistribution of the assemblies???

Thoughts?

Todd

0 Kudos
SamiEria
Deactivated User

Thank you for the follow-up question. From the other thread, it appears that your original question about the "possibility" of being able to compile and run Engine Apps at different versions of ArcGIS has been answered. Much as it is possible to do it, such a workflow would be in violation of ESRI's end user License Agreement.

Please view the license agreement here: http://www.esri.com/~/media/Files/Pdfs/legal/pdfs/mla_e204_e300/english

Article 4, Section 4.2, sub-section (c) states the following:

4.2 Uses Not Permitted. Except to the extent that applicable law prohibits or overrides these restrictions, or as provided herein, Licensee shall not:

(C) Distribute Software, Data, or Online Services to third parties, in whole or in part, including, but not limited to extensions, components, or DLLs.

I hope this answers your question with regard to the redistribution of ESRI-owned assemblies. The license agreement explicitly prohibits it.

0 Kudos
Toddfrisvold1
Emerging Contributor

I understood the license agreement however that was not my question.  My question has to do this this problem:

For an application developer to support and ArcObjects application on multiple versions of ArcGIS (ie 10.0, 10.1, 10.2, 10.3, ...) they would need to a separate install package built against each version of ArcGIS, in this case 4 release packages.

If ESRI would allow ArcObjects developers to package the build referenced DLLs with their application package, in this case I would build against ArcGIS 10.0, and it could run against all versions of ArcGIS (10.0, 10.1, 10.2, 10.3,...). Since the application packaged with the assemblies would still require as ESRI ArcGIS/ArcEngine license function, wouldn't it be a good idea for the ArcObjects license to allow redistribution of the assemblies???

Another work around would be to allow redirecting older assembly references to the newer assembly DLL.  For example, when an application build on ArcGIS 10.0 with reference to a ESRI.ArcGIS.Verison.dll 10.0.0.0 is installed on a system with ArcGIS 10.2 install which has a registered ESRI.ArcGIS.Version 10.2.0.0 installed, at runtime, the call to the ESRI.ArcGIS.Verison.dll 10.0.0.0 can be redirected to ESRI.ArcGIS.Verison.dll 10.2.0.0.  The ArcGIS 10.2 installation has a ESRIRegAsm.exe.conf that looks like it is supposed to make this mapping:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

  <dependentAssembly>

    <assemblyIdentity name="ESRI.ArcGIS.Version" culture="" publicKeyToken="8fc3cc631e44ad86"/>

    <bindingRedirect oldVersion="9.3.0.0-10.1.0.0" newVersion="10.2.0.0"/>

  </dependentAssembly>

  </assemblyBinding>

  If this supposed to work this way???  I have been asking this question and have not had an answer yet??? Do we know the purpose of this binding redirect???  If this would work, then my application build on ArcGIS 10.0 without local copies of the ESRI DLL's would work.

Thoughts???

0 Kudos