Tôi có một ứng dụng JNLP đang hoạt động mà tôi cần phân phối cho những người dùng cuối không có kỹ thuật khác nhau.Sự kết hợp của Launch4J và Java Web Start?
Nếu máy của người dùng đã cài đặt JVM gần đây, mọi thứ đều ổn. Họ chỉ cần nhấp đúp vào tệp JNLP mà tôi gửi cho họ và Java Web Start sẽ thực hiện phần còn lại.
Bây giờ tôi muốn phân phối thứ gì đó hoạt động với hoặc không có JVM, ví dụ: tệp .exe
tự động tải xuống JVM tương thích nếu không có mặt nào, sau đó gọi javaws.exe
để tải xuống tệp .jar và khởi chạy ứng dụng.
Launch4J là kết quả phù hợp nhất mà tôi đã tìm thấy, nhưng nó không thể khởi chạy chương trình qua javaws.exe
. Các tùy chọn chỉ là java
và javaw
Tôi muốn một sản phẩm có thể:
- Tạo một khép kín
.exe
tập tin mà không đòi hỏi một JVM được cài đặt sẵn - Phân tích các tập tin
.jnlp
và xác định JVM chính xác để tải xuống nếu cần (Tôi biết Java Web Start có thể tải xuống JVM nếu cần, nhưng tôi muốn tránh phải tải xuống hai, đầu tiên để khởi động Java Web Start và thứ hai để chạy ứng dụng có thể yêu cầu cụ thể nhưng khác nhau JVM.) - Tải xuống và cài đặt JVM tự động, không chỉ cần hướng người dùng đến trang tải xuống Java hoặc mở trình hướng dẫn cài đặt mới.
- Nhắc mật khẩu quản trị viên nếu cần thiết (để có quyền cài đặt JVM. Tôi không nghĩ rằng điều này được cài đặt trong trình cài đặt Sun JVM.)
- Chỉ hiển thị một hộp thoại bảo mật (Tôi muốn nhắc người dùng một lần, để xác nhận họ tin tưởng
.exe
được tạo, nhưng tôi không muốn lời nhắc thứ hai xác nhận rằng họ tin tưởng tệp.jar
sẽ có cùng nguồn và được ký với cùng một chứng chỉ.) Tôi cho rằng điều này sẽ yêu cầu trình tải xuống tự động cài đặt chứng chỉ trước khi khởi chạy JWS.) - (không cần thiết) Tải xuống tài nguyên ứng dụng (ví dụ:
.jar
tệp) trong nền đồng thời với JVM. Điều này sẽ yêu cầu bộ nhớ cache được chạy trước khi JVM được cài đặt, vì vậy bộ nhớ cache sẽ phải được thực hiện trong mã gốc và sau đóDownloadService
sẽ giao tiếp với nó bằng cách sử dụng JNI.
Sản phẩm như thế này có tồn tại không? Tôi nghi ngờ nó không nhưng nó có giá trị một shot.
Cập nhật tôi thấy this article trong đó có giải pháp cho một số vấn đề có liên quan, mặc dù nó được thiết kế để cài đặt ẩn và tôi chủ yếu quan tâm cài đặt trực tuyến.
Tôi không quá lo lắng về nền tảng không phải cửa sổ. Mac luôn cài đặt JVM và tôi cho rằng hầu hết người dùng Linux đều có kiến thức kỹ thuật để tìm và nhấp đúp vào tệp '.jar' nếu cần. – finnw