2015-06-26 71 views
0

我正在开发使用x86和x32版本以及我的Wix安装程序的Excel插件如果用户尝试在x64版本的Excel 2013上安装x86版本的插件,并且反之亦然,我想提出错误。我这样做是这样的:wix - 检查Excel 2013版本

从86插件.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> 

我发现这个的GUID的https://social.msdn.microsoft.com/Forums/vstudio/en-US/bdcd8850-0b6a-4fd1-a0cb-647ff12c3088/finding-the-component-id-for-office-2013?forum=vsto和:

<!-- 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> 

从64位插件.wxs文件snnipet它似乎可靠。 但是有问题。这个检查就像在x86 Excel机器上的魅力一样 - 在那里找到C8A65ABE ... guid。但是对于x64 Excel机器上的E3BD1151 ... guid,情况并非如此。似乎两个版本的Excel(x86和x64)都具有相同的C8A65ABE ... guid。如何可靠区分Excel 2013版本,因为两个版本都有相同的C8A65ABE ... guid?

+0

在你的x64plugin.wxs文件中,你是否有属性“Platform =”x64“set?否则wix将查找x86注册表位置的GUID。 – Isaiah4110

回答

1

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

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

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

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

+0

谢谢。我理解你的观点,但我认为这不是我实现了一切,就像你说的 - 我也有一个2010 Excel的检查工作就像一个魅力。只有在2013版本的情况下,没有办法检测X64机器上的E3BD1151 ... GUID与x64 excel。试图在真正的和虚拟的机器上找到,但没有成功。一个人也提到了同样的问题:https://social.msdn.microsoft.com/Forums/vstudio/en-US/bdcd8850-0b6a-4fd1-a0cb -647ff12c3088 /发现-的分量-ID换办公室2013?论坛= VSTO – Filip