I would recommend updating the conditions to 64-bit: <![CDATA[Installed OR ((JRE64 AND JRE64 >= "1.6") OR (JRE32 AND JRE32 >= "1.6"))]]> 32-bit: <![CDATA[Installed OR ((JRE64 AND JRE64 >= "1.6") AND (NOT JRE32) OR JRE32 < "1.6"))]]>
This is clearer and separates out the maintenance part of the condition from the precondition part. > From: haw...@anx.com > To: wix-users@lists.sourceforge.net > Date: Wed, 19 Jun 2013 10:03:12 -0400 > Subject: Re: [WiX-users] Java Program Installer > > I think Jacob makes a good point, at some point in time, I will learn > how to use Burn and create a combined installer. This addresses issues I > had not set out to address (reduce over all installer size by using CAB > files to store common jars), and reduces the number of installers to one, > that just does the right thing. > > I can't tell how many times I have searched email list archives and find > someone who is having a similar problem as I, but never find a > resolution to the problem, so for all intensive purposes, I will state > the solution to my initial problem, since it was initially about WiX > conditionals. > > Here is the code I wound up with: > > <Property Id="JRE64"> > <RegistrySearch > Id="JRE64_KEY" > Root="HKLM" > Key="SOFTWARE\JavaSoft\Java Runtime Environment" > Name="CurrentVersion" > Type="raw" > Win64="yes" > /> > </Property> > <Property Id="JRE32"> > <RegistrySearch > Id="JRE32_KEY" > Root="HKLM" > Key="SOFTWARE\JavaSoft\Java Runtime Environment" > Name="CurrentVersion" > Type="raw" > Win64="no" > /> > </Property> > > <Condition Message="Java not installed Please install JRE 1.6 or later."> > <![CDATA[((Installed OR JRE64) AND JRE64 >= "1.6") OR ((Installed OR > JRE32) AND JRE32 >= "1.6")]]> > </Condition> > > I know I stated Java 7 being the minimum version before, but really, it > is Java 6. The message works. This message pops up if there is no Java > installed, or if a 32bit Java and a 64bit Java is installed, but > both are earlier versions than 1.6. It will not flag the message, and > proceed with install if one of them are v. 1.6 or greater. It still > installs if one of the installed JVM's meet the version requirements. > > I then set up a Fragment32.wxs and Fragment64.wxs file containing all > the components for a 32bit install and a 64bit install (all with unique > Id's). > > In the main file, I list the feature sets for both installs, with these > conditions set within the corresponding topmost feature set: > > For a 64bit install: > > <Feature Id="Complete64" Title="JavaProg" Description="The complete > package." > Display="expand" Level="1" ConfigurableDirectory="INSTALLDIR64"> > <Condition Level="0"> > <![CDATA[((Installed OR NOT JRE64) OR JRE64 < "1.6") AND ((Installed OR > JRE32) AND JRE32 >= "1.6")]]> > </Condition> > ..... > </Feature> > > and this for a 32bit install: > > <Feature Id="Complete32" Title="JavaProg" Description="The complete > package." > Display="expand" Level="1" ConfigurableDirectory="INSTALLDIR32"> > <Condition Level="0"> > <![CDATA[((Installed OR JRE64) AND JRE64 >= "1.6") AND ((Installed OR > NOT JRE32) OR JRE32 < "1.6")]]> > </Condition> > ...... > </Feature> > > This works, which is just "good enough" today. I will search out how to > use Burn for the future. > > > Daniel Madill writes: > > > Because I started the installer before burn was available. Nor are the > > 32-bit installers identical because some 32-bit third-party products we > > interface with do not work on 64-bit platforms due to device drivers (which > > must be 64-bit). We are also not using Java. In our case it's native code. > > Our installer checks the O/S so it is not possible to use our 32-bit > > installer on a 64-bit platform so there is no potential for conflict there. > > External CABs are a nuisance for web downloads. Burn would resolve that > > problem, but we started in pre-burn days and haven't upgraded yet because > > it hasn't been necessary. At some point we will likely investigate using > > burn. > > > > Daniel Madill > > > > -----Original Message----- > > From: Hoover, Jacob [mailto:jacob.hoo...@greenheck.com] > > Sent: June-18-13 3:19 PM > > To: General discussion for Windows Installer XML toolset. > > Subject: Re: [WiX-users] Java Program Installer > > > > But why would you make a 64bit installer that installs both, and a second > > 32 bit installer. I fail to see the benefit of that vs a pure 32 bit > > installer and a pure 64 bit installer, and then utilize burn to install > > them when needed. If the files are in fact identical, you can go one step > > further and use external CABS so you don't even have duplicate Jar's for > > each MSI. > > > > If you have it layed out where the 64 bit MSI installs 32 bit components, > > what happens if the user then installs an upgraded 32 bit MSI of yours? > > > > > > -----Original Message----- > > From: Daniel Madill [mailto:dan.mad...@quanser.com] > > Sent: Tuesday, June 18, 2013 1:49 PM > > To: General discussion for Windows Installer XML toolset. > > Subject: Re: [WiX-users] Java Program Installer > > > > I use a WiX preprocessor variable for the Win64 attribute value so I can > > set it in one spot when using the same source for generating a 32-bit and a > > 64-bit MSI. That makes it easy e.g. Win64=$(var.Win64). > > > > Daniel Madill > > > > -----Original Message----- > > From: Tim Hawes [mailto:haw...@anx.com] > > Sent: June-18-13 2:46 PM > > To: General discussion for Windows Installer XML toolset. > > Subject: Re: [WiX-users] Java Program Installer > > > > > > Wesley Manning writes: > > > >> Curiosity got better of me. It seems that for a 64bit MSI Win64=yes is > >> assumed so you only need to set the Win64 attribute (= no) for the 32bit > >> components. > >> > > > > Apparently, it is NOT assumed for <RegistrySearch/>. I've spent half the > > day spinning my wheels on that one today. > > > > > >> -----Original Message----- > >> From: Daniel Madill [mailto:dan.mad...@quanser.com] > >> Sent: June-18-13 3:23 PM > >> To: General discussion for Windows Installer XML toolset. > >> Subject: Re: [WiX-users] Java Program Installer > >> > >> I install 32-bit components using a 64-bit MSI all the time in order to > >> have a single MSI that provides support for our APIs to both 32-bit and > >> 64-bit applications running on a 64-bit O/S. It works just fine. I use WiX > >> preprocessor directives to build a pure 32-bit MSI for 32-bit platforms > >> and a mixed 64-bit MSI for 64-bit platforms from the same WiX source. > >> > >> Daniel Madill > >> > >> -----Original Message----- > >> From: Wesley Manning [mailto:wmann...@dynagen.ca] > >> Sent: June-18-13 2:17 PM > >> To: General discussion for Windows Installer XML toolset. > >> Subject: Re: [WiX-users] Java Program Installer > >> > >> AFAIK you can have 64bit MSI install 32bit components. But a 32bit MSI > >> can't install 64bit components. There is a 64bit attribute on the > >> component to say if its 32bit or 64bit... Just from memory, never had to > >> do this. > >> > >> -----Original Message----- > >> From: Hoover, Jacob [mailto:jacob.hoo...@greenheck.com] > >> Sent: June-18-13 12:48 PM > >> To: General discussion for Windows Installer XML toolset. > >> Subject: Re: [WiX-users] Java Program Installer > >> > >> As far as I am aware, it is not possible/supported to install 32 bit > >> components in a 64 bit MSI. There are unsupported hacks out there, but > >> they would fail ICE validation and wouldn't be Logo certified. > >> > >> If you already have a 64 bit and 32bit MSI, and the 64 bit MSI installs > >> only 64bit components, then it would be near trivial to setup a Bundle to > >> do the registry searches you previously wanted to do in a MSI and > >> conditionally install either the 32 bit or 64 bit MSI on a 64 bit machine. > >> In addition, this same bundle can be deployed to a 32 bit machine. > >> > >> -----Original Message----- > >> From: Tim Hawes [mailto:haw...@anx.com] > >> Sent: Tuesday, June 18, 2013 9:58 AM > >> To: General discussion for Windows Installer XML toolset. > >> Subject: Re: [WiX-users] Java Program Installer > >> > >> My understanding is that a 64bit installer can install 32bit binaries? I > >> am using this just for 64bit systems. I am already building a separate > >> 32bit installer for 32bit systems (which only needs to test for JRE > >> version). The problem I describe below is a 64bit installer which must > >> determine which JRE is installed on the system, since it is possible to > >> install both a 32bit JRE and a 64bit JRE. If I need separate installer for > >> this, then forget it. It will just have to fail if it doesn't find the > >> 64bit JRE. > >> > >> > >> > >> > >> Hoover, Jacob writes: > >> > >>> You need 2 MSI packages, one for the 64 bit components and one for the > >>> x86 components. You can utilize burn to do the bitness of the OS test and > >>> then decide which installer to invoke. > >>> > >>> -----Original Message----- > >>> From: Tim Hawes [mailto:haw...@anx.com] > >>> Sent: Tuesday, June 18, 2013 8:38 AM > >>> To: General discussion for Windows Installer XML toolset. > >>> Subject: [WiX-users] Java Program Installer > >>> > >>> I have a product that will use a 64bit installer. It uses an exe wrapper > >>> for the jar files so that the programs can be entered as Windows services > >>> and the config programs can run from the Start menu. The wrapper requires > >>> different binaries for the type of JVM installed, 32bit executables for > >>> runnning the jars under a 32bit JVM, and 64bit executables for running > >>> the same jars under a 64bit JVM. > >>> > >>> The requirements for the 64bit installer is to detect which JVM is > >>> installed. If it finds the 64bit JRE, it stops there and installs the > >>> 64bit exe's (and the associated jar files) under ProgramFiles64Folder, > >>> upon failing that, it should search for the 32bit JRE, and then install > >>> the 32bit exe's (and associated jar files) under ProgramFilesFolder. > >>> > >>> Here is the WiX snippet I have: > >>> > >>> <Property Id="JRE64"> > >>> <RegistrySearch Id="J64REVER" Type="raw" > >>> Root="HKLM" Key="Software\JavaSoft\Java Runtime > >>> Environment\CurrentVersion" Name="JavaVersion" /> > >>> </Property> > >>> > >>> <Property Id="JRE32"> > >>> <RegistrySearch Id="J32REVER" Type="raw" > >>> Root="HKLM" Key="Wow6432Node\JavaSoft\Java Runtime > >>> Environment\CurrentVersion" Name="JavaVersion" /> > >>> </Property> > >>> > >>> <Condition Message="This application requires Java Version 7 > >>> or higher"> > >>> <![CDATA[ (Installed OR JRE32 OR JRE64) AND JRE32 < "1.7" > >>> AND JRE64 < "1.7" ]]> > >>> </Condition> > >>> > >>> I don't think my condition is right. What I want it to say, in pseudo > >>> code, is: > >>> > >>> IF ( > >>> (NOT JRE32 OR JRE32 < "1.7") > >>> AND > >>> (NOT JRE64 OR JRE64 < "1.7") > >>> ) > >>> THEN stop install with the message. > >>> > >>> Since it is possible to have both an 32bit JRE and 64bit JRE installed on > >>> a 64bit system, it is important to check for both, but default to the > >>> 64bit JRE if it is up-to-date and available. > >>> > >>> Thanks! > >>> > >>> ---------------------------------------------------------------------- > >>> -------- This SF.net email is sponsored by Windows: > >>> > >>> Build for Windows Store. > >>> > >>> http://p.sf.net/sfu/windows-dev2dev > >>> _______________________________________________ > >>> WiX-users mailing list > >>> WiX-users@lists.sourceforge.net > >>> https://lists.sourceforge.net/lists/listinfo/wix-users > >>> > >>> ---------------------------------------------------------------------- > >>> -------- This SF.net email is sponsored by Windows: > >>> > >>> Build for Windows Store. > >>> > >>> http://p.sf.net/sfu/windows-dev2dev > >>> _______________________________________________ > >>> WiX-users mailing list > >>> WiX-users@lists.sourceforge.net > >>> https://lists.sourceforge.net/lists/listinfo/wix-users > >> > >> > >> ------------------------------------------------------------------------------ > >> This SF.net email is sponsored by Windows: > >> > >> Build for Windows Store. > >> > >> http://p.sf.net/sfu/windows-dev2dev > >> _______________________________________________ > >> WiX-users mailing list > >> WiX-users@lists.sourceforge.net > >> https://lists.sourceforge.net/lists/listinfo/wix-users > >> > >> ------------------------------------------------------------------------------ > >> This SF.net email is sponsored by Windows: > >> > >> Build for Windows Store. > >> > >> http://p.sf.net/sfu/windows-dev2dev > >> _______________________________________________ > >> WiX-users mailing list > >> WiX-users@lists.sourceforge.net > >> https://lists.sourceforge.net/lists/listinfo/wix-users > >> > >> > >> > >> ------------------------------------------------------------------------------ > >> This SF.net email is sponsored by Windows: > >> > >> Build for Windows Store. > >> > >> http://p.sf.net/sfu/windows-dev2dev > >> _______________________________________________ > >> WiX-users mailing list > >> WiX-users@lists.sourceforge.net > >> https://lists.sourceforge.net/lists/listinfo/wix-users > >> > >> ------------------------------------------------------------------------------ > >> This SF.net email is sponsored by Windows: > >> > >> Build for Windows Store. > >> > >> http://p.sf.net/sfu/windows-dev2dev > >> _______________________________________________ > >> WiX-users mailing list > >> WiX-users@lists.sourceforge.net > >> https://lists.sourceforge.net/lists/listinfo/wix-users > >> > >> > >> > >> ------------------------------------------------------------------------------ > >> This SF.net email is sponsored by Windows: > >> > >> Build for Windows Store. > >> > >> http://p.sf.net/sfu/windows-dev2dev > >> _______________________________________________ > >> WiX-users mailing list > >> WiX-users@lists.sourceforge.net > >> https://lists.sourceforge.net/lists/listinfo/wix-users > > > > > > ------------------------------------------------------------------------------ > > This SF.net email is sponsored by Windows: > > > > Build for Windows Store. > > > > http://p.sf.net/sfu/windows-dev2dev > > _______________________________________________ > > WiX-users mailing list > > WiX-users@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/wix-users > > > > ------------------------------------------------------------------------------ > > This SF.net email is sponsored by Windows: > > > > Build for Windows Store. > > > > http://p.sf.net/sfu/windows-dev2dev > > _______________________________________________ > > WiX-users mailing list > > WiX-users@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/wix-users > > > > ------------------------------------------------------------------------------ > > This SF.net email is sponsored by Windows: > > > > Build for Windows Store. > > > > http://p.sf.net/sfu/windows-dev2dev > > _______________________________________________ > > WiX-users mailing list > > WiX-users@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/wix-users > > > > ------------------------------------------------------------------------------ > > This SF.net email is sponsored by Windows: > > > > Build for Windows Store. > > > > http://p.sf.net/sfu/windows-dev2dev > > _______________________________________________ > > WiX-users mailing list > > WiX-users@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/wix-users > > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by Windows: > > Build for Windows Store. > > http://p.sf.net/sfu/windows-dev2dev > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ This SF.net email is sponsored by Windows: Build for Windows Store. http://p.sf.net/sfu/windows-dev2dev _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users