I'm having issues with my Java 8 package. The usual default path for Java installations C:\Program Files\Java\jreN (N being version, obviously so jre6, jre7, jre8 etc)
But mine is installing in STATIC mode even though I do not specify it anywhere. Whatever I try it goes in C:\Program Files\Java\jre1.8.0_25

I work with the extracted MSI. I've forced the property to 0, Disable (tried both), still won't install in jre8.
I've tried with the offline EXE just to test, same result, even when I use a CFG file in the command line (jre-8u25-windows-i586 /INSTALLCFG=pathtomyfile.cfg. I know it's reading my file because i used the INSTALL_SILENT=Enable in this file and it work perfectly. Yet STATIC=Disable or STATIC=0 does nothing, it installs in the STATIC path no matter what I try.

Any ideas what might be wrong?

Thanks in advance for any help

5 Comments   [ + ] Show Comments


  • What does a verbose MSI installation log tell you?
    What property did you set to 0?
    How are you setting the path you require?
    • I'm setting STATIC property to 0. Although I should not have to do this, since normally if left unspecified it should install a non static version (so in C:\Program Files\Java\jre8) Like all previous version of java 7 and 6 did.

      The log shows me that it is indeed setting the installdir to C:\Program Files\Java\jre1.8.0_25\\. But anyone who has experience in packaging Java knows that the default path is C:\Program Files\Java\jreX (x being the family, 6, 7, 8 etc)

      The purpose of STATIC=1 is to install in a different folder, so that it will always remain on the machine, never to be upgraded by a newer install. So the way it is now, everytime a new version of Java 8 is installed, it will ADD the new java on the machine, leaving also the older version of java 8 on the machine unless specifically uninstalled. This is NOT the default behavior in all previous families of java packages.

      I could tweak around the MSI and change it myself, BUT it will still be treated as a static install, so it will still not be upgraded by a newer install.
  • Are you testing on a clean machine with no other JRE installs present? If not, try that, as I don't see anything fundamentally wrong with what you are doing. Have you tried running the EXE installer with direct command line arguments such as /s STATIC=0
    By the way, have a closer look at this link:
    There is a strong suggestion there that if you don't specify an installdir then it will install into the default location which is based on the version of the JRE, regardless of the setting of the STATIC property. With Oracle, I have learned never to take anything at face value.
    • Yes, clean vanilla Win7 x86. I have tried using the exe instead, with the exact command line you mentionned (/s STATIC=0) I get the same result.

      I have even tried the exe with a config file, as mentionned here (http://docs.oracle.com/javase/8/docs/technotes/guides/install/config.html#installing_with_config_file) Same problem. To be sure I have tested other properties in the CFG file and they did in fact work, I seem to be only having problems with the STATIC property.

      I have checked your link, although I have done multiple packages of Java7, and never have I had to specify the installdir before.

      Thanks for taking the time to answer, I'm trying my luck on Oracle community forum, hope they can tell me anything.
  • I note you have not made any reference to examining a verbose log of the install. I would compare verbose logs with STATIC=0 and STATIC=1 to see whether they are essentially the same or whether there are any differences in any key property values. Might also be worth checking the MSI tables for any entries containing STATIC - especially conditions in the CustomAction table and the component table. Finally, I just recalled reading about an issue with this version of Java relating to virtualisation with SWV. The link is here:
    Apparently JRE8 v25 introduces symbolic linking of files. No doubt another Oracle dumb idea designed to give users endless headaches.
  • Has this been figured out? I'm running into what I believe is the same issue when trying to deploy Java 8 Update 31. My package installs the x64 and x86 versions, but installs them side by side with Java 8 Update 25. In the past it would simply update the version. Thanks!
    • I haven't found an authoritative answer to this but it seems to be subtly mentioned here as:

      "How can I remove older versions of Java?
      Windows users can safely uninstall older versions of Java:

      * when installing Java 8 (8u20 and above) or
      * by using the Java uninstall tool or
      * by manually uninstalling Java for Windows"


      I have confirmed the same results from my end as well unfortunately.
      • I was able to get my situation resolved. I didn't fully comprehend the install path change that Oracle recently implemented. Now that I am using the INSTALLDIR switch the installs update like they have in the past.

        As far as uninstalling, I use WMIC scripts to search and remove any previous Java version. This has worked well but it does take some time for the searches to complete.
  • The issue isn't just the install path being static or not. It is simply the fact that updates are not removing old versions! Yes you can uninstall them we know that but my gramma doesn't do that and so it will be Thanksgiving before I can come to unload all her old versions of vulnerable JRE now!! UgH!
Please log in to comment



You can specify the directory that you want to install to by using the INSTALLDIR parameter, using the offline EXE. I also always turn of automatic updates as if you don't, all users that log on will be prompted to upgrade Java, which will try to install to the static address, losing all your good work! Try using this command:

jre-8u25-windows-x64.exe /s INSTALLDIR="C:\Program Files\Java\jre8" AUTO_UPDATE=0

Answered 03/05/2015 by: twisted_fool
White Belt

Please log in to comment
Yes, this is very annoying, but it appears Oracle did it on purpose starting in JRE 8u20:


Answered 02/03/2015 by: cogx
White Belt

  • Yes I have commented on that thread. My issue with that answer is that although the path thing might be done on purpose, it is still behaving as a static install even though you don't specify it. You must absolutely uninstall the previous version before installing the next, as in the previous versions it would upgrade instead.
Please log in to comment

the problem is that Java 1.8.0_25 has in the msi-table the fixed installdir path "jre1.8.0_25".
To change the path, you have to modify the msi-file with a tool like "Orca".
Change the value INSTALLDIR in the Directory-table from "jre1.8.0_25" to "jre8".
This should be working.
Answered 12/15/2014 by: DKur
White Belt

  • It does work yes, I already tried that. The issue is, it is STILL being treated as a STATIC install. So it will still not upgrade when installing future versions. I know I can tweak the upgrade tables and get it to work, but this is not the default behavior it SHOULD have. This is most probably a mistake on Oracle's part.

    I even tested this with the normal consumer install, and it does the same thing. Which means eventually home PC's will have a bunch of stacked Java 1.8 versions on their machines and will not even know. And when the unavoidable security holes show up for older versions.... you see where I'm going ;)
    • Just want to ask if you have found a solution on how to update correctly.
      • Don't just update. Use msiexec /x to uninstall and do a complete new install.
      • Not yet, I was hoping to see it fixed in the next release but this issue is still present in
Please log in to comment

As indicated, whether you specify static or not, the path now always includes the version. And as has also been pointed out, the installer refuses to uninstall the older versions even if you have a non-static install.

Looking at the MSI, the action to remove older versions depends on the condition REMOVEOLDERJRES=1. Is you try to specify that property on the command line with the exe, it rejects it as an invalid property. If you extract the msi file and install using msiexec.exe, you can specify REMOVEOLDERJRES=1 and the setup uninstalls the previous version as part of the setup.

I tested it by installing the u60 versions, then installed u66 with our standard options:

msiexec.exe /i jre-8u66.msi /s INSTALL_SILENT=Enable AUTO_UPDATE=Disable REBOOT=Disable NOSTARTMENU=Enable EULA=DIsable REMOVEOLDERJRES=1 /l*v %TEMP%\jre-8u66.log

Removes u60 and installs u66 as desired.

Answered 10/21/2015 by: Ladewig
White Belt

Please log in to comment
Answer this question or Comment on this question for clarity