wix – 检查Excel 2013版本

我正在开发x86和x32版本的Excel插件,在我的Wix安装程序中,如果用户尝试在x64版本的Excel 2013上安装x86版本的插件,我想提出错误,反之亦然。 我正在这样做:

来自x86插件的.wxs文件片段:

<!-- Check if Excel x86 is installed --> <Property Id="EXCEL2013"> <ComponentSearch Id="DetectExcel2013" Guid="{C8A65ABE-3270-4FD7-B854-50C8082C8F39}" Type="file"/> </Property> <Condition Message="Please install Excel 2013x86."> <![CDATA[Installed OR EXCEL2013]]> </Condition> 

snnipet从x64插件.wxs文件:

 <!-- Check if Excel x64 is installed --> <Property Id="EXCEL2013"> <ComponentSearch Id="DetectExcel2013" Guid="{E3BD1151-B9CA-4D45-A77E-51A6E0ED322A}" Type="file"/> </Property> <Condition Message="Please install Excel 2013x64."> <![CDATA[EXCEL2013]]> </Condition> 

我在https://social.msdn.microsoft.com/Forums/vstudio/en-US/bdcd8850-0b6a-4fd1-a0cb-647ff12c3088/finding-the-component-id-for-office-2013上find了这个Guids ?论坛= vsto ,它似乎可靠。 但是有问题。 这个检查工作就像在x86 Excel机器上的魅力 – C8A65ABE … GUID在那里find。 但是对于X64 Excel机器上的E3BD1151 … guid,情况并非如此。 似乎两个版本的Excel(x86和x64)具有相同的C8A65ABE … GUID。 如何可靠地区分Excel 2013版本,因为两个版本都有相同的C8A65ABE … guid?

如果您同时支持x86和x64系统,则需要两个MSI文件。

一个将是一个x86 MSI和searchx86 Excel(并注意这些GUID是针对PIA的),并且只包含一个x86插件。 此MSI需要一个启动条件,防止它在x64系统上安装,因为您有一个单独的MSI。 你的情况可能是像 – 不是VersionNT64-

另一个将是一个x64 MSI,将有插件的x64和x86版本。 这是因为微软似乎推荐在x64系统上使用x86 Office,所以大多数情况下,x64系统将具有x86 Office和x86 PIA,这就是为什么您在x64系统上检测到它的原因。 我想你认为x64系统必须有x64 Office,事实并非如此。 x86应用程序在x64系统上正常工作。

所以我怀疑,实际上这些search是可以的 – 你说这个search在x64机器上不起作用,但是我的猜测是它有x86 Office。 您需要在明确安装了x64 Office的系统上进行testing,我认为这比您想象的要less得多。 在x64系统上,您将激活x86或x64插件,具体取决于组件search告诉您Office的位数,大部分时间可能是x86版本。