簡體   English   中英

WIX-MSI:如何從系統中的多個JRE版本(1,8、1.7.0_80、1.7.0_79和1.6.0_45)檢查jre 1.7的最高版本-直到1.6

[英]WIX - MSI: How to check highest version of jre 1.7 - till 1.6 from multiple version of JRE (1,8, 1.7.0_80, 1.7.0_79 and 1.6.0_45) in the system

如何使用WIX檢查系統中安裝的1.7 JRE的最高版本? 1)我的應用程序僅適用於JRE的1.6或1.7。 2)因此,在安裝MSI期間,需要找到我們的1.7或1.6的最高版本。 a)如果在系統中已安裝1.8.0_45,1.7.0_80,1.7.0_79和1.6.0_45。 在這種情況下,我必須找出1.7.0_80並需要獲取安裝路徑。

據我所知,我們可以找到系統中安裝的最高版本的JAVA。

 <Property Id="JRE_64">
        <RegistrySearch Id="JRE_64R" Root="HKLM"    Key="SOFTWARE\JavaSoft\Java Runtime Environment" Name="CurrentVersion"    Type="raw" Win64="yes"  />
  </Property> 

基於此值檢查是JAVA的1.8,則需要得到1.7

<?if [JRE_64] < 1.6 AND  [JRE_64] >= 1.8 ?> 
        <Property Id="JRE_64_7">
            <RegistrySearch Id="JRE_64R_7" Root="HKLM" Key="SOFTWARE\JavaSoft\Java Runtime Environment" Name="Java7FamilyVersion" Type="raw" Win64="yes"  />
        </Property> 
        <?if ([JRE_64_7]  >= 1.7  AND  [JRE_64_7] < 1.8) ?>
            <Property Id="JRE_64_6">
                <RegistrySearch Id="JRE_64R_6" Root="HKLM" Key="SOFTWARE\JavaSoft\Java Runtime Environment" Name="Java6FamilyVersion" Type="raw" Win64="yes"  />
            </Property> 
        <?endif?>
    <?endif?>

但是如果條件不適用於屬性值比較,是否可行 我該如何解決? 任何建議。

嘗試自定義操作,包括一個vbs二進制文件嘗試使用wmi對象並獲取Java系列的屬性

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

Set allProds= objWMIService.ExecQuery("SELECT Name,Vendor,Version FROM Win32_Product")

遍歷allProds,如果name為java,請檢查版本

樣品響應

版本= 6.0.100

供應商= Sun Microsystems,Inc.

名稱= Java(TM)6更新10

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM