Java 如何通过wix引导检测JRE 8是否集成
我正在使用wix引导来安装Java运行时。但我无法检测到JRE。我的代码如下。安装程序将始终安装JRE(即使它是预安装的)。但不会卸载 看来我的检测条件不对。但是我找不到正确的方法。请帮忙 '''Java 如何通过wix引导检测JRE 8是否集成,java,c#,windows-installer,wix3.5,wix3.7,Java,C#,Windows Installer,Wix3.5,Wix3.7,我正在使用wix引导来安装Java运行时。但我无法检测到JRE。我的代码如下。安装程序将始终安装JRE(即使它是预安装的)。但不会卸载 看来我的检测条件不对。但是我找不到正确的方法。请帮忙 ''' ''看起来您可能正在安装64位系统。您是否知道在运行32位进程(如引导程序)时会发生64位注册表重定向?@Doc,是的,我正在安装到64位系统。我实际上构建了64位的安装程序。“您知道在运行32位进程(如引导程序)时发生的64位注册表重定向吗?”-实际上我不知道这一点。请您提供一些链接来帮助我获取
''看起来您可能正在安装64位系统。您是否知道在运行32位进程(如引导程序)时会发生64位注册表重定向?@Doc,是的,我正在安装到64位系统。我实际上构建了64位的安装程序。“您知道在运行32位进程(如引导程序)时发生的64位注册表重定向吗?”-实际上我不知道这一点。请您提供一些链接来帮助我获取更多信息,打开您的注册表,注意您的64位计算机上有HKLM/Software/WOW6432Node配置单元。让你的代码看一下,看看它是否开始工作。如果是这样,那是你的问题。从那里做一些谷歌搜索,你会发现如何修复它。@Doc,谢谢你提供的信息。我可以在我的电脑中看到“HKLM/Software/WOW6432Node”这个路径,但只有“JavaUpdatePolicy”在那里。我还可以看到“HKLM/Software/JavaSoft/Java插件”和“HKLM/Software/JavaSoft/Java运行时”文件夹。在里面,我找不到任何显示当前版本Java的文件,手动创建注册表项和数据,看看您的引导程序是否正在读取32位的注册表项?我评论的要点是它正在读取哪个注册表配置单元?在64位系统上读取注册表时,这是一个已知的开发问题。
<?xml version="1.0" encoding="UTF-8"?>
<?define Logo = "$(var.ProjectDir)\Resource\app.ico" ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="MY Installer" Version="1.0.0.0" Manufacturer="ABCD" UpgradeCode="00f3b9ff-f82b-4a06-8ab1-d96de8ade69c"
IconSourceFile="$(var.Logo)">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense">
<bal:WixStandardBootstrapperApplication
SuppressOptionsUI ="yes"
SuppressRepair="yes"
LicenseUrl=""
LogoFile="$(var.Logo)" />
</BootstrapperApplicationRef>
<util:RegistrySearch
Id="Java8FamilyVersion"
Root="HKLM"
Key="SOFTWARE\JavaSoft\Java Runtime Environment"
Value="Java7FamilyVersion"
Variable="Java8FamilyVersion" />
<util:RegistrySearch
Root="HKLM"
Key="SOFTWARE\JavaSoft\Java Runtime Environment\[Java8FamilyVersion]\MSI"
Value="PRODUCTVERSION"
Variable="JavaProductVersion"
After="Java8FamilyVersion"
Condition="Java8FamilyVersion" />
<Chain>
<ExePackage Id="Java8Runtime"
DisplayName="Java Runtime Version 8"
Cache="no"
Compressed="yes"
PerMachine="yes"
Vital="yes"
Permanent="no"
Name="Redist\jre-8u271-windows-x64.exe"
SourceFile="..\..\Common\Java\jre-8u271-windows-x64.exe"
InstallCondition="NOT (JavaProductVersion >v8.0.2710.9)"
DetectCondition="Java8FamilyVersion AND (JavaProductVersion >=v8.0.2710.9)"
InstallCommand="/s INSTALL_SILENT=Enable"/>
</Chain>
</Bundle>
</Wix>