Creative Commons Add-in's Office XP PIA - Detecting Office XP Parts

Creative Commons Add-in for Microsoft OfficeThere was a lot more interest in the Office XP PIA install that Bob created than I expected. I'm currently in the process of trying to get the Office team to take the work we did back and post that instead of the loose collection of files available today. I believe this is the most useful path for everyone involved. If that effort isn't successful then I guess I'll have to host the .wxs file to build the Office XP PIAs somewhere so everyone can build their own Office XP PIA installer (a far less enticing idea).

In the meantime, let's talk about one of the tricky parts of the Office XP PIA install. While doing research into PIAs, and the Office PIAs in particular, I came across Art Leonard's post about PIA registration issues. I remembered Art from my days on the Office deployment team. He was doing work on the PIAs back before any of us even understood what they were for. I wish I knew what I know now back then. <smile/>

Anyway, the gist of his blog entry (if you didn't read through it all) is that you should only install PIAs that match the installed Office applications. In other words, if you only have Word 2002 installed then only the Word PIAs should be installed. If you have Excel 2002 and Outlook 2002 installed then only the Excel and Outlook PIAs should be installed.

Great, as if I wasn't perturbed about the whole missing Office XP PIA MSI install to being with. Now they had to go off and make it one step harder. Well, according to Art's blog post, what we're really need to be looking for is the TypeLibs that get installed for each application. Fine, I can do that with a RegLocator table entry or a RegistrySearch element in WiX.

The WiX source code to search for the Excel 2002 TypeLib looks like this.

   <Property Id="EXCELTYPELIBREGISTERED10">
    <RegistrySearch Id="FindExcelTypeLib10" Root="HKCR" 
                    Key="TypeLib\{00020813-0000-0000-C000-000000000046}\1.4" Type="raw" />
  </Property>

The Word 2002 TypeLib RegistrySearch looks like this:

   <Property Id="WORDTYPELIBREGISTERED10">
    <RegistrySearch Id="FindWordTypeLib10" Root="HKCR" 
                    Key="TypeLib\{00020905-0000-0000-C000-000000000046}\8.2" Type="raw" />
  </Property>

How did I get those TypeLib Ids? I used Orca to peek into the Office XP MSI and cross referenced the data I found there with what was in the registry after install. Pretty easy, in the end.

Next time I'll show what we do with the search results such that we follow Art's advice.