首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

離線也能用:透過 CD-ROM 分發 Java Web Start 應用的完整實作指南

     編輯:Java 相關知識

為何需要 CD-ROM 分發 JWS 應用?

Java Web Start (JWS) 雖支援 Web 部署,但:(1) 大型應用完整安裝下載龐大(含 JVM 超過 40MB),高頻寬也吃力;(2) 非所有桌面聯網(企業安全隔離);(3) 部分用戶偏好實體媒介。客戶案例:需分發至寬帶未覆蓋地區,含大量圖表資料,展會現場贈送光碟宣傳。

傳統安裝程式 vs JWS 安裝

傳統安裝程式建立獨立應用,JWS 一無所知。更新時用戶需重新下載安裝新版;JWS 僅下載更新組件,更高效可靠。本文目標:CD/網路雙模安裝,整合 JWS 快取,支援離線運行,易用 GUI 介面。

JWS 快照機制與 `-import` 選項

JWS 啟動:讀取 JNLP 描述入口點與資源,下載更新至快取,離線模式可直接運行。CD 上放置 JNLP 會導致聯網檢查更新,破壞離線計畫。Java 5 JWS 引入 `-import` 選項:將特定位置的 JWS 應用導入快取,彷彿預先由 JWS 載入。

CD 映像 = Web 伺服器副本(JNLP、JAR、資源)。若用 Servlet 服務 JNLP,需生成功能完整的 JNLP 快照。

安裝命令:

<JAVA_HOME>/jre/bin/javaws -codebase <CACHE_IMAGE> -import <CACHE_IMAGE>/<XXXX>.jnlp

安裝完成後,JWS 提示建立桌面/選單捷徑。再次呼叫啟動應用:

<JAVA_HOME>/jre/bin/javaws -import <CACHE_IMAGE>/<XXXX>.jnlp

此次使用 JNLP 參考安裝:聯網則檢查更新,離線則標準啟動。後續用戶可用捷徑或原站點 URL 啟動。

JVM 因素與自定義啟動器必要性

  • `-import` 需 Java 5+ JWS,舊 JVM 不支援。
  • 匯入耗時,傳統安裝程式難實現延遲執行。
  • 系統可能未裝 JVM 或 JVM 不在路徑。

故需自定義啟動應用程式:尋找/安裝 JVM → 顯示授權 → 匯入 JWS 快取 → 啟動應用。

啟動器核心實作

1. 尋找 JVM (Windows 註冊表)

掃描 `HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment`,迭代版本找最新符合需求的 JVM。用 `REG QUERY` 命令列讀取註冊表,解析版本號(主/次/修訂),回傳 `JavaHome` 路徑。

2. 安裝 JVM

CD 內置 JRE 安裝包,資源檔定位路徑。用 `Runtime.exec()` 啟動安裝,`waitFor()` 等待完成。為不阻塞 UI,包裝於 `SwingWorker` 執行。安裝成功後重新尋找 JVM 路徑繼續流程。

3. 啟動 JWS 並等待

String cmd = "\"" + javaWSPath + "\" -wait -codebase file:///" + userDir + appDirectory + " -import " + jnlpPath;
Process p = Runtime.getRuntime().exec(cmd);
p.waitFor(); // 首次匯入需等待
// 詢問用戶是否立即啟動
Runtime.getRuntime().exec(javaWSPath + " -offline " + jnlpPath); // 離線啟動
// 延遲 3 秒退出啟動器

GUI 介面與打包

圖 1. 安裝程序歡迎頁面

簡單歡迎頁顯示進度狀態。`config.properties` 設定 Logo、應用位置、JVM 版本需求。完整原始碼託管於 Aria 專案 (開源授權)。

建立 CD 自動執行

  1. 用 Launch4J 將 Java 啟動器包裝為原生 `.exe`(綁定 JVM,因用戶系統可能無 JVM)。
  2. 建立 `autorun.inf` 放入 CD 根目錄:
[autorun]
open=XXXX.exe
icon=xxxx.ico
action=Open XXXX
label=My Application

跨平台考量

啟動器依賴 Windows 註冊表與 `REG QUERY`,僅限 Windows。但核心技術(JWS `-import`、快取整合)跨平台。其他平台可用 IzPack 等多平台安裝器。Mac OS X 內建 JVM 可直接運行應用,無需原生啟動器。

結語

結合 JWS 與 Launch4J,交易會訪客即插即用安裝應用。JWS 完整更新功能保留,用戶方便獲取更新,離線環境同樣可用。實現「一次開發,CD/網路雙通路分發,線上/離線無縫切換」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved