制作JDK免安装包

in 分享 with 0 comment

由于Oracle官网只提供exe安装版的JDK,不如免安装,直接解压来的方便,所以萌生了制作免安装JDK的想法。

首先下载JDK:Oracle官网,我选择的是Java SE 8u171。

思路1:

首先想到的方法是,按照步骤常规安装,安装完毕后,打包安装目录下的文件,最后卸载,这样就可以使用打包好的JDK了。但是这违背了免安装的初衷,故有了另一个想法——直接提取安装包内的文件。

思路2:

需要工具:7-Zip(没有安装朋友的点此下载

新建一个文件夹,如“workspace”,用于放置JDK安装包,避免解压后因为文件零散而混乱。

1547368525823

使用7-Zip提取安装包。(每次提取,最好提取到对应文件夹内,而不是当前目录,否则,零碎的文件混在一起无法分辨!)

1547368570430

进入".rsrc > 1033"文件夹,可以看到有四个以"JAVA_CAB"开头的文件夹,这些文件夹中存放的文件还需要进一步的提取才能得到我们能用的文件,以下是这些文件的对应关系。

文件夹名称文件说明
JAVA_CAB7jre.exe 安装程序
JAVA_CAB9src.zip 源代码包
JAVA_CAB10tools.zip 我们需要的JDK
JAVA_CAB11COPYRIGHT 版权声明文件

提取JDK

进入”JAVA_CAB10“文件夹,文件夹内只有一个文件“111”,在该目录下,按住Shift键,同时鼠标右击空白处,在右键菜单中选择“在此处打开PowerShell窗口(S)”

1547368438358

输入命令extrac32 111

1547368752176

然后就可以看到,在该目录下多出了一个名为“tools.zip”的压缩包。

1547368690259

把它解压出来就是JDK了。

1547368794088

此时解压出来的JDK文件还不能直接使用,我们进入“tools > jre > lib”文件夹,会发现存在“.pack”为后缀的文件,而我们需要的是“.jar”后缀的文件,所以还需要对这些文件进行进一步的转换。

1547368815673

在CMD命令行下,进入lib目录,输入下面的命令进行转换:

for /r %x in (*.pack) do ..\bin\unpack200 -r "%x" "%~dx%~px%~nx.jar"

1547370869418

转换完成结果。

1547368873529

将“tools”文件夹打包压缩,我们就得到一个可以免安装使用的JDK了。

提取JRE

JRE的提取与JDK大同小异,首先进入“JAVA_CAB7”文件夹,使用PowerShell,利用命令extrac32 108提取,得到“jre.exe”安装文件,然后使用7-Zip提取安装包。

1547368957982

进入“jre”目录,找到“Data.cab”文件,使用7-Zip解压这个文件,得到“installerexe”,继续提取“installerexe”。

1547369041984

“installerexe~”目录就是我们需要的JRE了。

1547369011159

最后和JDK提取步骤一样,需要对“lib”文件夹内的“.pack”文件进行转换,获得我们需要的“.jar”文件,自行参考JDK步骤,不再赘述。

提取源码

源码提取最为简单,和JDK、JRE提取的第一步一样,使用PowerShell,输入命令即可,得到我们的“src.zip”文件,这里再不需要任何的转换了。

提取版权声明

与源码提取方法完全一致。

Responses