Windows Installer and Extensibility.dll
Windows Installer is one of my favorite problem childs - of course, when it has mysteriuos problems. I found a problem when installing Outlook add-in on machine that has no extensibility features installed on it. Something was missing and installer gave me the famous "Unable to get installer types" error. After pointless waste of time tracing installer and checking its logs I checked out what's going on in file system.
By default, Extensibility.dll was not installed. When I added it to setup package manually it was copied to application folder as expected. But still nothing happened. I was even able to create some packages that installed without errors but add-in was not installed. Cool, ah?
Solution to this problem is simple. There is another version of Extensibility.dll that you can distribute and that is installed correctly without any problems.
Seems like there are some legal issues with Extensibility.dll that is referenced by default.
After creating add-in project using Visual Studio you have to delete reference to Extensibility.dll. Path to correct version of Extensibility.dll is as follows:
C:\Program Files\Common Files\Microsoft Shared\MsEnv\PublicAssemblies\Extensibility.dll
After adding correct reference, make sure you let Visual Studio to get the local copy of Extensibility.dll. You can see example on the image. Before deploying your setup package you must test it on "clean" machine that has no Extensibility.dll in Global Assembly Cache.
If your setup works okay on clean machine and also your add-in works when you open Outlook to test it then everything should be okay what matters Extensibility.dll.