Does anyone know what would be the best way to detect which version of Office is installed? Plus, if there are multiple versions of Office installed, I'd like to know what versions they are. A bonus would be if I can detect the specific version(s) of Excel that is(/are) installed.
You will have to find the relevant registry key, this link might help you out
http://www.dreamincode.net/forums/topic/33817-check-for-ms-office-productid/
One way to check for the installed Office version would be to check the InstallRoot
registry keys for the Office applications of interest.
For example, if you would like to check whether Word 2007 is installed you should check for the presence of the following Registry key:
HKLM\Software\Microsoft\Office\12.0\Word\InstallRoot::Path
This entry contains the path to the executable.
Replace 12.0 (for Office 2007) with the corresponding version number:
Office 2000 - 9.0 Office XP - 10.0 Office 2003 - 11.0 Office 2007 - 12.0 Office 2010 - 14.0 (sic!)
The other applications have similar keys:
HKLM\Software\Microsoft\Office\12.0\Excel\InstallRoot::Path
HKLM\Software\Microsoft\Office\12.0\PowerPoint\InstallRoot::Path
Or you can check the common root path of all applications:
HKLM\Software\Microsoft\Office\12.0\Common\InstallRoot::Path
Another option, without using specific Registry keys would be to query the MSI database using the MSIEnumProducts
API as described here.
As an aside, parallel installations of different Office versions are not officially supported by Microsoft. They do somewhat work, but you might get undesired effects and inconsistencies.