天天看點

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

自動更新 遊戲《Minecraft》用戶端、整合包的檔案/模組/lib庫檔案。也可用于其他遊戲/應用程式的更新用戶端檔案需求。

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

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

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

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

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

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

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

這個項目是重構了某遠古的項目。主要提高了.NET Framework,重寫部分代碼等。(源碼最後我會供上來)

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

你需要去使用付費的。

廢話不多說,直接上圖

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

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

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

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

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

 就是這個樣子。

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

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

然後我們談談思路。

輕量解決方案:

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

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

專業解決方案:

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

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

更新程式用戶端從更新程式服務端擷取版本資訊,然後進行檔案更新,若網絡出現波動可進行重新連接配接,并斷點續傳。

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

接下來我們來配置它~

自動更新程式的服務端:

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

把監聽端口Value="xxxxx"改成一個可以被外網連接配接的端口。

可以去站長工具檢查你伺服器上的端口的開放狀态。

然後輕按兩下exe後,是這個樣子:

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

點選檔案版本管理:

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

說明:

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

檔案夾結構說明: 

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

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

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

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

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

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

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

然後我們說說

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

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

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

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

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

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

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

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

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

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

我們把自動更新程式的用戶端放在.minecraft檔案夾裡面

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

也就是如下的結構:

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

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

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

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

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

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

重要的話說三遍!!!

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

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

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

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

如果你的IP是動态的,經常會換。可以使用FRP代理端口映射。

www.natfrp.com

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

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

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

下載下傳(源碼+直接部署版):

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

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

 點選這個下載下傳

MRUS.7z是源碼,需要Visual Studio打開并進行編譯。

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

感謝你耐心看完本文章。