2015-07-07 3 views
1

Как проверить самую высокую версию 1.7 JRE установлена ​​в системе с помощью WIX? 1) Мое приложение работает только для 1,6 или 1,7 JRE. 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 и получить установленный путь.WIX - MSI: Как проверить самую высокую версию jre 1.7 - до 1.6 из нескольких версий JRE (1,8, 1.7.0_80, 1.7.0_79 и 1.6.0_45) в системе

Как я знаю ниже, мы можем узнать самую высокую версию JAVA, установленную в системе.

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

На основе этой проверки значения это 1.8 JAVA, то нужно, чтобы получить 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?> 

Но это если условие не работает для сравнения стоимости недвижимости? Как я могу это решить? любое предложение пожалуйста.

ответ

0

попробовать настраиваемое действие, включают в себя VBS двоичную попытку использовать Wmi объекта и получения свойств семейства Java

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

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

Итерация по Allprods, если имя является проверка Java для версии

Sample Ответ

Version = 6.0.100

Vendor = Sun Microsystems, Inc.

Наименование = Java (TM) 6 Обновление 10