藏宝湾网游单机站

 找回密码
 注册

QQ登录

只需一步,快速开始

★【黑暗之光SF★我是大主宰SF】【神将三国SF】★

★【0.1折】★【变态网页游戏私服】★

★神将三国网页版上线送V5 5w元宝 5000w铜币 我是大主宰上线满v,80万元宝,小怪都爆元宝,耐玩长久稳定★

【原始传奇SF/维京传奇SF】【GM包站手游】

★【原始传奇SF/维京传奇SF】【GM包站手游】★

★『战online+原始传奇+维京传奇+伏魔者+魔域永恒+混沌战域』一刀99999999999刀刀光柱★

《3D龙神契约私服》《黑暗之光私服》

★《3D龙神契约私服》《黑暗之光私服》广★

★《大型3D龙神契约私服》 超多时装坐骑白嫖,大型3D网页游戏等你来战★

【龙神契约】【神将三国/黑暗之光/我是大主宰SF】
★【0.1折】★【变态网页游戏私服】★

★神将三国网页版上线送V5 5w元宝 5000w铜币 我是大主宰上线满v,80万元宝,小怪都爆元宝,耐玩长久稳定★

☆春节活动开放放置传奇☆

★春节活动开放放置传奇★

★可白嫖 上班摸鱼类 放置文字传奇游戏(放置休闲)qq群756025698★

【独家RPG文字梦幻】【摸鱼搬砖不氪不肝】

★【独家RPG文字梦幻】【摸鱼搬砖不氪不肝】★

★新区开放,三端互通,适合上班挂机、摸鱼。 休闲放置,不占时间,玩熟了一天只需十几分钟就能轻松搞定。★

★官方正版★玩了四年的文字游戏★

★官方正版★玩了四年的文字游戏★

★《无尽洪荒》一款复古经典MUD文字放置挂机游戏,你可以在游戏中扮演一位洪荒修行者,击败神兽,获取材料,通过中华古代五行相生相克的原理,锻造强力装备,站立于洪荒之巅。★

☆新开079冒险岛☆白嫖一切☆

☆新开079冒险岛☆白嫖一切☆

★cms079冒险岛,独家特色玩法,配合经典传统的79玩法,是否能擦出不一样的火花, 是否厌倦了生活上快节奏的日子,上岛!放慢你的心态,体验新人生, ★

★DNF★全职业平衡★公益服★
★DNF★全职业平衡★公益服★

【dnf86版本】【怀旧服】【全职业平衡】【非变态服】【非商业服】【775016356】

★全网独家 可以单机 可以互动的传奇!★

★全网独家 可以单机 可以互动的传奇!★

★全网唯一持续更新的可单机游戏!每15-25天更新一次内容,保持游戏新鲜度!! 众多独家的功能特色,众多你没见过的全新玩法,有能力的赚点烟钱,还能偶尔沙城战斗!★

★梦幻16门派全新大唐九黎★

★梦幻16门派全新大唐九黎★

★★新增全新门派九黎城,★不做垃圾,力争什么都做到最好★持续更新,长久稳定★

★魔力宝贝★新开特色轻松服★

★魔力宝贝★新开特色轻松服★

★★ 多样技能——所有职业增加大量新主动与被动技能,使其各具特色 ★ 轻松练级——自动遇敌、战斗、卖魔石,挂机即可打魔币 ★ 宠物多变——封印天堂,大量新宠物,独有技能,可提取搭配★

三职业复古★开局送神装★爆率100%★散人逆袭
★三职业复古★开局送神装★爆率100%★散人逆袭★

★〖双线〗〖无忧传奇〗〖每日新区〗〖开局送神装 100%高爆率 装备元宝打怪爆〗★

★《天使之战MU》经典奇迹重现★

★《天使之战MU》经典奇迹重现★

★2025年热门手游推荐:所有游戏充值永久0.1折,648只需6.48元!原版物价不膨胀★

★承接推广★

★承接推广★

★承接推广★

★ 承接推广★

★承接推广★

★承接推广★

查看: 489|回复: 10

[求助] 物集大话系列通用的热更工具

[复制链接]
 楼主| 发表于 4 天前 | 显示全部楼层 |阅读模式
50金币
最近一直在研究物集大话系的热更问题,论坛里有一个帖子,但是测试后效果不好。


原贴地址:https://www.iopq.net/forum.php?mod=viewthread&tid=17133875




原理如下:服务端和客户端都有update文件夹。


服务端update文件夹存放一个版本txt文件,内容有版本号。另外存放一个zip的更新文件。


客户端update文件夹存放一个版本txt文件,内容有版本号。另外有一个热更配置文件。


客户端有一个exe的启动热更程序文件,每次启动后检查客户端txt文件版本号是否和服务端版本号一致,如果小于服务端版本号,则需要热更新


客户端根据配置文件,从服务端指定位置下载热更文件,格式zip。然后自动解压到客户端游戏根目录下替换原有文件,最后运行指定大话客户端程序




我的测试环境为虚拟机桥接模式,服务端在虚拟机内,本机运行客户端。


出现的问题:前面步骤都正常,最后自动解压不成功。根据楼主所示用好压和其他压缩软件均不能解决问题。

我的解决方案:针对问题,既然不能自动解压,那就我来让它自动解压。配置文件里最后运行的指定大话客户端程序替换为我的自解压程序exp.exe





我编译的exp.exe文件里主要功能是调用7z的命令解压方式自动解压热更包,然后再调用热更后的大话客户端程序。经测成功。


但是我这种方式虽然解决了自动解压的问题,缺陷是每次启动都要下载覆盖解压客户端程序,对电脑硬盘有伤害。


现求助各位大神有没有更好的热更工具或者能解决楼主这个不能自动解压的问题。











附件: 您需要 登录 才可以下载或查看,没有账号?注册
发表于 4 天前 | 显示全部楼层
本帖最后由 i85201314 于 2025-3-30 18:45 编辑

看能不能用bat批处理来解决,写判断,这样就可以避免每次更新,具体使用deepseek,应为我对批处理一点也不熟。
deepseek写的
提示词:
写一个批处理脚本,比对远程文件的版本号和本地的版本号,这个版本号是保存在一个txt文本里,若如本地版本号小于远程版本号的文件就开启更新程序gengxing.exe更新完以后结束gengxing.exe启动客户端程序KEHUDUAN.exe

  1. <span class="token" style="color: rgb(64, 120, 242);">@</span><span class="token command" style="color: rgb(166, 38, 164);">echo</span><span class="token command"> off</span>
  2. setlocal enabledelayedexpansion

  3. :: 配置文件路径
  4. set "remote_file=\\192.168.1.100\version.txt"  :: 远程版本文件地址[8](@ref)
  5. set "local_file=C:\App\version.txt"            :: 本地版本文件路径
  6. set "update_exe=C:\App\gengxing.exe"           :: 更新程序路径
  7. set "client_exe=C:\App\KEHUDUAN.exe"           :: 客户端程序路径

  8. :: 提取版本号函数
  9. :GetVersion
  10. set "version="
  11. for /f "usebackq tokens=*" %%i in ("%1") do (
  12.     set "line=%%i"
  13.     :: 匹配类似"ver. 1.2.3"的版本格式[1,6](@ref)
  14.     for /f "tokens=3 delims=. " %%v in ("!line!") do set "version=%%v"
  15. )
  16. exit /b

  17. :: 主逻辑
  18. call :GetVersion "%remote_file%" && set "remote_ver=!version!"
  19. call :GetVersion "%local_file%"  && set "local_ver=!version!"

  20. if "%remote_ver%"=="" (
  21.     echo 远程版本号获取失败
  22.     pause
  23.     exit /b
  24. )
  25. if "%local_ver%"=="" (
  26.     echo 本地版本号获取失败
  27.     pause
  28.     exit /b
  29. )

  30. :: 分割版本号为数字段[5](@ref)
  31. for /f "tokens=1-3 delims=." %%a in ("%remote_ver%") do (
  32.     set "r_major=%%a" & set "r_minor=%%b" & set "r_patch=%%c"
  33. )
  34. for /f "tokens=1-3 delims=." %%a in ("%local_ver%") do (
  35.     set "l_major=%%a" & set "l_minor=%%b" & set "l_patch=%%c"
  36. )

  37. :: 版本比较逻辑[1,5](@ref)
  38. set "need_update=0"
  39. if !r_major! gtr !l_major! (set need_update=1)
  40. if !r_major! equ !l_major! (
  41.     if !r_minor! gtr !l_minor! (set need_update=1)
  42.     if !r_minor! equ !l_minor! (
  43.         if !r_patch! gtr !l_patch! (set need_update=1)
  44.     )
  45. )

  46. if %need_update% equ 1 (
  47.     echo 发现新版本 !remote_ver!,开始更新...
  48.     start "" "%update_exe%"  :: 启动更新程序[11](@ref)
  49.    
  50.     :: 等待更新完成
  51.     :wait_update
  52.     tasklist | find /i "gengxing.exe" >nul
  53.     if !errorlevel! equ 0 (
  54.         timeout /t 5 >nul
  55.         goto wait_update
  56.     )
  57.    
  58.     echo 更新完成,启动客户端...
  59.     start "" "%client_exe%"  :: 启动客户端[11](@ref)
  60. ) else (
  61.     echo 当前已是最新版本 !local_ver!
  62. )

  63. endlocal
复制代码




评分

参与人数 1金币 +2 收起 理由
694311430 + 2 『快乐!分一点给你哟~』

查看全部评分

[发帖际遇]: i85201314 乐于助人,奖励 5 枚 金币. 幸运榜 / 衰神榜
 楼主| 发表于 4 天前 来自手机 | 显示全部楼层
i85201314 发表于 2025-3-30 18:30
看能不能用bat批处理来解决,写判断,这样就可以避免每次更新,具体使用deepseek,应为我对批处理一点也不 ...

感谢回答,但是你上面这个批处理里哪里有关于解压的部分,我没有看出来。重点就是有更新后的解压!原更新主程序也是解压有问题,判断和运行客户端部分都正常。
发表于 4 天前 | 显示全部楼层
long760418 发表于 2025-3-30 19:08
感谢回答,但是你上面这个批处理里哪里有关于解压的部分,我没有看出来。重点就是有更新后的解压!原更新 ...
  1. [url=home.php?mod=space&uid=42760]@echo[/url] off
  2. setlocal enabledelayedexpansion

  3. :: 配置参数
  4. set "remote_url=http://your-server.com/version.txt"   [2](@ref)
  5. set "local_version=C:\path\to\local\version.txt"       [1,3](@ref)
  6. set "7z_path=C:\Program Files\7-Zip\7z.exe"            [10](@ref)
  7. set "update_pkg=gengxiangbao.zip"
  8. set "target_dir=C:\Program Files\YourApp"
  9. set "update_flag=0"

  10. :: 下载远程版本文件
  11. powershell -Command "(New-Object Net.WebClient).DownloadFile('%remote_url%', 'remote.tmp')" || (
  12.     echo 远程版本文件下载失败
  13.     exit /b 1
  14. )                                        [2,9](@ref)

  15. :: 提取版本号(假设版本格式为 ver. X.X.X)
  16. for /f "tokens=3" %%i in ('findstr /i "ver." remote.tmp') do set "remote_ver=%%i"
  17. for /f "tokens=3" %%i in ('findstr /i "ver." "%local_version%"') do set "local_ver=%%i"  [1,3](@ref)

  18. :: 版本号比较逻辑
  19. call :CompareVersions "%remote_ver%" "%local_ver%"
  20. if %update_flag% equ 1 (
  21.     echo 发现新版本 %remote_ver%,开始更新流程...
  22.    
  23.     :: 执行更新程序
  24.     start /wait "" "gengxing.exe"       [2](@ref)
  25.     taskkill /f /im "gengxing.exe" >nul 2>&1
  26.    
  27.     :: 解压更新包
  28.     "%7z_path%" x "%update_pkg%" -o"%target_dir%" -y  [10,12](@ref)
  29.    
  30.     :: 启动客户端
  31.     start "" "%target_dir%\KEHUDUAN.exe" [2](@ref)
  32. ) else (
  33.     echo 当前版本 %local_ver% 已是最新
  34. )
  35. del remote.tmp
  36. exit /b

  37. :CompareVersions
  38. set "v1=%~1"
  39. set "v2=%~2"

  40. :: 使用sort进行版本比较(需GNU工具支持)
  41. echo %v1% > v.tmp
  42. echo %v2% >> v.tmp
  43. sort /R v.tmp /O sorted.tmp >nul
  44. set /p newer=<sorted.tmp

  45. if "%v1%" neq "%newer%" (
  46.     set update_flag=0
  47. ) else (
  48.     if "%v1%" neq "%v2%" set update_flag=1
  49. )
  50. del v.tmp sorted.tmp
  51. goto :eof
复制代码

你也可以自己使用deepseek,提需求的方式来问
 楼主| 发表于 4 天前 | 显示全部楼层
deepseek不是万能的,还是感谢。
发表于 3 天前 来自手机 | 显示全部楼层
支持一下,希望看到更多内容!
发表于 3 天前 来自手机 | 显示全部楼层
正需要这个,谢谢分享!
发表于 前天 11:09 来自手机 | 显示全部楼层
内容充实,感谢楼主!
发表于 前天 23:39 | 显示全部楼层
高水平的帖子,支持一下
发表于 昨天 07:56 来自手机 | 显示全部楼层
水平太高了!测试成功!
发表于 昨天 17:09 来自手机 | 显示全部楼层
很实用的帖子,已学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

本站内容如若侵犯到您的权益,请来电来函告知,我们会尽快处理!
联系QQ:1953150286,2251387361,123784736,免责申明

排行榜|联系我们|小黑屋|手机版|Archiver|游戏藏宝湾 |

GMT+8, 2025-4-3 15:26 , Processed in 0.068627 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表