检测是否安装了Excel 2003的最佳方法是什么?
我正在使用wixv3.0(它可以归结为一个MSI安装程序),我正在尝试编写一个条件来确保安装了excel2003。检测计算机上是否存在Excel 2003的最佳(最可靠)方法是什么检测是否安装了Excel 2003的最佳方法是什么?,excel,wix,installation,windows-installer,wix3,Excel,Wix,Installation,Windows Installer,Wix3,我正在使用wixv3.0(它可以归结为一个MSI安装程序),我正在尝试编写一个条件来确保安装了excel2003。检测计算机上是否存在Excel 2003的最佳(最可靠)方法是什么 我看到了许多不同的建议,但没有明确或权威的答案。您可以尝试检查注册表,或者可能是excel的典型安装路径。我们在以下位置检查InstallRoot注册表项: HKLM\Software\Microsoft\Office\12.0\Excel\InstallRoot (将12.0替换为应用程序的相关版本号) 请注意,
我看到了许多不同的建议,但没有明确或权威的答案。您可以尝试检查注册表,或者可能是excel的典型安装路径。我们在以下位置检查InstallRoot注册表项:
HKLM\Software\Microsoft\Office\12.0\Excel\InstallRoot
(将12.0替换为应用程序的相关版本号)
请注意,在64位操作系统上,这将反映到注册表的32位部分(有关注册表反射的更多信息,请参阅)
至少对于2000、XP、2003、2007和2010版本来说,这似乎很有效。2010年唯一的变化是64位版本需要您查看注册表的64位部分。Excel(Office)也由windows installer安装。
为什么不检查excel组件代码?我在Office 2003工具包中找到一个文件,其中包含Office组件的所有GUID。基于此,我使用组件搜索来定位核心Excel组件。在WiX中,我的情况如下:
<Property Id="EXCEL2003INSTALLED">
<!-- This is the Component Id of Global_Excel_Core -->
<ComponentSearch Id="DetectExcel2003" Guid="{A2B280D4-20FB-4720-99F7-40C09FBCE10A}" Type="file"/>
</Property>
<Condition Message="This application requires Excel 2003 to be installed."><![CDATA[Installed OR EXCEL2003INSTALLED]]></Condition>
有用于其他Office应用程序和其他版本的组件GUID。
我确实考虑过这一点,但是,没有Office MSI文件的手没有Excel组件代码。你有吗?对不起,我没有办公室-我们正在使用OO。但是您可以使用安装程序api查询它们。无论如何,您都必须使用api来增加excel组件的使用计数。如果您不这样做,excel(功能/组件)可以卸载,并且您的应用程序将不再工作。