This discussion has been locked. The information referenced herein may be inaccurate due to age, software updates, or external references.
You can no longer post new replies to this discussion. If you have a similar question you can start a new discussion in this forum.

Rolling out Java 7 runtime to machnines with Java 6 installed

FormerMember
FormerMember

We have been happily rolling out Java 6 updates to machines with Java 6 installed with very few issues.

We have been happily rolling out Java 7 updates to machines with Java 7 installed also with very few issues. Java 6 is now clearly dead so we need to get all our PCs onto Java 7 and un-install Java 6.

I'm just thinking about how to go about this and wondering if people have done this before and could save me re-inventing the wheel.

What I don't want to do is to install the latest Java 7 runtime to every PC, some PCs don't currently have Java and don't need it installing, some already have Java 7 installed and it will be upgraded with our normal Patch Manager updates. I just want to target machines with Java 6 installed that don't have Java 7.

My current thinking is to install Java 7 on the machines with Patch Manager and subsequently use SCCM to un-install Java 6 as I need lots of flexibility as I have nearly every version of Java 6 to remove from at least one machine.

I could modify a Java 7 *upgrade* package so it just targets PCs with Java 6 (and no Java 7). I'm not sure the 'logic' within the package (ie the packageboot.xml) is appropriate to upgrade from Java 6. I could compare it to that in a Java 6 upgrade package, but there are tens of different versions of Java 6 and and testing all the permutations would be a nightmare.

I could modify a Java 7 *install* package so it just targets PCs with Java 6 (and no Java 7). I fear there will need to be some logic adding to the packageboot.xml to deal with services and open files, but as I'm dealing with such a wide range of Java 6 installations determining what this should be could also be a nightmare.

I could un-install *all* versions of Java 6 before installing Java 7 (using the install package) but I fear this will also cause problems. . .

     I can't pop up a window advising the user what's happening and don't restart your web browser until the process is complete.

     The process will take minutes!

     If the process fails I could be left with machines that have no Java installed so I won't be able identify them as needing Java for future fixes.

Has anyone done anything like this or have ideas as to the best way forward?

(NB: I could be dealing with up to 6000 PCs) Ouch!

Cheers

Spike

  • I did the same thing.  Java 7 only uninstalls 6 using it's built in autoupdate.   I modified the latest fairly functional Java 7 installation package (not upgrade) and pushed it to PC's that had Java 6.  I added a large Java 6 uninstall script from Java J2SE & JRE Mass Uninstallation Script (Bat)   I had it run the uninstall script before it installed 7 and for the most part it worked great.  It took a while to do all 800 PC's.  I did one location or department at a time, at night when the users weren't around.  I didn't have any bad failures.  I even ran it on PC's currently using a Java browser app and it didn't bother the user.  It seemed as long as they didn't close IE, Java would keep working even after it was uninstalled.   I don't know if there is an elegant way of doing it.  What I did worked for me.   Just make sure you completely test it.  

    - Joe

  • FormerMember
    0 FormerMember in reply to bsod

    Thanks for the response Joe. I went down that road with a similar version of that msi /uninstall {guid} script when I first tried getting all our users onto the latest version of Java 6 and uninstalling all the old versions in the days before Java 7 was even available.

    I even tried to 'clean' things up with JavaRa. I never got things to work properly, I was force closing the browser, the whole process would take ages to run, things went wrong if the browser was restarted during the process and I'd end up with too many machines with no or a broken version of Java installed

    So what you've said is very interesting. Uninstall all of Java 6 before doing effectively a clean install of Java 7 and it looks like you've even managed to get away with leaving browsers open, something I didn't even consider as being possible!

    One question "Java 7 only uninstalls 6 using it's built in autoupdate"; from this I take it that if a user upgrades to Java 7 via the autoupdate process old versions of Java 6 get removed; interesting. I've not seen this as we disable the auto update process with a GPO :-)

    Thanks for the ideas. I'll start to create a test package and get testing :-)

    Cheers

    Spike

  • One question "Java 7 only uninstalls 6 using it's built in autoupdate"; from this I take it that if a user upgrades to Java 7 via the autoupdate process old versions of Java 6 get removed;

    Yes.  We install Java with command line switches so the update service isn't installed on the computers.  /s /v /norestart AUTOUPDATECHECK=0 JAVAUPDATE=0 JU=0   so I had to do the manual update of the client computers.   Java's autoupdate will go out and download 7, then replace version 6 if it is allowed to do it's thing.  I believe you need one of the last versions of 6 to do this.  6u43 or 6u45.  Here's a quote from Oracle:

    Does updating from Java 6 to Java 7 remove any previous versions?

    Yes, updating to Java 7, using Auto Update or updating through the Java Conntrol Panel, will remove the highest version of Java 6 installed.

    - Joe

  • One way to deal with the uninstallation of JRE6 is to open a Computer Explorer session to a computer with JRE6 installed. Navigate to the Installed Software tab, select "Java Runtime Environment 6", and create an Uninstall Software task and target it to the desired machine(s).

    Taking it a step farther, if you're doing Managed Computer Inventory tasks, run an Installed Software report, filter on "Java Runtime Environment 6" and use the list of machines with JRE6 installed to create a Patch Manager Computer Group, and then target the Uninstall Software task to that Patch Manager Computer Group.