快速、多功能的通用安装程序。
- 离线安装
- 多线程安装,速度快
- 安装后校验,避免错误
- 在线安装
- 分块下载,边下载边解压
- 在线更新
- 自动比对文件差异,增量更新
- 支持
HDiffPatch
的文件级差分更新 - 占用检测、结束进程
- 只需要提供一个离线安装包链接即可完成以上所有操作,无需额外部署
- 运行库安装
- 支持自动安装 .Net Runtime/Desktop 和 VCRedist
- 自动安装Webview2以保证
Tauri
的正常运行
- 混合安装
- 通过旧版安装包和在线更新直接安装最新版
- 卸载
- 支持只删除包体内的文件,默认不删除用户数据
- 编写
kachina.config.json
,作为安装器的配置文件
- 构建更新器,用于打包在便携版内等。更新器不需要被打包到离线包内。
kachina-builder.exe pack -c kachina.config.json -o Kachina.update.exe
- 构建Metadata、压缩应用文件
kachina-builder.exe gen -j 8 -i {AppDir} -m metadata.json -o hashed -r {AppId} -t {Version} -u Kachina.update.exe
- 构建离线包
kachina-builder.exe pack -c kachina.config.json -m metadata.json -d hashed -o Kachina.Install.exe
- 部署离线包到服务器上,确保可以通过json里的url下载到。在目前版本里,你不需要部署压缩产生的
hashed
文件夹和metadata文件,这些文件是在构建过程中临时使用的。 - 此时第二步得到的更新器可以直接作为在线安装包使用。
如果你希望用户可以自由选择安装源,你可以指定多个Source,此时用户主动打开安装器时将在路径选择上方看到安装源选择按钮。
示例配置如下:
{
"source": [
{
"id": "stable",
"name": "正式版",
"uri": "https://example.com/Kachina.Install.exe"
},
{
"id": "beta",
"name": "测试版",
"uri": "https://example.com/Kachina.Install.Beta.exe"
}
]
}
Mirror酱 是独立的第三方软件下载平台,提供付费的软件下载加速服务。kachina-installer
接入了Mirror酱的API,允许用户使用Mirror酱更新软件。例如,你可以结合上述的安装源选择功能,让用户选择使用自建服务器更新还是使用Mirror酱更新。
如需使用,请设置source
的值为mirrorc://{rid}?channel={stable|beta|alpha}
。同时,你需要将前述产生的.metadata.json
放置到上传给Mirror酱的文件中。示例的上传格式:
upload_to_mirrorc.zip
- .metadata.json
- Main.exe
- Main.update.exe
也支持
upload_to_mirrorc.zip
- App/.metadata.json
- App/Main.exe
- App/Main.update.exe
Tips:Mirror酱使用独立的文件级增量更新机制,因此当选择Mirror酱作为更新源时候,将无法使用kachina-installer
自带的版本比对、二进制Patch级增量等功能。
安装器的离线包是一个可寻址的文件,其中包含了安装器主体、索引、配置、元数据、程序文件、Patch文件。当安装程序运行时,如果程序没有有内嵌资源,会对配置URL中的离线包进行远程寻址,通过文件头中的索引获取资源,并通过HTTP 206 部分下载需要的内容。如果程序有内嵌资源,程序会对比线上和本地的版本,优先使用本地的资源,并在可行的情况下使用先释放本地资源、随后使用服务器上的更新Patch的形式以减少流量损耗。
安装程序和dfs服务器不是强绑定关系,任何可以通过HTTP提供离线包下载的服务器都可以作为更新服务器。dfs在本项目中仅作为一个获取下载地址的API使用。