Problem: The 'SDK for .NET' option is disabled when running MapObjects 2.2 set up


During the setup installation process for the MapObjects version 2.2, the new product or upgrade, one of the options which can be selected in the Select Components window is 'MapObjects SDK for .NET'. If the machine has .NET Framework, version 1.0 installed, that option will be selectable. However, if the machine has the .NET Framework version 1.1 or newer installed, the 'MapObjects SDK for .NET' may remain disabled.

How is SDK for .NET installed if the option to install it is OFF and disabled?

This is not a problem in MapObjects 2.3 and above.


The MapObjects setup program searches the local machine's registry for a specific key value which tells the setup program the location of the .NET Framework's GACUTIL.EXE for version 1.0. When MapObjects version 2.2 was originally released, the current version of .NET was 1.0. However, when .NET Framework version 1.1 was released, Microsoft changed the name of the Registry key value in which the path to the GACUTIL.EXE is stored. If your machine never had version 1.0 installed, but you do have version 1.1 or higher installed, attempts to install MapObjects version 2.2, will not find the location of the GACUTIL.EXE and the option to install the 'MapObjects .NET SDK' will be disabled and remain unselected.

The instructions below assume you want to enable MapObjects to work with .NET version 1.1. For later verisons of .NET, substitute the name of the registry key accordingly. For .NET 2.0, for example, look for the registry key 'sdkInstallRootv2.0' instead of 'sdkInstallRootv1.1'.

Solution or Workaround

WARNING: This article contains instructions to make specific changes to essential parts of your operating system. If these specific changes are not done correctly, it may cause serious problems to your computer operating system and files. First, ESRI recommends that you make a complete backup of your system, including the registry, before implementing any of the specific changes. It is highly recommended that you consult with your IT/MIS department, or other qualified computer systems professional before proceeding. ESRI cannot guarantee that you can solve problems that result from incorrect use of the Registry Editor utility. Use the Registry Editor utility at your own risk. Note: your operating system and any subsequent service packs may effect these instructions. These instructions are subject to change without notice.

This solution requires administrator permissions on the PC on which you want to use MapObjects with your .NET IDE.

  1. Use the Registry Editor REGEDIT.EXE to navigate to the key location:
  2. In the key, on the right panel of the Registry Editor application, find 'sdkInstallRootv1.1' in the Name column and its value in the Data column. This data value is a string which is the path in which the 'bin\gacutil.exe' is stored. Also verify that you have another named value called 'sdkInstallRoot' in the same key.
  3. If you do have an entry called 'sdkInstallRoot', check that the value, in the Data column, is the exact same string as in the 'sdkInstallRootv1.1' data value. If yes, close REGEDIT and go to Step 4.

    If you have an entry called 'sdkInstallRoot', but its value is different than the value for 'sdkInstallRootv1.1', keep track of the sdkInstallRoot current data value for use later, and modify it so that it is the exact data value as in 'sdkInstallRootv1.1' and proceed to Step 4.

    To modify a value, right-click the 'sdkInstallRoot' name, and select Modify from the popup menu.

    If you do not have an entry in the Name column called 'sdkInstallRoot', use the Edit menu's New > String Value menu item to add it to this key, and set its value to be the exact string as in the 'sdkInstallRootv1.1' value. Close REGEDIT and proceed to Step 4.

  4. Run the MapObjects 2.2 setup program 'MO22Setup.exe' found on the installation CD, to install MapObjects onto your machine. In the Select Components window, you should see that 'MapObjects SDK for .NET' is enabled and selected.
  5. Go back to Step 3 to check on any of the following:

    A. If the 'sdkInstallRoot' already existed, and its data value was exactly the same as the 'sdkInstallRootv1.1' value, you are done; or

    B. If the 'sdkInstallRoot' already existed, but its data value was something other than the 'sdkInstallRootv1.1' data value, and you modified it, then use REGEDIT to change the 'sdkInstallRoot' value back to its original value; or

    C. If the 'sdkInstallRoot' name did not exist, and you added it, use REGEDIT to delete it. It is no longer needed. It is important this is done, so that use of other software that checks this key is not tricked into thinking you have the 1.0 version of the .NET Framework installed.