Here is something I had put together quite a while ago that works for me.
You should be able to modify it to do what you need. You could change the
CustomAction to SetProperty elements.
<Condition Message="!(loc.Java160MustBeInstalled)">JAVA_JRE_HOME</Condition>
<Property Id="JAVA_JDK_CURRENT_VERSION"/>
<Property Id="JAVA_JRE_CURRENT_VERSION"/>
<Property Id="JAVA_JDK_HOME"/>
<Property Id="JAVA_JRE_HOME"/>
<Property Id="JAVA_JDK_VERSION">
<RegistrySearch Id="SUN_JDK_VERSION" Root="HKLM"
Key="SOFTWARE\Javasoft\Java Development Kit"
Name="CurrentVersion" Type="raw"/>
</Property>
<Property Id="JAVA_JRE_VERSION">
<RegistrySearch Id="SUN_JRE_VERSION" Root="HKLM"
Key="SOFTWARE\Javasoft\Java Runtime Environment"
Name="CurrentVersion" Type="raw"/>
</Property>
<CustomAction Id="SetJavaJDKCurrentVersion"
Property="JAVA_JDK_CURRENT_VERSION"
Value="HKLM\SOFTWARE\Javasoft\Java Development
Kit\[JAVA_JDK_VERSION]"/>
<CustomAction Id="SetJavaJRECurrentVersion"
Property="JAVA_JRE_CURRENT_VERSION"
Value="HKLM\SOFTWARE\Javasoft\Java Runtime
Environment\[JAVA_JRE_VERSION]"/>
<InstallUISequence>
<Custom Action="SetJavaJDKCurrentVersion" Before="FindRelatedProducts"/>
<Custom Action="SetJavaJRECurrentVersion"
After="SetJavaJDKCurrentVersion"/>
<Custom Action="SetJavaJdkJreHome" After="SetJavaJRECurrentVersion"/>
</InstallUISequence>
<?include ..\..\build\SetJavaJdkJreHomeVBS.wxi?>
SetJavaJdkJreHomeVBS.wxi:
<?xml version="1.0" encoding="UTF-8"?>
<Include xmlns="http://schemas.microsoft.com/wix/2006/wi">
<!-- Set the Java JDK and JRE home directory properties -->
<CustomAction Id="SetJavaJdkJreHome" Script="vbscript">
<![CDATA[
jdkCurrentVersion =
Session.Property("JAVA_JDK_CURRENT_VERSION")
jreCurrentVersion =
Session.Property("JAVA_JRE_CURRENT_VERSION")
defaultVer = "1.6"
defaultValue = "notset"
jdkHomeKey = jdkCurrentVersion & "\JavaHome"
'MsgBox "Java JDK Home Reg Key = " & jdkHomeKey, vbOkOnly
jdkHome = readfromRegistry(jdkHomeKey, defaultHome)
jreHomeKey = jreCurrentVersion & "\JavaHome"
'MsgBox "Java JRE Home Reg Key = " & jreHomeKey, vbOkOnly
jreHome = readfromRegistry(jreHomeKey, defaultHome)
' Only set the properties if a value was found in the
registry
if jdkHome <> defaultValue then
Session.Property("JAVA_JDK_HOME") = jdkHome
end if
if jreHome <> defaultValue then
Session.Property("JAVA_JRE_HOME") = jreHome
end if
function readFromRegistry (strRegistryKey, strDefault )
Dim WSHShell, value
On Error Resume Next
Set WSHShell = CreateObject("WScript.Shell")
value = WSHShell.RegRead( strRegistryKey )
'MsgBox "SetJavaJdkJreHome" & vbCrLf & _
' " Registry key to read: " & strRegistryKey &
vbCrLf & _
' " Default value: " & strDefault & vbCrLf & _
' " Value read: '" & value & "'" & vbCrLf & _
' " err.number = " & err.number, vbOkOnly
if err.number <> 0 then
readFromRegistry= strDefault
else
readFromRegistry=value
end if
set WSHShell = nothing
end function
]]>
</CustomAction>
</Include>
On Thu, Jan 12, 2012 at 4:27 PM, Christopher Painter <[email protected]>wrote:
> My memory of the way Java stores there version information in the registry
> isn't very friendly to MSI's RegLocator pattern. You might need a custom
> action.
>
> ----------------------------------------
>
> From: "T. Kuro Kurosaka" <[email protected]>
>
> Sent: Thursday, January 12, 2012 6:21 PM
>
> To: [email protected]
>
> Subject: [WiX-users] Writing JDK version verification code, and Wix
> debugging tip
>
>
> Wix & MSI newbie here.
>
>
> My product requires JDK 1.6 installation, and I'm trying to come up with
>
> Wix code to verify the system has JDK 1.5 installed before proceeding
>
> installation of my product.
>
>
> I thought this would work:
>
>
> <Property Id="JDKVER">
>
> <RegistrySearch Id="NetFramework20"
>
> Root="HKLM"
>
> Key="SOFTWARE\JavaSoft\Java Development Kit"
>
> Name="CurrentVersion"
>
> Type="raw" />
>
> </Property>
>
>
> <Condition Message="This application requires Java Developer Kit 1.5 (or
>
> higher).">
>
> <![CDATA[Installed OR (JDKVER << "1.5" )]]> <!-- test with 1.6, 1.7,
>
> 1.8, etc. will be added later. -->
>
> </Condition>
>
>
> But this didn't work. Even if JDK 1.5 is installed, this message is
>
> displayed.
>
>
> Anybody has experience doing JDK version check?
>
>
> In an attempt to debug this, I wanted to display the value of property
>
> "JDKVER", and inserted this code. This is a modified version of the
>
> code I've found in the Internet:
>
> <CustomAction Id="ShowProperty" Script="vbscript" Execute="immediate">
>
> <![CDATA[
>
> MsgBox "JDKVER =" + Session.Property("JDKVER")
>
> ]]>
>
> </CustomAction>
>
>
> <InstallExecuteSequence>
>
> <Custom Action="ShowProperty" Before="InstallFinalize">True</Custom>
>
> <!-- "Not Installed" didn't work either. -->
>
> </InstallExecuteSequence>
>
>
> But no popup came out. What am I doing wrong here?
>
>
> Thank you in advance.
>
>
> T. "Kuro" Kurosaka
>
>
>
> ----------------------------------------------------------------------------
> --
>
> RSA(R) Conference 2012
>
> Mar 27 - Feb 2
>
> Save $400 by Jan. 27
>
> Register now!
>
> http://p.sf.net/sfu/rsa-sfdev2dev2
>
> _______________________________________________
>
> WiX-users mailing list
>
> [email protected]
>
> https://lists.sourceforge.net/lists/listinfo/wix-users
>
>
>
> ------------------------------------------------------------------------------
> RSA(R) Conference 2012
> Mar 27 - Feb 2
> Save $400 by Jan. 27
> Register now!
> http://p.sf.net/sfu/rsa-sfdev2dev2
> _______________________________________________
> WiX-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/wix-users
>
The information contained in this transmission contains potentially privileged,
export controlled and/or confidential
information of Imageware Systems, Inc. or its customers or partners. It is
intended only to be read by the person(s)
named above and for no other purpose. You are hereby notified that any
dissemination, distribution, duplication of this
communication or use of its contents for any purpose not authorized expressly
by Imageware Systems, Inc. is strictly
prohibited and could lead to both civil and/or criminal penalties. If you are
not the intended recipient, you are
prohibited to review the contents herein and please contact the sender by reply
e-mail and destroy all copies of the
original message. To reply to our e-mail administrator directly, please send
an e-mail to [email protected]
------------------------------------------------------------------------------
RSA(R) Conference 2012
Mar 27 - Feb 2
Save $400 by Jan. 27
Register now!
http://p.sf.net/sfu/rsa-sfdev2dev2
_______________________________________________
WiX-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wix-users