Skip to content

Instantly share code, notes, and snippets.

@smaudet
Forked from anatol-grabowski/unpack-jdk-x64.bat
Last active October 7, 2022 09:42
Show Gist options
  • Select an option

  • Save smaudet/2cab5c8188ff0c2ae3c00bdb9499b53f to your computer and use it in GitHub Desktop.

Select an option

Save smaudet/2cab5c8188ff0c2ae3c00bdb9499b53f to your computer and use it in GitHub Desktop.
@echo off
set vernum=8u144
set jdkbasename=jdk8
set "tool7z=C:\Program Files\7-Zip\7z.exe"
set "jdk_exe=%1"
echo Extracting '.rsrc/1033/JAVA_CAB10/111'
%tool7z% e %jdk_exe% .rsrc/1033/JAVA_CAB10/111
rem :: %tool7z% e %jdk_exe% .rsrc/1033/version.txt
echo Extracting '111'
extrac32 111
echo Removing '111'
del 111
echo Extracting 'tools.zip'
%tool7z% x tools.zip -otools
echo Removing 'tools.zip'
del tools.zip
echo Extracting '*.pack'
cd tools
for /r %%x in (*.pack) do .\bin\unpack200 -r "%%x" "%%~dx%%~px%%~nx.jar"
echo Copying to %jdkbasename%-%vernum%
mkdir ..\%jdkbasename%-%vernum%
xcopy .\* ..\%jdkbasename%-%vernum% /Y /E
cd ..
echo Deleting tools directory
del /Q tools
echo Done - JDK in %jdkbasename%-%vernum%
@smaudet
Copy link
Copy Markdown
Author

smaudet commented Aug 2, 2017

Added better unpack logic.

Copy link
Copy Markdown

ghost commented Mar 16, 2018

Thanks for this script.

On Win10 and using a path with spaces on D:, I had to make these changes for it to work:

Line 4: set tool7z="PATH_TO_7z\7z.exe"
Line5: set jdk_exe="%1"
Line 34: rd /s /q tools

In short, del would never delete folder "tools" and I don't know about that SET VAR syntax with both the var and the value on quotes, I had to put them as normal (only value on quotes because of spaces, if any) for it to work.

Also have you checked Java 9? Apparently there is only a "tools.zip" inside the EXE and everything's already unpacked so no need for scripts? If you can take a look lemme know.

@smaudet
Copy link
Copy Markdown
Author

smaudet commented Nov 26, 2020

@TehPsychedelic No problem!

Feel free to fork and create a new version.

Yeah I don't know why the set was done that way, it must have been an older version of windows (10) I was using. I went looking for this myself and it no longer works unless you apply your changes. Also there was no user manual when I came to this page, you should put your jdk exes in a separate directory e.g.:
Directory of C:\software\jdks

11/26/2020 02:23 PM

.
11/26/2020 02:23 PM ..
11/26/2020 01:43 PM 212,582,768 jdk-8u181-windows-x64.exe
11/20/2020 02:27 PM 161,982,088 jdk-8u271-windows-i586.exe
11/26/2020 01:57 PM jdk8-8u144

Otherwise it seems like there is some weird functionality where it will copy everything else in your folder into the new jdk8-8u144 directory...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment