2015-06-26 74 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