Internet Explorer addon development: C#, VB.NET

Add-in Express™
for Internet Explorer® and Microsoft® .net

Sergey Grischenko

Sergey Grischenko
Author of idea and developer
of Add-in Express for IE

Hi, Colleague!

My name is Sergey Grischenko. I am the lead .NET developer at the Add-in Express Company, author of the idea and developer of Add-in Express for Internet Explorer. When I started developing this product, my main goal was to create a good time-saver based on the true RAD that would have capabilities close to those of our flagship product - Add-in Express for Office. That is why now I have every reason to say that I gave birth to the tool allowing you to develop powerful IE extensions integrated with OS and with any other applications, working in all popular versions of IE versions, using all the power of the .NET Framework and 3rd-party components (including controls), and 100% ready for corporate deployment. True, it's you, my Colleague, who will judge how well I succeeded... :)

In fact, you can do fine without Add-in Express for IE, but believe me (and I know this for sure), you will have to dig deep into the IE SDK, do a great deal of googling to find some tricks (BTW, I had to devise the most of the tricks in my code myself :) In the IE development, there are several quite labor-intensive parts that require employing various tricks or even some sort of voodoo. Well then, look at this:

  • Developing for the multi-tabbed UI, multi-threaded IE7 and multi-processed IE8, IE9, IE10, IE11 (multi... multi... multi...). I will try to explain :-) Every time a new tab is opened, IE creates a new instance of your BHO. This is not a problem if we are interested in the context of the currently active tab only. But as soon as the necessity to actualize data between the tabs arise, and we know that tabs can "live" in different threads and even in different processes... Oops... and here we start niggling with handles, processes and threads. Though, all we need is to know the context and to switch between contexts. Add-in Express will provide you with both: the context and the means of storing global data. To demonstrate you all this household, we created a special sample - Advanced Search for Internet Explorer. It adds its own side-bar and allows searching for a particular string in all opened tabs and windows of IE, regardless of how many threads and processes of IE exist. Advanced Search for IE is delivered with the complete source code, download it and take a good look at our tricks. Please don't expect any special embellishments in the UI - we show more important things there, only things that really matter, in our opinion.
  • The whole IE extensibility features in one project. "The whole" means everything, including side-bars and toolbars with any .NET controls, custom commands, menus, context menus and keyboard shortcuts. In fact, all is described in the IE SDK. And all is quite implementable provided that you have spare time. Though, when reading about the registration of all that stuff, one starts yawning and the very thought that you need to clean up the registry afterwards is a real bringdown. I am not fond of such architectural fads, and actually it is the reason why this part is completely hidden from the developer in Add-in Express for IE. It seems to me this is not the knowledge that makes our life easier :)
  • Isolation by loaders. Now the Add-in Express Loader, former COM Add-in shim, isolates all IE add-ons in their own appdomains. This makes add-ons more stable and secure. So, if your or somebody else's add-on tries to crash other add-ons together with the whole current IE process, it won’t succeed. Another important thing - there are two versions of the loader, 32-bit and 64-bit, purposed for loading your bit-neutral add-ons (by default, all your add-ons are compiled for any CPU). Finally, at the deployment stage, all that concerns the loader is hidden out of harm's way and is driven automatically.
  • Deployment and redeployment. If you develop a BHO, be aware that you will need the administrative privileges to install your add-on on the end-user's machine. By Microsoft's design! This corporation does most of things pretty well, but deployment is not among them. All pertaining to the deployment of projects that are slightly more difficult than a one-string console app, adds headache not only to developers but to admins as well. Okay, okay, this is an obvious overstatement from me, but believe me, the deployment of Office add-ins or IE extensions is a slippery type. Now then, working on the deployment scenarios for our Add-in Express for IE, I always tried to keep two things in mind - 1) an msi-based setup package is more flexible than ClickOnce (msi allows us to create, not to emulate, custom actions!), and 2) web-enabled deployment is a very important feature. As a result, we got the msi-based web-enabled deployment :) Using Add-in Express you will create a setup project, build it, and finally publish it to your server. That's all. Well, you can bring your admin into play and have him or her to deploy your add-on using the Group Policy. This is, however, the first version of our deployment and I am fully open for any suggestions, ideas and criticism.
  • Oh,... I completely forgot... Instancing. I do hope that some of you will appreciate this capability - you always have ALL created instances of your BHO at hand, regardless of whether they are created in a neighboring thread or in another IE process. Stop counting IE threads and processes - just directly call any instances of your BHO :)

Undoubtedly, this is not all the stuff in which I had to dig deep, only the most complex things to implement. Nevertheless, there are cases when you must not use Add-in Express for IE.

Do not use Add-in Express for IE if...

Oh, yes, now I will try to talk you out of using my product. So, close your browser without hesitation and forget about Add-in Express for IE, if:

  • You need to create a simple side-bar or merely add a couple of new commands to the built-in command bar, at that you are happy with the capabilities of JavaScript and advanced .NET controls are out of the question.
  • You find pleasure in delving into docs and you have time for that (Folks, I fully understand you, I am the same :)
  • You simply don't like the name of our product, design of our web-site or my photo ;-)

The most important question

Ah, yes! Absolutely forgot to answer the most important question. Is it worth writing IE add-ons using the .NET Framework? My answer is YES.

  • .NET Framework 2.0 is installed nearly on all Windows machines.
  • .NET Framework 4.0 is gaining popularity, Microsoft has even added it to Windows updates. So I would advise everyone to move to 4.0.
  • Finally, your deployment package based on Add-in Express includes all necessary prerequisites, the .NET Framework too. So, don't worry :)

Need more info? Have more questions to me personally?

Just use the feedback form below, I will get back to you ASAP...

Contact Sergey now

Have any question to Sergey, want to discuss your project or get a good piece of advice? Don't hesitate to contact him right now.

Please fill in the fields below (* indicates required fields ).
Send me a copy
Sergey Grischenko