4

I haven't found any info on this particular problem so let me try here.

My job is to migrate a 9.3 desktop extention to 10.3, keeping the app in the original COM-based format (not converting it to an add-in).

During debugging in Visual Studio 2010, I had to enable 'make assembly COM visible' for it to be registered to ArcGIS, otherwise it didn't show. After setting up the windows setup project en building in release with the right setting it succesfully finished the installation, included and installed all the depencies in the correct directory and was visible in my installed programs list.

The thing is, it DID show up correctly on my machine (even after fully cleaning the solution and unistalling dev or previous builds), but NOT on any other machine with version 10.3.0/1.

What I have tried so far:

  • making sure the application installation folder was correctly set in the setup project and the installation was being done there.
  • made a new setup project with the same settings (there was an old version checked in to the repo)
  • correct .NET version (3.5) as installation prerequisite, same as all the projects/class libraries in the solution
  • enabled/disable the options 'register for COM interop' and 'make COM visible' for the main project
  • built all esri-related projects in x86 explicitly instead of anyCPU
  • checked if Register property on the main projects assembly was set to 'vsdrfCOM'

Now I found out that the dll does get registered but there is some kind of safety check that doesn't add it to ArcMap upon registration. If it is not in the 'ESRI mx extension category' (C:\Program Files (x86)\ArcGIS\Desktop10.3\bin\Categories.exe) then it will never be visible in ArcMap!!

But it appears that you can add it manually by opening the category importer, as shown below

enter image description here

How do I avoid this step? Does anyone have more info on this problem? I don't seem to find much on "arcgis category importer" or the message...

I'm on windows 10 btw, the other test machines are on 8 and 10

  • 2
    It's been a few years since I had to create an extension which is not an addin. I have some vague memory of using regasm.exe to register .net developments, are you using that? – Hornbydd May 26 '16 at 9:33
  • @Hornbydd that's indeed something I came across ass well, not using it explicitly, but the registration has to be included in the setup process, I don't want the client to have to make additionnal manipulations. Since version 10 esri provided their own utility called ESRIRegAsm.exe. I should investigate this further if this somehow can be ran form the innstaller. – bvh9000 May 26 '16 at 9:49
  • 2
    Ah yeah ESRIRegAsm.exe may be it was that I was thining of? – Hornbydd May 26 '16 at 9:54
  • Yep, the installer class in the main project takes care of checking the registry for this utillity and runs it during install and unistall, so I think in most cases you don't need to use cmd or batch to do the registration – bvh9000 May 26 '16 at 16:47
1

You can 'register' your dll as follows: Right click on output dll -> Open with -> Select Esri Registration Assembly Utility -> Register with ArcGIS Desktop. Or on command line with admin rights:

"C:\Program Files\Common Files\ArcGIS\bin\ESRIRegAsm.exe" output.dll /p:desktop
1

In 9.x you only had to register your extensions w/ the OS COM framework. In 10.x they added ESRI specific (IIRC .xml) files that store extension information. Your installer needs to get your extensions added to the appropriate ESRI registration file(s). The easiest way to do this is to do as others have mentioned - use ESRIRegAsm.exe.

See: ESRIRegAsm utility

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.