# 谜因自动更新程序

最后更新:2022年10月16日

# 产品简介

谜因自动更新程序(以下简称“程序”)是基于HTTP协议设计运行,使用JSON格式配置的一套轻量级客户端自动更新工具。自动更新程序的核心功能是控制客户端文件的版本,使玩家客户端文件与运营商发布的最新文件版本同步。

# 使用场景

  • 具有自动更新功能需求的PC应用
  • 需要支持从 Windows XP 到 Windows 11 的全版本的 Windows 操作系统的PC应用
  • 需要快速增加自动更新功能的PC应用

# 程序功能

  1. 自动更新文件的发布更新和管理
  2. 更新时检测文件占用锁定的情况(Windows操作系统的特点)
  3. 更新程序界面的自定义(包括标题的组件)

# 界面预览

界面预览

# 产品优势

# 通用性强

  1. 支持“线性更新”及“非线性更新”
  2. 支持自我更新,客户端部分仅需要一个文件即可工作
  3. 支持所有HTTP/HTTPS服务器,不需要部署特定服务端

# 更低的成本

  1. 学习成本低,无需专业技术人员也能够快速配置发布自动更新
  2. 适配成本低,无需配置开发环境,无需编写复杂的代码,最短五分钟即可完成适配

# 更准确的需求理解

  1. 开发者曾经大量参与游戏运营公司的一线务实业务,了解自动更新相关业务中存在的痛点
  2. 开发者充分参考了其它产品的成功经验,并在此基础上做出改进优化

# 全球化配置

  1. 程序能够同时支持多国语言,帮助客户开展全球业务

# 产品部署

# 部署自动更新的三个阶段

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

# 开发资源

最新版本:下载程序 (opens new window)

# 常见错误

常见错误:访问配置索引失败(错误代码: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、优化下载时的网络利用率