WIX and ESRI Component Registration -> ?? BEST PRACTICE ?? <-

Discussion created by artifact on Jun 2, 2010
Latest reply on Jun 23, 2014 by
We are using Wix to deploy our custom extension and the various .dlls associated with it. I'm a bit curious what ESRI says is the best practice for deploying custom solutions. I have dug through the documentation but there seems to be a lack of information regarding deployment outside of using a Visual Studio setup. Now, because ESRI components no longer make use of the regasm.exe utility, it has now become more difficult for us to register the components using Wix.

Previously we could use heat.exe which would generate a clean fragment for registering assemblies and directly integrate into the installer. This means that the elevated user permissions of the installer itself would deal with the registration. This gave us the ability to perform rollbacks and proper uninstalls. With the new ESRIRegasm.exe This is no longer an option. So what approach should we now be taking?

1. On post-install run a custom action using ESRIRegasm, and thus making harvests of our assemblies more manual oriented and difficult and losing the ability to perform proper rollbacks and uninstalls with out the addition of several more custom actions.

2. Copy the .ecfg file located in: C:\Program Files\Common Files\ArcGIS\Desktop10.0\Configuration\CATID\ and make wix deploy this to the same user directory. This means we have to hard code a path into the installer as well as our build script (YUCK!) Thus we would have to update everything when ESRI decides to change directories for this information.

3. Write our own custom .ecfg creator, This might be an option but I have noticed that the XML format itself has changed slightly over time as ArcGIS has moved from 9.4 b1 to the current 10.0 pre-release.

Some documentation regarding best practices for solution deployment would certainly be nice. How about setting the C:\Program Files\Common Files\ArcGIS\Desktop10.0\Configuration\CATID\ and \bin directories to the path or soem sort of environmental variable. How about some documentation regarding the XML structure of the .ecfg file. Do we run ESRIRegasm on user machines, or are we supposed to deploy the .ecfg directly? I'm open to how you suggest we approach deploying an actual solution in the real world and no x-copy is not a valid solution.