2014-11-04 15 views
3

我有一個.wxs文件與組件如何配置.wxs文件以在寫入FEATURE_BROWSER_EMULATION RegistryKey時檢測最新版本的IE?

<Component Id="IE_BROWSER_EMULATION_REGISTRY" Guid="*"> 
    <RegistryKey Root="HKCU" Key="SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION"> 
      <RegistryValue Type="integer" Name="SDLTradosStudio.exe" Value="9999" KeyPath="yes"/> 
    </RegistryKey> 
</Component> 

我知道最終用戶將使用Windows 7,將最有可能至少IE 9在其計算機上安裝。但我真的很想將Value設置爲用戶機器上安裝的最新版IE。我正在使用WiX編輯工具來構建.msi。如何檢測用戶計算機上安裝的最新IE版本?

回答

3

IE版本是存儲在註冊表中的HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\的Internet Explorer \ svcVersion

使用下面的代碼來獲取註冊表鍵值到屬性

<Property Id="IEVERSION"> 
    <RegistrySearch Id="IEVer" 
        Root="HKLM" 
        Key="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer" 
      Name="svcVersion" 
        Type="raw" /> 
</Property> 

一旦你的IE版本中的屬性可以使用條件來檢查它。

例子:

<![CDATA[IEVersion >= 9]]> 
+0

太好了!謝謝。 – dfritch 2014-11-06 18:51:53

+0

現在我終於在一年後得到了這個,這裏有一些評論。首先,您需要從「Key」屬性中刪除「HKEY_LOCAL_MACHINE \」,因爲這是通過「Root」屬性中的HKLM值傳遞的。在這篇文章中的問題和答案http://stackoverflow.com/questions/7245152/how-do-i-compare-registry-versions-in-wix提供了有關如何實際比較版本號的良好信息。在這種情況下,從RegistrySearch返回的值實際上是一個字符串,而不是數字。 – dfritch 2015-12-03 20:59:44