关于Bucket的制作官方只提供了一个模板仓库并没有详细的文档来描述各个字段如何配置,这对于自制Bucket带来了极大的困扰,所以我自己看官方Bucket的示例来总结了一些东西
今天冲浪的时候发现有官方有字段文档甚至还很全面,没有必要看这篇博客🤡🤡

仓库结构

模板仓库主要有四个东西,binbucketdeprecatedscripts,其中bin是存放可执行文件的目录,bucket是存放app的配置文件,deprecatedscripts用途暂时不明。我们写应用json只需要关注bucket文件夹即可 (应该)

Bucket

下面是官方json示例及解释

{
// 版本号
"version": "",

// 描述,对软件包的简短描述
"description": "",

// 主页,软件包的官方网站或主页URL
"homepage": "",

// 许可证,软件包使用的许可证类型
"license": "",

// 提示,安装或更新时可能需要的额外信息或说明
"notes": "",

// 架构,定义了不同系统架构的安装信息
"architecture": {
// 64位架构的安装信息
"64bit": {
// 下载URL
"url": "",
// 文件的哈希值,用于验证下载的完整性
"hash": ""
},
// 32位架构的安装信息
"32bit": {
"url": "",
"hash": ""
},
// ARM64架构的安装信息
"arm64": {
"url": "",
"hash": ""
}
},

// 安装前的脚本,安装前需要执行的脚本或命令
"pre_install": "",

// 安装器,定义安装过程中使用的脚本
"installer": {
"script": ""
},

// 安装后的脚本,安装后需要执行的一系列脚本或命令
"post_install": [
"",
""
],

// 卸载器,定义卸载过程中使用的脚本
"uninstaller": {
"script": ""
},

// 二进制文件路径,软件包中可执行文件的路径
"bin": "",

// 环境变量,添加到系统路径中的环境变量列表
"env_add_path": [
"",
""
],

// 持久化文件,需要在更新时保留的文件列表
"persist": [
"",
""
],

// 版本检查,定义如何检查软件包的新版本
"checkver": {
"url": "", // 检查更新的URL
"regex": "" // 正则表达式,用于从URL指定的页面中提取版本信息
},

// 自动更新,定义自动更新时使用的参数
"autoupdate": {
"architecture": {
// 不同架构的自动更新URL
"64bit": {
"url": ""
},
"32bit": {
"url": ""
},
"arm64": {
"url": ""
}
},
"hash": {
// 自动更新时用于检查文件完整性的哈希值的URL和正则表达式
"url": "",
"regex": ""
}
}
}

url

根据软件包的分发格式,需要对url进行一些修改。

  • zip,一般不需要修改,有的需要在url后面加上#/dl.7z
  • exe,一般需要加上#/dl.7z,比如旧版qq
  • 其余格式如nupkg等需要自行探究,如果自带innosetup可以添加"innosetup": true

checkver

如果软件包在GitHub上,检查更新就很简单,无需使用正则解析url来检查版本更新。

//直接使用github就可以自动检测
"checkver": "github"

//这种写法也行
"checkver": {
"github": "https://github.com/xxxxx"
}

extract_dir

extract_dir这个字段在官方示例没有出现,作用是配置软件包解压后到可执行文件的目录,如果没有可以不写,但是压缩包嵌套了文件夹就必须写这个字段。

//这个软件包解压后到可执行文件的目录是"zmc8.3.1.81-ca-win_x64\Azul Mission Control"
"architecture": {
"64bit": {
"url": "http://static.azul.com/zmc/bin/zmc8.3.1.81-ca-win_x64.zip",
"hash": "7028ce2dfc9791efd2815a02d2f2837871128f6c4ba1082c34c605f51e087bff",
"extract_dir": "zmc8.3.1.81-ca-win_x64\\Azul Mission Control"
}
}

shortcuts

shortcuts这个字段在官方示例没有出现,作用是配置开始菜单里的快捷方式,上下分别为可执行文件名、文件夹名。

"shortcuts": [
[
"Bin\\QQScLauncher.exe",
"QQ"
]
],