У меня есть работающее приложение JNLP, которое мне нужно распространить среди различных нетехнических конечных пользователей.
Если на компьютере пользователя установлена последняя JVM, все в порядке. Они просто дважды щелкают файл JNLP, который я им отправляю, а Java Web Start делает все остальное.
Теперь я хотел бы распространять что-то, что работает с JVM или без нее, например. файл .exe
, который автоматически загружает совместимую JVM, если ее нет, а затем вызывает javaws.exe
для загрузки файлов .jar и запуска приложения.
Launch4J - самое близкое совпадение, которое я нашел, но оно не может запустить программу через javaws.exe
. Единственные варианты: java
и javaw
Я хотел бы продукт, который может:
- Создайте автономный файл
.exe
, который не требует предварительной установки JVM. - Проанализируйте файл
.jnlp
и определите правильную JVM для загрузки, если это необходимо (я знаю, что Java Web Start может загрузить JVM, если это необходимо, но я хочу избежать загрузки двух, первый для начальной загрузки Java Web Start и второй для запуска приложения для которого может потребоваться конкретная, но другая JVM.) - Загрузите и установите JVM автоматически, не просто перенаправляя пользователя на страницу загрузки Java или открывая новый мастер установки.
- При необходимости запросите пароль администратора (для разрешений на установку JVM. Я не думаю, что это встроено в установщики Sun JVM).
- Показать только одно диалоговое окно безопасности (я хотел бы предложить пользователю только один раз, чтобы подтвердить, что он доверяет сгенерированному
.exe
, но я не хочу, чтобы второй запрос подтверждал, что он доверяет файлу.jar
, который будет из того же источника и подписан с помощью тот же сертификат.) Я предполагаю, что для этого потребуется, чтобы автоматический загрузчик установил сертификат перед запуском JWS.) - (необязательно) Загрузите ресурсы приложения (например,
.jar
файлов) в фоновом режиме одновременно с JVM. Это потребует запуска кеша до установки JVM, поэтому кеш должен быть реализован в собственном коде, аDownloadService
позже будет взаимодействовать с ним с помощью JNI.
Существует ли такой продукт? Подозреваю, что нет, но попробовать стоит.
Обновление Я нашел эта статья, в которой есть решения некоторых связанных проблем, хотя она предназначена для автономной установки, а меня в основном интересует онлайн-установка.