http://www.microsoft.com/downloads/details.aspx?FamilyId=3C9A983A-AC14-4125-8BA0-D36D67E0F4AD&displaylang=en

I didn't contribute much, but after lots of hard work, we've finally got this ready.  I know lots of folks have been wanting an easy way to deploy solutions using .NET in Office 2003.  Well, this is it!  This should address those folks that want to package up individual PIA's and put them on the machine themselves... this is really the way you want to go.  Why?

You'll want to read up on the Windows Installer, but the bottom line is that: 

  1. Component stomping.  If you have two products that package the same file in the same directory but use different components in their installer, then the ref counting on the component will not work properly.  The first one to be uninstalled will uninstall the shared file, breaking the other component using it. 
  2. The GAC is where we should be pulling interop assemblies. The CLR has limitations as to loading interop assemblies.  Once you've loaded a handler for a given CLSID, you're stuck with if for the entire appdomain.  So, if you have two components in the same app domain that demand different versions, or expect different files  / classes / types to talk to the same COM object, you'll be out of luck!
  3. There's a couple more things... I'll write about them later.

Now, a couple things you should know before you start trying to put this everywhere:

  • The installer requires Office 2003 installed on the system.  It isn't designed to offer compatibility with Office 10 or 9.  It will not deploy on 10 or 9.  We can talk about real-world compatibility another time.  This isn't that solution. 
  • You don't want to go pulling components out and try to treat this as an MSM.  The reason is servicing.  When (if) Microsoft needs to do a service update for the components (PIA's), it can only be done on MSI's.  Leaving this as an MSI will make sure that we can service the component.  This could be for security.  The utmost scrutiny is taken to make sure that we do not break compatibility.

One last thing:

  • Make sure you test your solution on the CLR 2.0 betas!

That said, there was a lot of hard work that went into developing and testing this.  You folks know who you are, Bryan, Kintan, and Andrea.  Having handled the PIAs and the installer in Office 2003, I know what a challenge this can be. 

You guys rock. 

- Art


 This posting is provided "AS IS" with no warranties, and confers no rights.