Комбинация Launch4J и сети Java запускается?

У меня есть работа приложение JNLP, которое я должен распределить различным нетехническим конечным пользователям.

Если машине пользователя установили недавнюю JVM, все прекрасно. Они просто дважды щелкают по файлу JNLP, который я отправляю им, и сеть Java Запускаются, делает остальных.

Теперь я хотел бы распределить что-то, что работает с или без JVM, например, a .exe файл, который автоматически загружает совместимую JVM, если ни один не присутствует, затем вызывает javaws.exe загружать .jar файлы и запускать приложение.

Launch4J является самым близким соответствием, которое я нашел, но это не может запустить программу через javaws.exe. Единственные опции java и javaw

Я хотел бы продукт, который может:

  • Генерируйте автономное .exe файл, который не требует, чтобы JVM была предварительно установлена
  • Проанализируйте .jnlp файл и определяет корректную JVM для загрузки при необходимости (я знаю, что веб-Запуск Java может загрузить JVM при необходимости, но я хочу избежать необходимости загружать два, первые для начальной загрузки сети Java Запускаются и второе для запуска приложения, которое может потребовать определенной, но другой JVM.)
  • Загрузите и установите JVM автоматически, не просто направьте пользователя к странице загрузки Java или откройте новый мастер установки.
  • Подсказка для пароля администратора при необходимости (для полномочий установить JVM. Я не думаю, что это встроено в установщики JVM Sun.)
  • Покажите только одну настройку безопасности (я хотел бы предложить пользователю только однажды, подтвердить, что они доверяют сгенерированному .exe, но я не хочу, чтобы вторая подсказка подтвердила, что они доверяют .jar файл, который будет из того же источника и подписан с тем же сертификатом.) Я предполагаю, что это потребует, чтобы автозагрузчик установил сертификат прежде, чем запустить JWS.)
  • (не важный) ресурсы Приложения загрузки (например. .jar файлы) в фоновом режиме одновременно с JVM. Это потребовало бы, чтобы кэш работал, прежде чем JVM будет установлена, таким образом, кэш должен был бы быть реализован в собственном коде и DownloadService позже взаимодействовал бы через интерфейс к нему с помощью JNI.

Продукту нравится, это существует? Я подозреваю, что это не делает, но Это стоит того, чтобы попытаться.


Обновление я нашел эту статью, которая имеет решения некоторых связанных проблем, хотя это разработано для офлайновой установки и я главным образом обеспокоен установкой онлайн.

8
задан finnw 2 August 2010 в 23:09
поделиться

4 ответа

Я столкнулся с той же проблемой. В итоге я получил BAT, Shell и, в конечном итоге, DMG для Mac.

Я нашел этот комментарий об автоматической установке JRE для Windows с помощью установщика Nullsoft:

http://nsis.sourceforge.net/Java_Launcher_with_automatic_JRE_installation

Я думаю, что вне JNLP вам будет сложно добиться автоматизации для всех платформ. Однако в моем проекте, рассчитанном на два года, я не видел жалоб на то, что пользователи должны сами получить java. Я считаю, что у большинства машин он уже есть. Пользователь Windows пожаловался на отсутствие ярлыка, но это легко сделать с помощью vbs.

Также в Mac DMG AppBundle это способ указать JRE. На Mac будет самая последняя версия, если только это не старые машины на базе PowerPC. В этом случае нет Java6.

Если у вас есть несколько программ запуска, я бы порекомендовал стратегию автоматического обновления.

2
ответ дан 5 December 2019 в 20:12
поделиться

Другой подход может заключаться в распространении Sun JRE с .BAT-файлом, вызывающим его с помощью переключателя / S, что вызывает автоматическую установку.

Я не видел ничего другого, позволяющего полностью бесшумную установку Java в сочетании с вызовом javaws.

0
ответ дан 5 December 2019 в 20:12
поделиться

Хорошо, я понимаю, что вы пытаетесь сделать, но почему вы не хотите использовать челюсти? Launch4J выглядит неплохим вариантом в качестве альтернативы установке java, так как он позволяет беспрепятственно использовать файл jar.

javaws более или менее использует java.exe с разрешениями безопасности и некоторыми параметрами запуска. Но разрешения безопасности можно отключить, если вы используете сертификат, которому доверяет пользователь.

Также я не уверен, когда был представлен javaws, но уверен, что он был доступен в java 1.5, который находится рядом с EOL. Поэтому, если у вашего пользователя не была установлена ​​Java в течение многих лет, я сомневаюсь, что заставить их запустить jnlp будет проблемой. Даже если они используют более старую версию, вы можете добавить необходимую версию java в jnlp, и она будет автоматически загружена только для этого приложения.

0
ответ дан 5 December 2019 в 20:12
поделиться

Вы также можете рассмотреть возможность компиляции вашего проекта с помощью Excelsior JET. Помимо всего прочего, он также создает самодостаточный дистрибутив разумного размера.

2
ответ дан 5 December 2019 в 20:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: