1. 程式人生 > >遊戲《Minecraft》或其他應用程式 實現 自動更新 客戶端版本

遊戲《Minecraft》或其他應用程式 實現 自動更新 客戶端版本

本渣又來寫(水)部落格了。

 

先說一下,我這個解決方案的安全性並不是企業級的,咱們就是一群窮開服的Minecraft玩家。

如果你要投入到企業級應用(容易被黑客攻擊的場景),請自己寫,思路湊合看看。不然安全性無法保證!

本程式預設框架版本為.NET Framework 4.5.2,如需更改框架版本請下載文章最後的原始碼進入VS進行更改。

本解決方案更傾向於 遊戲《Minecraft》的客戶端更新,而不是企業級的客戶端應用。

應用場景:Minecraft伺服器的客戶端更新、Minecraft整合包的版本更新、或是其他遊戲(需要經常更新客戶端內檔案的)。

其他的遊戲、應用程式有需要自動更新,用這個專案也是可以的,不過需要看情況進行重構~

這個專案是重構了某遠古的專案。主要提高了.NET Framework,重寫部分程式碼等。(原始碼最後我會供上來)

本專案使用免費版ESFarmework通訊框架,最多支援10人線上更新,如果你想應用到百人的那種高併發大專案(對我來說是大專案)

你需要去使用付費的。

廢話不多說,直接上圖

 

 

 上面的是服務端部分,下面是客戶端。

 

將自動更新的解決方案加入到Minecraft啟動器裡:

 

 

 

 

 就是這個樣子。

對於Minecraft的服主來說,這算是一種福音了吧?

以後再也不需要往QQ群裡發新的客戶端,直接更新客戶端目錄下的任意檔案,刪除檔案、替換檔案都可以~

 

然後我們談談思路。

 

輕量解決方案:

一些輕量級的更新程式,大都不是傳統的C/S結構(客戶端+服務端的組合)。 只有更新程式客戶端在應用程式客戶端上,

然後以get的方法去獲取web的版本檔案,如果web的版本檔案內填寫的版本和客戶端不相符,就使用web端版本檔案的檔案包直鏈更新客戶端。

專業解決方案:

採用C/S結構,部署更新程式服務端在自己主機上,更新程式客戶端部署在應用程式客戶端上。

通過ESFarmework通訊系統,進行資料傳輸。

更新程式客戶端從更新程式服務端獲取版本資訊,然後進行檔案更新,若網路出現波動可進行重新連線,並斷點續傳。

 

我們當然要用更加花裡胡哨的專業解決方案啊~

 

接下來我們來配置它~

自動更新程式的服務端:

 

 

 

 

把監聽埠Value="xxxxx"改成一個可以被外網連線的埠。

可以去站長工具檢查你伺服器上的埠的開放狀態。

然後雙擊exe後,是這個樣子:

 

 

 

點選檔案版本管理:

 

 

 

 

說明:

服務端程式在啟動後會自動檢測同級目錄下FileFolder資料夾內的資料夾、檔案。然後自動新增入更新名單內。

資料夾結構說明: 

 

 

 看上面那張圖,假設你要更新遊戲客戶端的這個Config資料夾裡的Config.xml,那就在自動更新服務端的FileFolder

新建資料夾Config,然後資料夾裡扔一個叫Config.xml的同名檔案,然後關閉檔案版本管理視窗,重新開啟。就可以看見這個目錄被新增進去了。

然後客戶端那邊如果再想,就可以更新Config資料夾下的Config.xml了。

.minecraft資料夾下的檔案雷同上面的方法,這樣就可以更新模組、材質包了。如法炮製去吧。

 

如果在檔案版本管理窗口裡點選一個檔案,然後並點選刪除按鈕。那麼客戶端更新時,也會刪除這個檔案~。

 

 

 

 

然後我們說說

 

 

 

這個版本的值,是檔案的版本。

比如你有一個233.zip檔案,現在版本是1。

然後客戶端的233.zip版本是0(也就是沒有這個檔案)。

更新程式啟動後,會更新這個檔案,然後把客戶端的233.zip版本設定成1。

這樣,下一次啟動更新程式,服務端版本和客戶端版本就一模一樣,不會啟動更新,避免更新同樣的檔案。

如果你在更新程式服務端改了233.zip的內容,然後你需要更新這個檔案到客戶端,那麼你需要在檔案版本管理內,把版本1改成版本2.

這樣下一次客戶端就會去更新了。

 

接下來我們說自動更新程式的客戶端:

 

 

 

我們把自動更新程式的客戶端放在.minecraft資料夾裡面

 

所有從服務端傳輸來的檔案都在更新程式客戶端同級目錄的上一層目錄。

也就是如下的結構:

 

更新程式客戶端位置: D:\xxxx伺服器客戶端\.minecraft\

更新後的檔案存放位置: D:\xxxx伺服器客戶端\

這樣如果你要更新.minecraft的檔案,就需要在更新程式服務端新增.minecraft資料夾,然後在資料夾內新增mods資料夾或是其他檔案。

所有從服務端傳輸來的檔案都在更新程式客戶端同級目錄的上一層目錄。

所有從服務端傳輸來的檔案都在更新程式客戶端同級目錄的上一層目錄。

所有從服務端傳輸來的檔案都在更新程式客戶端同級目錄的上一層目錄。

重要的話說三遍!!!

 

然後我們開啟更新程式客戶端的配置檔案:

 

 

 伺服器IP需要填寫IP地址,而不是域名。有的域名無法被解析。

 

 

伺服器的IP是動態IP怎麼辦?

如果你的IP是動態的,經常會換。可以使用FRP代理埠對映。

www.natfrp.com

把你的代理伺服器域名換成IP寫入自動更新客戶端配置檔案裡就可以。

 

 

 很好,教程差不多就結束了。

下載(原始碼+直接部署版):

https://github.com/carierx/MRUS-Core

 

 

 

 

 

 

 

 點選這個下載

 

MRUS.7z是原始碼,需要Visual Studio開啟並進行編譯。

MRUS-開包即用版.7z 是直接使用的版本。裡面含客戶端和服務端。按照上面配置完成後就可以使用。

 

 

 

感謝你耐心看完本帖子。