optional features for application?

  • Thread starter Thread starter Stephan Zaubzer
  • Start date Start date
S

Stephan Zaubzer

Hi

I am currently developing an application in C# which is basically a
frontend for a database in a small company but also provides additional
features like interaction with MS Outlook and Adobe Indesign via COM
Interop Assemblies. Since Outlook 2003 is installed on every single
machine in the company there is no problem referencing Outlook from the
main assembly i.e. the application.
But Adobe Indesign is only installed on certain machines (the ones in
the graphics office). What is the best way to deal with such a
situation? I had some ideas how it might look like in the application:

One idea was that the interaction feature should be accessible from an
entry in the main menu of the application. Is there a way to test from
within the application whether the required interop assemblies as well
as Indesign are installed and tell the user that the feature is not
accessible if they are not found?

Another idea was to put the indesign interaction into a seperate
module/assembly and let the user distinguish whether he wants to install
the feature. To install the feature, a test during install time would be
needed to check whether Indesign and the required Interop assemblies are
installed. If the feature is successfully installed, there should be a
menu item in the in the main menu to access the indesign functionality.
But this menu item should only be there if the feature is installed.

The second idea is the one I like better, but to be honest, I don't know
how to implement any of both ideas. I have searched for information how
to include optional features in an application and giving the user the
choice at install time whether the optional feature should be installed.
But I have not found any information so far. How can this be handled
with Visual Studio and setup projects?

If anyone out there knows some webpages which could help me or if anyone
has some hints where to start please let me know.

Regards
Stephan
 
I am currently developing an application in C# which is basically a
frontend for a database in a small company but also provides additional
features like interaction with MS Outlook and Adobe Indesign via COM
Interop Assemblies. Since Outlook 2003 is installed on every single
machine in the company there is no problem referencing Outlook from the
main assembly i.e. the application.
But Adobe Indesign is only installed on certain machines (the ones in
the graphics office). What is the best way to deal with such a
situation? I had some ideas how it might look like in the application:

Build a plug-in application - each feature is built as a plugin. That way
you can deploy certain components on certain machines. Plugin applications
are very easy to build in .NET - lots of examples on Google.

Or if you want to deploy all features, but only disable certain features on
machine with non-matching software, you can try to create the COM object
interface but place it in try/catch statement. If the object cannot be
instantiated, probably means the software is not loaded on the computer and
then you'll disable the function.
 
Thanks for your help. I think I will try it with a plug-in application.

By the way: How do all these MS Applications deal with this problem (I
know, they are not built in .net). Is the spell checker written as a
plug-in for word? How do the big software developers split their apps up
in several features?

Regards
Stephan
 
In deployment terms, they split their apps into features by using a tool
that can build an MSI file with features. Visual Studio setup projects don't
allow you to split components into features. There's a comparison here,
right at the end:
http://www.installsite.org/pages/en/msi/authoring.htm

where it notes that "Full control of features" is pretty standard except in
Visual Studio 2005. There seems to be an expectation that Visual Studio
setup projects can do the same things as 3rd party tools like InstallShield,
Wise, Advanced Installer, Wix etc, and I don't know where that idea comes
from.
http://ablog.apress.com/?p=868
 
Back
Top