Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测是否安装了Excel 2003的最佳方法是什么?_Excel_Wix_Installation_Windows Installer_Wix3 - Fatal编程技术网

检测是否安装了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替换为应用程序的相关版本号) 请注意,

我正在使用wixv3.0(它可以归结为一个MSI安装程序),我正在尝试编写一个条件来确保安装了excel2003。检测计算机上是否存在Excel 2003的最佳(最可靠)方法是什么


我看到了许多不同的建议,但没有明确或权威的答案。

您可以尝试检查注册表,或者可能是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(功能/组件)可以卸载,并且您的应用程序将不再工作。