I built an Arcmap extension on 9.2 SP 5, built an MSI and sent it off to the tester who tried to install on 9.2 SP3. He got the dreaded “Unable to get installer types…” message. All references to ESRI assemblies had their “Requires Specific Version” attribute set to False.
So I followed Richie Carmichael’s steps to create a ROBUST installer, and built a new msi. I only included the the Toolbar and Mx Extension in the reg file … these are really the only classes needing COM exposure. I really didn’t want to click on every COM class and change its attributes, so I just removed them from the reg file. Another annoyance: VS2005’s import command chokes on reg files containing comments.
Tried to install again – same problem. Maybe I missed one of Richie’s steps?
So I installed .NET explorer onto the test machine, copied the offending DLL to it, and examined its dependencies. When I double clicked on the Spatial Analyst assembly it could not find it. After looking further, it couldn’t find any of the assemblies from build 1420.
Perhaps setting “specific version” to false only provides backwards compatibility – not forward. I resolved by including those DLLs in the MSI. Since we are dealing with COM behind the scenes, signatures shouldn’t change, so having an assembly that is more recent than the COM library shouldn’t cause problems, should it? I sit with fingers crossed, waiting for test results.
If not, it seems like ESRI could provide policy files that specifying forward compatibility within a minor revision.
When I have time, I will re-visit Richies’ Robust steps. I must confess I’ve never really worried that much about uninstallation, but from what he says, I probably should:
However, once installed correctly a user may experience problems uninstalling the custom component if one or more of the dependencies is missing. This may arise if the user has uninstalled ArcGIS Desktop or upgraded (or downgraded) to another version. The only workaround is for the user to restore the same environment as during install time.
I’m anxious to get this project out the door to continue work on solutions using the DBMS for deployment of assemblies. This makes me realize I should see if there’s a way to do bindingRedirects (like those in policy-files) with assemblies dynamically loaded from blobs in the DBMS.