2010-04-01 157 views
2

我有各種由多個用戶使用的Java Swing應用程序。我的部署策略是將.jar文件定位到網絡共享上,並且用戶爲該文件創建快捷方式。當用戶啓動應用程序時,文件被複制到他們的機器並在本地執行。該方法允許代碼的單個副本並且易於更新。需要更好的Java應用程序部署策略

問題是,如果有任何用戶當時正在使用應用程序,我無法更新網絡共享上的文件。

我無法使用Web Start,因爲我無權訪問簽署jar的證書。

我目前的解決方法是一個單獨的應用程序,將所需的應用程序複製到用戶的本地計算機,啓動應用程序,然後啓動程序退出。從啓動程序應用程序退出並且用戶的應用程序可見時,會有幾秒的延遲。

任何人都可以提出一個更好的部署方法,我可以輕鬆地更新應用程序的中央副本,其中一個Windows XP將不會維護文件上的鎖定?

更新: JSmooth方法解決了基本問題。由JSmooth創建的.exe在使用時被鎖定,但包含應用程序功能的.jar文件可以被更新。

回答

7

可以使用Java Web Start,因爲您可以使用自簽名證書爲您的文件簽名。這會給你的用戶一個警告,他們可以一勞永逸地接受。

因此,我會推薦你​​這樣做,因爲這是唯一的標準Java方式來做你想做的事情,它的工作原理合理。通過最新的Java 6更新,您可以獲得許多新的有用功能。

一條建議:當你發佈一個新的版本時,把這個jar放在一個新的位置,這樣URL指向JNLP文件中的jar文件就改變了!這是因爲Java Web Start緩存jar文件,這是我們發現確保緩存準確的最佳方式。


編輯:我相信你也可以使用JSmooth包裹在一個EXE文件,透明地提取本地計算機上的各種文件和執行有它們的Java文件。這不應該鎖定原始的EXE文件。但是,我會建議您使用Web Start方法。

+0

事實上,Web Start就是爲此而設計的。首字母縮略詞JNLP表示'Java Network Launching Protocol'。 – 2010-04-01 23:51:57

+0

針對JWS的+1也稱爲Java Web Start,自動更新,從中央位置輕鬆分發應用程序 – 2010-04-02 01:04:15