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.

Make local copy of extensibility DLL

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.


7 thoughts on “Windows Installer and Extensibility.dll

  • Andy says:

    That was timely! I was just trying to figure out how to do that!

    Where should the extensibility.dll file go to though? on my development environment, I seem to have it in C:\Program Files\Common Files\Microsoft Shared\MsEnv\PublicAssemblies\Extensibility.dll and in the GAC.

    Do I install it to the GAC, PublicAssemblies folder, on my application folder?

  • Gunnar says:

    The file you take from PublicAssemblies should be installed to your application’s folder with other binaries. Don’t put this file in GAC as this may cause confusion for application administrators.

  • Karthik says:

    DigiMortal,

    Thanks a lot for posting this! I was having the same problem as yours and was stuck with this for over 2 days! At last i can breath now 🙂 Thanks a lot again!!

  • Ctal says:

    Thanks a lot for your information.

    My add-in created on XP with outlook 2003 is not installed on another machine with xp and outlook 2003.

    After following your information , it is installed sucessfully but it is not displaying my toolbar button in outlook.

    Another thing is that on Client’s pc I didn’t get “..\MSEnv” folder. So Could you please let me know when this folder is created in “C:\Program Files\Common Files\Microsoft Shared” folder.

    Please help me for the same I am facing this problem since many days…

    Thanks

    Regards

    Ctal

  • Gunnar says:

    Well, I have seen only couple of workstations where there is no MSEnv folder but all machines having still Outlook installed on them. I am not sure when this folder is created and what installs it. You can still make your own installer create it if it is needed.

  • Dan says:

    Bloody hell was hunting around and trying everything. I must have read 50 posts about the topic all talking about doing this, doing that all which did not work.

    This solution worked for me although took ages to find it and only did after googling Extensibility and 1001.

    Thx,

Leave a Reply

Your email address will not be published. Required fields are marked *