Add-in Express for Office and .net / VSTO / VCL – Which product do I choose?
Updated: Add-in Express for Office and VSTO is not available for sale any longer. Now it is used for our custom development services only.
This is a question we get almost every day… We have several template answers which are more or less helpful in choosing an appropriate Add-in Express product. But I am not really happy with any of the templates. Nor am I quite satisfied with a bare listing of features on this page: Add-in Express for Microsoft Office – .NET and VCL editions comparison matrix. In this post I will try to describe everything that makes the real difference between three editions of Add-in Express for Office, and all that is worth taking into consideration when choosing the edition right for you.
However, everything that I am going to write further is based on the same Add-in Express for Office feature list. Well, let's consider it point by point… :)
Platforms, run-times, IDEs and Offices
|Add-in Express Loader
|Visual Studio 2005, 2008, 2010 starting from Express editions
|Visual Studio 2005, 2008, 2010 starting from Professional editions
|Delphi 5 – XE2 starting from Professional editions
|C#, VB.NET, Managed C++
|C#, VB.NET, Delphi Prism
Two editions, .net and VSTO, require the .NET Framework installed on the end-user's machine. In case it is missing, an automatically generated .msi will prompt the user to download and install all necessary prerequisites. Add-in Express for Office and VCL produces native Win32 code, which is why all Office solutions based on Add-in Express for VCL require only Office installed. So, your choice is:
- VCL – if you still keep loyalty to Delphi and have a long term experience in Delphi development, I do recommend sticking with it. For example, we use Delphi 7 to build our commercial add-ins, and for the time being, we are not going to switch to higher Delphi versions, nor even to Visual Studio.
- VSTO – if you are an old inhabitant of the Visual Studio ecosystem and you have completed at least one project based on VSTO 2005, VSTO 2005 SE or VSTO 3, then your choice is Add-in Express for Office and VSTO.
- .NET – in case you come from VBA or VB and your experience with VSTO was not that successful, you are welcome to Add-in Express for Office and .net.
But! Don't drop this absorbing reading right away, it may happen that you will change your mind in favor of another edition after reading just a few more paragraphs.
Add-in Express for VCL is completely based on Delphi VCL, accordingly its run-time is Delphi run-time which is statically linked to the resulting DLL. As for the other two editions, the matter is more complicated, it is a question of isolation and Office versions that you need to support. Your choice is:
- VCL – if you still are a Delphi programmer :)
- VSTO – if your previous choice is VSTO, and your add-in is to work only under Office 2003 or Office 2007 or Office 2010.
- .NET – is the right choice if you need to support all available Office versions beginning with Office 2000. Why then do we write “loaders” in the Run-time entry? The reason is simple, and its name is ISOLATION. Both editions, VSTO and .net, load (isolate) each Office extension into a separate application domain making the work of your add-in securer for the host application and other add-ins. That is why any crash of your isolated add-in is absolutely harmless both for the host application and its other add-ins. Such isolation is achieved with a special Win32-stub dll, called loader. Microsoft delivers its own VSTO loader, Add-in Express – its own. The difference between them is rather significant. The Add-in Express Loader supports all types of Office extensions including COM add-ins, smart tags, Excel automation add-ins and real-time data servers, it works under all Office applications (there are eleven of them), is Office version-independent, and supports shadow copy and ClickOnce. So, your choice is Add-in Express for .net, if you have found at least one useful point in the previous sentence.
It is a question of economy and economics. The right choice is:
- VCL – if you have got any Delphi version starting from version 5 left somewhere in your bookcase or on the hard disk.
- VSTO – if you have Visual Studio 2005 Standard, Professional or Team System on board; in this case you can use VSTO 2005 SE. If you already have Visual Studio 2008 Professional or Team System installed, then VSTO 3 is available for being extended with Add-in Express for VSTO. Note that Visual Studio 2008 Standard and Express don’t contain VSTO at all.
- .NET – You can use all commercial editions of Visual Studio 2005 (from Standard to Team System) and all editions of Visual Studio 2008, including Express, Standard, Professional and Team System side by side with Add-in Express for .net.
Office versions and suites
|2000, 2002, 2003, 2007, 2010
|2003, 2007, 2010
|2000, 2002, 2003, 2007, 2010
It is still a question of economy, or to be more precise of the installation base for your Office extensions. You choose:
- VCL – if Delphi is still installed on your PC. Your add-ins will work with all Microsoft Office versions and suites, starting from version 2000 and Office Student, respectively. Add-in Express for VCL supports all 11 Office applications: Outlook, Excel, Word, PowerPoint, Access, Project, Visio, MapPoint, FrontPage, InfoPath, Publisher.
- VSTO – is right for you if your end-users have Office 2003, 2007 or 2010 installed, and their Office edition is not lower than Standard. Besides that, you are limited in a number of supported applications – you have 6 instead of 11: Outlook, Excel, Word, PowerPoint, Visio, InfoPath.
- .NET – if you want to give a possibility to install your add-in even to students who have rather outdated Office versions, then your choice is definitely Add-in Express for .net. As well as in the VCL edition, your add-ins will work in all MS Office versions and suites, starting from version 2000 and Office Student, respectively.
A bit more about version-neutrality
Beginning with Office 97, Microsoft have put quite a lot of effort in ensuring compatibility between Office versions. For instance, COM interface specifications for COM add-ins have not changed since Office 2000 (I am speaking about IDTExtensibility2). That's true, new interfaced were added in Office 2007 to support the Ribbon UI, but old add-ins built for Office 2000 and performing fine in that version work without recompiling in Office 2007 and 2010 as well. Well then, ask yourself the following questions. How important is version-neutrality for you? Do you want to have your add-ins work under Office 14 without any effort on your side?
Office COM add-ins
|Multiple add-ins in one solution
|3rd-party controls on Office toolbars
In the language of Microsoft marketers, a language whose vocabulary is constantly changing, COM add-ins are now called application-level customizations. Here we have the same situation as with Automation / COM / DCOM / COM+ :) But it is historically established that they devise and we have to catch up. Thus, every time you need to “add a button to the toolbar” rather than to a specific document, you create a COM add-in. With a view to capabilities provided for your Office COM add-in development, all Add-in Express versions are practically identical. However, please take into consideration all described above as well as the information below. So, your choice is:
- VCL – if Delphi is still installed on your PC :) In addition, Add-in Express for VCL will empower you to create one add-in for several applications, for example for Outlook, Excel and Word at the same time. This feature is called shared add-ins or multi-hosted add-ins.
- VSTO – choose Add-in Express for VSTO if you are not concerned about Office version-neutrality, if you build an add-in for one application only (Outlook is the most popular host these days), and if VSTO is your secret love ;-)
- .NET – if you want to get the most of it, namely: you want to develop one add-in for all Office versions and applications decorating all Office toolbars with any controls (whether grids or charts :) Oh, yes… In a while, you recall that you wanted yet another similar add-in, and you simply add it to the same project. Only Add-in Express for .net will allow you to include several add-ins in one project (read – in one assembly, in fact – in one binary).
Other Office extensions
|COM add-ins, smart tags, Excel Automation add-ins, Excel run-time data servers, XLLs
|COM add-ins, smart tags, Excel Automation add-ins, Excel run-time data servers
Okay, most programmers confine themselves to “adding buttons to toolbars” :) If you are one of those rare developers who are interested in other Office extensions, I am ready to announce that your choice is:
- VCL – if you are still a loyal devotee of Delphi, then Add-in Express for VCL will enable you to develop all types… okay, nearly all types of Office application-level extensions including COM add-ins, smart tags, Excel Automation add-ins, Excel run-time data servers.
- VSTO – Attention here! Add-in Express for VSTO (like VSTO itself) allows you to develop COM add-ins only, but not smart tags, XLLs, Excel UDFs, or RTD servers.
- .NET – if you want to have guaranteed means to develop all Office application-level extensions including COM add-ins, smart tags, Excel Automation add-ins, Excel run-time data servers, and XLLs.
Deployment and redeployment
|Visual Studio integrated setup projects
|Visual Studio integrated setup projects
|Complete support of the ClickOnce technology
Once it comes to deployment of a more o less complicated project, most programmers start to rack their brains. Well then, just choose:
- VCL – if Delphi is still on you computer, and if you know nothing about the existence of ClickOnce, but are familiar with InnoSetup and regsvr32.
- VSTO – if nevertheless you have decided on VSTO, and you are set after a number of experiments to create your own msi or make use of ClickOnce.
- .NET – if you'd rather get an automatically generated setup project, click Build solution and send the resulting msi to your customer, your choice is Add-in Express for .net. We have tried really hard to make deployment and re-deployment as comfortable as they can be.
And some more about the principle difference between Add-in Express for .net and VSTO
Regrettably enough, our customers tend to choose between the VSTO and .net editions more and more often these days. And, naturally, they ask about the difference. The difference is in all the above-written plus… oh, I am going to unveil the key point … what if someone happens to read to the end…
- VSTO – Add-in Express for Office and VSTO is completely based on VSTO 2005 SE or VSTO 3 (depending on a Visual Studio version), being per se a VSTO extension. It is the VSTO architecture that dictates all the limitations of Add-in Express for VSTO which I mentioned above.
- .NET – Add-in Express for Office and .net is our flagship product, initially freed from any limitations, with a solid architecture polished up by many years of development, empowered by quite a simple programming model and a transparent deployment and redeployment scheme. BTW, I would write the same about Add-in Express for VCL. That seems to be all, the end! :)
Last updated on 6-April-2010.