2010-10-06 85 views
1

我有一個服務器和客戶端工作正常,他們相互傳輸文件和成功處理命令。事情是,一旦連接到服務器,服務器可以要求客戶端自行更新。使用自己的Java軟件的自定義更新實現

因爲我做了所有使用TCP連接的套接字,並且我不能使用java web start,所以我正在尋找一種方法來更新軟件。

有一件事我認爲是:

  • 使Java調用另一個Java軟件和自行關閉。然後,另一個java軟件將再次連接到服務器並等待更新請求,因此它可以替換當前版本(lib目錄和jar主文件 - 使用Netbeans的Im)中的所有文件。

也許我可以將連接對象發送到將更新的軟件,但主要只能應付String。

所以我在這裏問兩個問題:

  1. 這是一個很好的解決方案嗎?還是有更好的?
  2. 如果我這樣做,我該如何將我的原型的客戶端對象從一個應用程序發送到另一個應用程序?
+1

你有沒有注意到你建議的解決方案如何清楚地模仿java Web Start行爲?我真的很高興知道爲什麼Java Web Start(這是您深入研究的所有問題的明顯解決方案)不符合您的需求。 – Riduidel 2010-10-06 13:17:47

+1

它不符合我的需求,因爲我只能訪問我的TCP連接,只是沒有更多。 – fredcrs 2010-10-06 13:33:04

回答

1

我會建議保留一個屬性文件在服務器上有最新版本的應用程序。

每次啓動,如果應用程序比較版本時間的更新,然後下載一個臨時的所有新的更新目錄

後成功下載調用另一個小的應用程序將這些文件複製到你的庫文件,以實際更新您的應用程序

最後提示用戶該應用程序已更新並啓動新更新的應用程序。我會說。

+0

似乎是一個好主意,我會嘗試...但要複製到我的庫我需要覆蓋這些文件,對不對? renameTo不會覆蓋它。所以我將不得不先刪除這些文件,但我害怕有人在我刪除這些文件後關閉計算機... – fredcrs 2010-10-06 13:35:50

+0

@darri我提到它,'成功下載後調用另一個小應用程序將這些文件複製到您的庫文件,以便實際更新您的應用程序「,直到原始庫安全無損 – 2010-10-06 16:22:27