Visual Studio Setup and Deployment issue on Windows 7 and Vista Solved

Most people who regularly read this blog will hopefully (for their sake) never have to encounter this issue that has plagued me ever since I upgraded to Visual Studio 2005 (and then later Visual Studio 2008) and Vista (and then later Windows 7). Working with setup and deployment project is supposed to make life easier but I have had nothing but trouble with them.

The Raiser’s Edge is a COM based application and plug-ins to The Raiser’s Edge need to be seen by COM. That is not to say that .NET cannot deal with that. You can create .NET assemblies that are visible by COM and that is what I have been doing. Instead of registering them using regsvr32 as you would for a regular COM component you register them using regasm.

When you download a Blackbaud plug-in you always need to do this which struck me as not be overly user friendly. I always include a setup and deployment application that puts all the assemblies in their correct place and normally enables the end user to log into The Raiser’s Edge and start using the plug-in without much technical ability at all.

However there are issues with VS2005, VS2008, Vista and Windows 7 that prevent this from working smoothly. Up until now I have not really been sure of the exact reason but had seen some forum posts with people venting. When you write an add-in for Outlook or Excel you have to use the same technique (at least you did for earlier versions of them – this may have changed now). In Visual Studio the deploy package does not register the tlb file (the type library file that enables COM to read your assembly). My convoluted solution was to go into a virtual environment where I had Windows XP installed and build the setup project there.

Now, however, I have found another solution that appears to work well. Instead of adding the project output to your setup project, just add the assembly “file” directly. You have to make sure that any dependencies are added too and that both the dll and the tlb files are set to register for COM. Here is the full article for those of you that are interested:

http://belham.com/software-development/com-addin-registration-at-deployment-time/