Self-extracting jre instructions _________________________________ 1. We've already committed the compiled up 64 bit versions of 7za and 7zCon.sfx for mac to svn, the 32 bit for Windows (also compatible with 64 bit Windows), and the 32 bit and 64 bit versions for linux. On Mac these are now present in release-kits/shared/mac/p7z-essentials folder. The 7za and 7zCon.sfx from the p7z-essentials folder are needed to generate the self-extracting jre from a jre. Look in the bitness subfolder (32-bit or 64-bit) appropriate to the target bitness of your self-extracting binary. On a mac or linux, you can compile these two binaries 7za and 7zCon.sfx up yourself by downloading the p7zip source code from online http://p7zip.sourceforge.net/. Compile the source code by first runnng "make" to build the 7za, then run "make sfx" to build the 7zCon.sfx binary. 2. Need the jre for your java version. Java 8 should be used for Expeditee. Since Aug/Sep 2021, we've shifted to Java 8 for Greenstone also. The jre should be extracted into a folder named jre. Also, don't make it a tar file for Expeditee. But Greenstone expects the jre to be tarred up first. If the self-extracting jre_bin binary should run on a 64 bit machine, use the 64 bit 7za compiled up in the 64-bit subfolder (this will use the associated 64 bit 7zCon.sfx library in the same subfolder). For a 32 bit machine, use the 32 bit 7za in the 32-bit subfolder. 3. Run: ./p7z-essentials/[32|64]-bit/7za a -sfx -mx=9 jre_bin[_x64] /path/to/your-jdk-version/jre[.tar] e.g. for a 32 bit target, you'd run the following on a 32 bit LSB if creating the self-extracting binary for Expeditee: ./p7z-essentials/32-bit/7za a -sfx -mx=9 jre_bin /path/to/your-jdk-version/jre e.g. for a 64 bit target, you'd run the following on a 64 bit LSB, if creating the self-extracting binary for Greenstone: ./p7z-essentials/64-bit/7za a -sfx -mx=9 jre_bin_x64 /path/to/your-jdk-version/jre.tar * -m0=lzma2 is already done automatically, setting the compression mode to lzma2. * -mx=9 set its (compression? speed?) to ultra * the output file name expected by the release-kit is jre_bin for 32 bit linux, jre_bin_x64 for 64 bit linux * -sfx indicates that it will generate a self-extracting binary out of the input file * the "a" indicates it will add the files from the input folder (the /path/to/your-jdk-version/jre in this case) to the output file If you see the message "Error: jre_bin_x64 is not supported archive", then cd into the p7z-essentials folder and run the ./7za command as above To get the JRE for a Mac, do one of the following: A. Now (at least since jre v 1.7.0_79) the Oracle site has a JRE for Macs available for download as dmg and tar.gz files. If this is available: 1. Download the JRE.dmg or JRE.tar.gz for the java version you want and extract it. 2. From the extracted contents, the folder you want is jre.jre/Contents/Home. Rename this Home subfolder to "jre". 3. Tar it up and create the self-extracting jre (the final step of the instructions above): ./p7z-essentials/[64-bit]/7za a -sfx -mx=9 jre_bin_x64 jre.tar If you see the message "Error: jre_bin_x64 is not supported archive", then cd into the p7z-essentials folder and run the ./7za command as above B. If no JRE.dmg or JRE.tar.gz for Mac is available: 1. Download the JDK.dmg for the java version you want. 2. Open the dmg, drag the .pkg out to another folder. 3. Extract the pkg using: xar -xf .pkg 4. Another couple of pkgs should appear, these are actually fake folders (like .app folders) 5. The one you want is the jdk.pkg. Rightclick > Show package contents to view its contents. 6. Then double click on the Payload item to extract Payload. Alternatively, since it's just a tarfile, you can do tar -xf jdk180.pkg/Payload 7. You get a Contents folder, then browse to Contents > Home > jre. That's the folder you want.