# 谜因自动更新程序
最后更新:2022年10月16日
# 产品简介
谜因自动更新程序(以下简称“程序”)是基于HTTP协议设计运行,使用JSON格式配置的一套轻量级客户端自动更新工具。自动更新程序的核心功能是控制客户端文件的版本,使玩家客户端文件与运营商发布的最新文件版本同步。
# 使用场景
- 具有自动更新功能需求的PC应用
- 需要支持从 Windows XP 到 Windows 11 的全版本的 Windows 操作系统的PC应用
- 需要快速增加自动更新功能的PC应用
# 程序功能
- 自动更新文件的发布更新和管理
- 更新时检测文件占用锁定的情况(Windows操作系统的特点)
- 更新程序界面的自定义(包括标题的组件)
# 界面预览
# 产品优势
# 通用性强
- 支持“线性更新”及“非线性更新”
- 支持自我更新,客户端部分仅需要一个文件即可工作
- 支持所有HTTP/HTTPS服务器,不需要部署特定服务端
# 更低的成本
- 学习成本低,无需专业技术人员也能够快速配置发布自动更新
- 适配成本低,无需配置开发环境,无需编写复杂的代码,最短五分钟即可完成适配
# 更准确的需求理解
- 开发者曾经大量参与游戏运营公司的一线务实业务,了解自动更新相关业务中存在的痛点
- 开发者充分参考了其它产品的成功经验,并在此基础上做出改进优化
# 全球化配置
- 程序能够同时支持多国语言,帮助客户开展全球业务
# 产品部署
# 部署自动更新的三个阶段
1、设置服务端的"配置索引"文件
2、设置服务端的"更新索引"文件
3、客户端适配自动更新程序
4、打包分发新的客户端
# 1、设置服务端的"配置索引"
"配置索引"是一个使用JSON语法进行配置,放在指定Web目录下的重要文件,自动更新程序的客户端将根据"配置索引"决定自动更新程序的运行步骤
我们通过一个实际配置案例讲述该文件的内容
{
"app": "My Game",
"main": "Main.exe",
"logo": "http://cdn.example.com/logo.bmp",
"title": "游戏更新程序",
"latest": {
"url": "http://cdn.example.com/1.1.21/packages.json",
"mirror": "http://cdn.example.com/mirror/",
"version": "1.1.21"
}
}
简要描述一下各个字段的功能:
app:"My Game" 是游戏的简称,下载文件时会用到这个名字建立缓存目录,以及调试时可能会使用。重要!必须设置!
main:"AppMain.exe" 是所有文件更新完毕以后,自动更新程序要启动的游戏主程序名。重要!必须设置!
logo:设置更新界面图片的地址,可参考界面预览图片,可以忽略
title:设置更新界面的标题,可参考界面预览图片,可以忽略(默认为“谜因自动更新程序”)
latest:设置"更新索引"的相关参数。重要!必须设置!
- url:"更新索引"的URL,具体配置方法请看下文。重要!必须设置!
- mirror:"更新索引"的下载目录,具体配置方法请看下文。重要!必须设置!
- version:当前最新的"更新索引"的版本号,该版本号决定自动更新客户端是否会启动自动更新任务,具体配置方法请看下文。重要!必须设置!
# 2、设置服务端的"更新索引"
"配置索引"是一个使用JSON语法进行配置,放在指定Web目录下的重要文件,包含所有待更新的文件列表信息。重要!必须设置!
"更新索引"的入口在"配置索引"的latest字段的url,也即
"latest": {
"url": "http://cdn.example.com/1.1.21/packages.json",
"mirror": "http://cdn.example.com/1.1.21/",
"version": "1.1.21"
}
我们从一个 packages.json 的示例说起
{
"files": [{
"hash": "6FF5508F",
"name": "Data/World.dat"
}, {
"hash": "C317162F",
"name": "Start Game.exe"
}]
}
- hash:文件的校验值,客户端判定文件是否需要更新的依据
- nanme:文件名
注:packages.json 可以使用配套工具一键生成
现在我们一共配置了两个文件,并且把需要更新的文件都移动到了相关目录,总共四个文件:
/1.1.21/Start Game.exe
/1.1.21/Data/World.dat
/1.1.21/packages.json(更新索引)
/config.json (配置索引)
我们一共获得了四个URL
http://cdn.example.com/1.1.21/Start Game.exe
http://cdn.example.com/1.1.21/Data/World.dat
http://cdn.example.com/1.1.21/packages.json(更新索引)
http://cdn.example.com/config.json (配置索引)
有了这几个文件,我们就可以开始适配客户端了
# 3、客户端适配自动更新程序
自动更新程序客户端只需一句命令行即可完成适配,我们可以建立一个test.bat文件,并写入以下内容
MeeGeneUpdater -u http://cdn.example.com/config.json
双击运行,如果配置无误,则开始自动下载,下载完毕后会启动相关程序
如果您需要二次开发,可以通过增加 --check-updates 参数获取进程结束代码,判断是否需要更新
MeeGeneUpdater -u http://cdn.example.com/config.json --check-updates
# 产品服务
# 产品价格
1、如果您拥有开发能力,可以直接下载并免费使用自动更新程序,我们不收取任何商业授权费用,也没有任何联网授权检查代码。
2、如果您有定制化的需求,或者需要我们适配您现有的技术体系,请通过微信公众号或邮件联系我们,我们将根据具体的工作内容提供价格。
3、如果您需要购买源代码二次开发,请通过微信公众号或邮件联系我们,我们将根据具体的工作内容提供价格。
# 质量承诺
1、您如果选择免费使用自动更新程序,我们无法为您提供任何技术咨询,也无法提供任何帮助,请您自行通过相关文档解决问题。
2、您如果选择购买源代码,我们提供半年的免费技术咨询,并帮助您配置编译开发环境,提供相关技术文档和开发文档。如涉及开发新功能等开发服务,参照定制化开发另行收费。
3、您如果选择定制化开发,我们将提供半年的免费技术保障,确保您需要的相关功能正确稳定的运行,确保您在半年之内的权益。
# 联系方式
公众号:miyinfo
邮箱:admin@miyinfo.com
# 开发资源
# 常见错误
常见错误:访问配置索引失败(错误代码:6)
Failed to read remote configuration file, we recommend you to check if your network is free, or contact your administrator for help: %d.
错误:读取远程配置文件失败,建议您检查网络是否畅通,或联系管理员获取帮助: %d.
エラー:リモートファイルの読み取りに失敗しました、ネットワークの接続が正しいことを確認してください。もしくはGMに連絡してください: %d.
錯誤:讀取遠端組態文件失敗,請檢查網絡情況,或聯絡系統管理員協助: %d.
解决方案:这个错误的原因是网络问题,据当前收集的反馈来看,极个别用户可能会出现DNS解析错误,这并不是程序的问题,而是当地DNS缓存服务器的问题。建议您指导用户更换DNS服务器,或选用更加优质的域名DNS服务商,或直接选择IP提供服务。
# 更新日志
2022年10月16日更新内容
1、修复网络模块一个内存泄漏的BUG
2022年7月5日更新内容
1、重新调整界面设计,允许用户从配置索引设置程序标题
2、重新调整界面设计,允许用户从配置索引设置程序图片
2021年11月23日更新内容
1、修复URL编码时存在的一些错误
2、修复韩语文件下载失败的问题
2021年6月8日更新内容
1、增加文件锁定占用检测,优化下载时文件被占用替换失败的问题
2、增加下载超时重试机制,优化下载文件速度过慢的检测,检测到速度过慢自动重试
2021年4月16日更新内容
1、完善下载缓存管理,修复缓存冲突的问题
2、完善国际化支持,目前已内置:英文、中文、日语
3、调整程序界面库,从MFC切换到WebView
4、优化下载时的网络利用率