Могу ли я установить файл с помощью Izpack 5, не будучи частью файла install.jar, созданного izpack?

Мой установочный ZIP-файл widget.zip содержит следующее:

  • 32-битная Java
  • установить.jar
  • виджетустановщик.exe
  • виджетустановщик.ini
  • виджетустановщик.ico

Обобщить:

  • 32bitJava — это 32-битная JRE, загруженная с Oracle.
  • install.jar — это установщик, созданный Izpack.
  • widgetinstaller.* создаются winrun4j, предоставляющим exe-оболочку для установщика.

Таким образом, с этой настройкой я могу установить свое приложение без необходимости установки пользователем среды выполнения Java.

Однако после установки фактическому приложению также требуется среда выполнения Java для фактического запуска. Так что на данный момент копия 32bitJava включена как часть установки izpack, т.е. она существует в install.jar и устанавливается во время установки.

Но это означает, что у меня есть две копии JVM, и поскольку 32-битная Java больше, чем мое фактическое приложение, моя загрузка становится слишком большой.

Итак, как я могу скопировать папку 32bitJava в установку во время/после установки вместо того, чтобы включать ее в install.jar?


person Paul Taylor    schedule 20.09.2012    source источник


Ответы (4)


Вы хотите сделать "свободный" пакет для JVM. Свободный пакет не обязательно должен содержать файлы, которые он устанавливает, поэтому он может скопировать файл из zip на место вместо использования файла, встроенного в банку.

<pack id="java" name="java" required="yes" preselected="yes" loose="true">
  ...
  <executable ...>
    <!-- something appropriate to install java -->
  </executable>
</pack>
person simon    schedule 27.09.2012
comment
Спасибо, Саймон, похоже, это может быть именно то, что я хочу, я посмотрю, смогу ли я заставить его работать, и отчитаюсь. - person Paul Taylor; 28.09.2012
comment
еще не пробовал это, но скрестим пальцы, это сработает, так что награда за награду - person Paul Taylor; 02.10.2012
comment
Привет, да, спасибо, это сработало. Но имейте в виду, что это немного сбивает с толку то, что вы должны установить в качестве файла src, вам нужно скопировать папку, которая, как вы ожидаете, будет на целевом компьютере, в то же относительное местоположение для install.xml, что и для install.jar при установке, но затем укажите абсолютный путь в install.xml вместо install.jar - person Paul Taylor; 03.10.2012

Упакуйте файлы в самораспаковывающийся архив/zip, и в процессе распаковки извлеките файлы в нужное место.

Дополнительную информацию о самораспаковывающихся архивах можно найти в Википедии: http://en.wikipedia.org/wiki/Self-extracting_archive

person L0j1k    schedule 26.09.2012
comment
Это вместе с Izpack или вместо Izpack? - person Paul Taylor; 27.09.2012
comment
Взгляните сюда: izpack.org/documentation/izpack-utils.html Кажется, чтобы быть некоторые инструкции, как сделать это с IzPack - person L0j1k; 27.09.2012
comment
Я не думаю, что это на самом деле решает проблему, с которой я столкнулся. - person Paul Taylor; 28.09.2012
comment
Я проведу еще несколько исследований по самораспаковывающимся архивам, чтобы предоставить вам пример. Именно для таких вещей и были созданы самораспаковывающиеся архивы. :) - person L0j1k; 28.09.2012

Вместо того, чтобы принудительно включать установку java в install.jar, почему бы вам просто не установить вашу программу из install.jar и включить сюда ссылку: http://www.java.com/inc/BrowserRedirect1.jsp?locale=en ? Это ссылка для загрузки текущей версии java.

Чтобы создать такую ​​ссылку, щелкните правой кнопкой мыши> создать> ярлык, вставьте ссылку в первое диалоговое окно, нажмите «Далее», затем назовите ее «Установка Java». Это добавит максимум 4 КБ к вашему пакету и все же позволит вам установить java (однако пользователю придется щелкнуть это вручную)

Я использую URL-адрес перенаправления браузера, потому что он определяет, что нужно людям Java, на основе их компьютера (бит ОС и процессора).

person Azulflame    schedule 27.09.2012
comment
В Windows много путаницы по поводу взаимодействия между 32-битной/64-битной Java и 32-битной/64-битной системами, а также много негатива в отношении настольных систем Java в целом. Я думаю, что это более удобный пользовательский интерфейс, если все, что им нужно, упаковано за один раз и нет явной ссылки на Java. - person Paul Taylor; 28.09.2012
comment
Эта ссылка автоматически перенаправляет на нужную версию Java, 32-битную Java для 32-битных систем и 64-битную Java для 64-битных систем. Java теперь намного проще установить, чем раньше (я помню, что мне приходилось извлекать все исходные файлы в папку с программными файлами) - person Azulflame; 28.09.2012
comment
install.jar в любом случае нуждается в установленной JVM для запуска - person Paul Taylor; 28.09.2012
comment
Ссылка ведет к установке java, что позволяет запустить install.jar - person Azulflame; 28.09.2012

Как насчет создания небольшой постустановочной утилиты для копирования исполняемого файла в нужное место? Вы можете создать его в небольшом сценарии оболочки (или пакетном файле в Windows) или даже в небольшой утилите C++, которая просто копирует JVM в нужное вам место. Таким образом, после установки утилиты вы запускаете постустановочный код и копируете JVM в нужное место.

person L0j1k    schedule 27.09.2012
comment
Я пробовал это, но у меня возникли проблемы с его работой, однако проблема в том, что это будет сделано из установщика и не даст пользователю обратной связи, пока это происходит, потому что JVM довольно велик, это может заставить пользователя думать, что установка зависла . - person Paul Taylor; 28.09.2012
comment
Нет, если вы включите очень простое сообщение для пользователя, указывающее, что программа установки работает. И если подумать, любое другое решение этой проблемы также потребует много времени, потраченного на операции копирования, так что это неизбежно. Вы должны иметь возможность просто вставить строку в свою утилиту после установки, которая говорит что-то вроде Это займет несколько минут... а затем добавить print '.' или эквивалент после каждой отдельной операции копирования файла, чтобы пользователь видел постоянный поток ' ......' во время пост-установки. :) - person L0j1k; 28.09.2012