游戲《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 是直接使用的版本。里面含客戶端和服務端。按照上面配置完成后就可以使用。

 

 

 

感謝你耐心看完本帖子。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM