com.hanli.app-updater
v0.3.1
Published
Unity Windows 应用通用更新工具
Readme
Hanli App Updater
com.hanli.app-updater 提供一套面向 Unity Windows Standalone 的通用更新方案,包含:
- 运行时拉取
last.json检查更新 - 下载并启动外部更新器
- 编辑器可视化配置、生成
last.zip / last.json / updater.exe - 按占位符模板逐文件上传发布产物
last.json 结构
{
"version": "0.1",
"appUrl": "https://example.com/update/last.zip",
"appHash": "sha256...",
"updaterUrl": "https://example.com/update/updater.exe",
"updaterHash": "sha256..."
}字段固定为:
versionappUrlappHashupdaterUrlupdaterHash
运行时接入
- 在 Unity 中通过菜单
Tools/Hanli App Updater打开配置窗口,并选择或使用默认创建的AppUpdaterSettings配置资产。 - 填写服务器基础地址、超时等配置。
- 在场景对象上挂载
AppUpdaterController,并指定AppUpdaterSettings。 - 是否启动时自动检查由
AppUpdaterController组件上的Auto Check On Start控制。
如果服务器基础地址使用 http://,需要在 Project Settings > Player 中允许非安全网络连接。编辑器工具会自动检查这一项,并提供“一键允许 HTTP”按钮。
手动调用示例:
using Hanli.AppUpdater;
public class UpdateEntry
{
public async void Check(AppUpdaterSettings settings)
{
var result = await AppUpdaterService.CheckForUpdatesAsync(settings);
UnityEngine.Debug.Log($"是否需要更新: {result.hasUpdate}");
}
}编辑器工具
菜单入口:
Tools/Hanli App Updater
配置项:
- 服务器基础地址
- 请求超时
- 应用输出目录
- 上传模板预设
- 上传命令模板
主要功能:
校验配置生成上传
上传命令支持占位符:
{server}{file}{filename}{directory}
示例:
curl -T "{file}" "{server}/{filename}"cp "{file}" "\\server\share\path\\"说明:
- 预设支持
curl、cp、自定义 - 切换预设后需要点击“套用模板”才会覆盖当前命令
cp预设只是便捷起点,共享目录请自行改成真实 UNC 路径- 若服务器基础地址为
http://,窗口会提示并可一键修复Non-secure network connections设置
生成结果
点击 生成 后会在应用输出目录的父级目录生成:
last.ziplast.jsonupdater.exe
其中 last.zip 仍然打包的是“应用输出目录”里的应用文件;只是发布产物本身会落在它的父级目录,避免把更新器和元数据再次打进应用压缩包。版本号默认来自 PlayerSettings.bundleVersion,文件名固定为 last.json 与 updater.exe。
打包 last.zip 时会自动排除更新元数据、tmp 目录,以及任意目录名中包含 donotship 的编译期产物目录。
更新器
包内缓存的更新器可执行文件位于:
Packages/com.hanli.app-updater/UpdaterExecutable~/updater.exe
点击 生成 时,编辑器工具会把这个文件复制到应用输出目录的父级目录,并写入 last.json。
注意事项
- 当前首版仅支持 Windows Standalone。
- 仅当
last.json中的远端版本高于Application.version时才判定存在更新;相同版本或较旧版本不会触发更新。 - 版本号使用
System.Version原生规则解析和比较,支持 2–4 段数字点分格式(如0.26.0813);1.2、1.2.0、1.2.0.0是依次递增的不同版本。 - 更新失败时会输出中文提示,并提示联系作者。
