Как извлечь ТОЛЬКО содержимое установщика JDK - PullRequest
12 голосов
/ 05 февраля 2010

Я только что скачал Java SDK / JDK версий 5 и 6, и мне просто нужны инструменты разработки (и некоторые библиотеки), содержащиеся в установочных пакетах, мне не нужно выполнять установку, и поэтому я только искал сначала для zip-пакета (для Windows есть только установочный файл exe), мне нужно только извлечь содержимое установочных пакетов, я думаю, что это можно сделать из командной строки, но до сих пор я не нашел, как сделать это (я уже рассматривал WinRar и 7-Zip, но я действительно хочу найти, как это сделать без использования этих инструментов)

Вы делали это раньше и как?

Ответы [ 8 ]

8 голосов
/ 20 ноября 2014

Вот скрипт .bat для распаковки файлов "pack". Должен быть запущен в корне разархивированного JDK.

@echo off
echo **********************
echo unpack JDK pack-files
echo **********************
pause

set JAVA_HOME=c:\glassfish4\jdk7

setlocal enableextensions
for /r %%f in (*) do call :process %%f
endlocal
goto :eof

:process
if NOT "%~x1" == ".pack" goto :eof
set FOLDER=%~p1

set PWD=%CD%
pushd %FOLDER%
echo Unpacking %~nx1
%JAVA_HOME%\bin\unpack200.exe %~nx1 %~n1.jar
popd

goto :eof
7 голосов
/ 05 февраля 2010

Я использую 7-zip для этого. Кажется, он прекрасно справляется с этими установщиками / самораспаковывающимися исполняемыми файлами.

4 голосов
/ 23 сентября 2014

Я создал скрипт cygwin для этого: https://gist.github.com/4ndrew/f9dca61cedf0e8340b54

#!/bin/sh
# usage example: prepareJdk.sh jdk-7u67-windows-x64.exe (result will be in jdk/)
# Requires: p7zip, unzip

JDK_EXE=$1
7z x -ojdk "$JDK_EXE"
unzip jdk/tools.zip -d jdk/

find jdk/ -type f \( -name "*.exe" -o -name "*.dll" \) -exec chmod u+rwx {} \;

rm jdk/tools.zip
find jdk/ -type f -name "*.pack" | while read eachFile; do
   echo "Unpacking $eachFile ...";
  ./jdk/bin/unpack200.exe $eachFile ${eachFile%.pack}.jar;
  rm $eachFile;
done
3 голосов
/ 05 февраля 2010

Вы можете выполнить установку один раз, а затем архивировать установленный файл, расположенный в папке \ Programs \ Java.

Это можно позже разархивировать в другом месте и использовать в качестве JDK в большинстве IDE без необходимости полной переустановки (но тогда Windows не знает об этом)

2 голосов
/ 26 декабря 2010

Вы можете извлечь JDK 1.5 и 1.6 из файлов .exe, используя Universal Extractor (действительно отличный инструмент). Но не забудьте преобразовать все файлы * .pack (сжатые в формате Pack200 ) в соответствующие файлы * .jar, чтобы получить полную рабочую среду. Вы можете использовать команду unpack200.exe, предоставленную в самом JDK.

1 голос
/ 22 ноября 2016

Это скрипт e-egiazarov , модифицированный для использования unpack200.exe из архива JDK, а также для удаления файла пакета после преобразования.

@echo off

setlocal enableextensions
for /r %%f in (*) do call :process %%f
endlocal
goto :eof

:process
if NOT "%~x1" == ".pack" goto :eof
set FOLDER=%~p1

set PWD=%CD%
pushd %FOLDER%
echo Unpacking %~nx1
%PWD%\bin\unpack200.exe %~nx1 %~n1.jar
del %~nx1
popd

goto :eof
1 голос
/ 05 февраля 2010

Может быть, вы можете попробовать Универсальный экстрактор . Сайт выглядит законно, но я сам не пробовал.

0 голосов
/ 12 марта 2019

немного опоздал на вечеринку

вот экстрактор, написанный на powershell

param($installdir)

$list=$(gci -Recurse ./$installdir/*.pack) | %{
    return @{
        source=$_.FullName
        parent=$_.Directory.FullName
        target="$($_.Directory.FullName)\$([io.path]::GetFileNameWithoutExtension($_.Name)).jar"
    }
} | %{
    $result = $(unpack200 $_.source $_.target)
    $_result=$result
    return $_
}

Write-Host $(ConvertTo-Json $list)
...