制作属于自己的Scoop Bucket

本文最后更新于 2024年6月1日 晚上

关于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"
        ]
    ],

制作属于自己的Scoop Bucket
https://exusiai.top/article/da6fde34c10c.html
作者
HauKuen
发布于
2024年5月17日
许可协议