{{ viewLabel }}
当前最新版
签名与运行参数会原样写进 appcast 的
sparkle:edSignature 与 sparkle:installerArguments
(两者都是 <enclosure> 上的属性)。
版本说明
{{ latest.notes }}
尚未上传任何版本
历史版本(共 {{ versions.length }} 个)
全部历史版本都保留在服务器上,不会自动清理;每个包在
release/<版本号>/package.bin。
新版本由构建流程调用 POST /api/versions/upload 上传,必填
token、version、file,可选
notes(版本说明)、signature(签名)、
installer_args(安装时传给安装包的命令行参数)。
每个版本各留一份;用同一个版本号重传则覆盖那一条。上传 token 在「设置」页生成。
客户端更新订阅(WinSparkle)
软件里设置 win_sparkle_set_appcast_url("{{ appcastUrl }}") 即可。
WinSparkle 会拉这个地址,按 sparkle:version 与本机构建版本比较,
有新版时下载并运行 enclosure 指向的安装包。尚未上传版本时,该地址返回一份
「没有可用更新」的合法订阅(而不是 404)。
注意:sparkle:version 取自上传时的「版本号」。WinSparkle 是拿它和
可执行文件的版本资源比大小的,所以要填构建版本号(如 1.4.0.0),而不只是展示名。
{{ versionsError }}
「{{ viewLabel }}」功能建设中,敬请期待
站点信息
以上为本站点在服务器上的登记信息;修改请前往管理站点(manager)。
本站点的数据(上传 Token、版本记录,以及后续的用户与反馈)都存在应用数据目录
下的 app.db 里;授权私钥另存为同一目录下的
license/private_key.pem —— 两者都只属于本站点,与其它站点完全隔离。
上传 Token
上传新的可执行文件时,需在 POST 请求体中携带本 token;服务端比对不一致将拒绝上传。
{{ uploadToken }}
尚未生成(未生成时任何上传都会被拒绝)
{{ tokenMsg }}
{{ tokenErr }}
重新生成会立即作废旧 token —— 正在使用它的构建流程需要同步更新。
授权密钥
授权用非对称签名,密钥固定为 Ed25519(EdDSA):私钥只保存在本站点的应用数据目录里 (每个应用站点各持一份,互相看不到),用于签发激活码;公钥内置在软件客户端里做离线校验。 客户端内置的是 32 字节 raw 公钥,只有 Ed25519 对得上 —— 导入其它类型的密钥会被直接拒绝。 换密钥等于作废所有已发布客户端,请优先导入已有密钥对中的私钥。
本站点尚未配置授权密钥 —— 在下方导入已有私钥,或在本机生成一对新的。
私钥文件当前不可用:{{ licenseKey.error }}
当前私钥不是 Ed25519({{ licenseKey.key_type || '未知类型' }}),签不出客户端能验过的激活码 —— 请导入或生成一把 Ed25519 私钥。
把这段公钥内置到客户端后编译发布;客户端按同法算出的指纹应与此页一致。
{{ licenseKey.public_key_base64 }}
客户端源码里内置的授权公钥就是这个值;签发激活码要求它已登记在下面并与本站点私钥一致。
当前登记:{{ licenseKey.client_public_key }} —— 与本站点私钥一致 ✓ 与本站点私钥不一致,签发的码客户端验不过 ✗
{{ licenseClientMsg }}
{{ licenseClientErr }}
只接受 Ed25519(EdDSA) 私钥(通常以 -----BEGIN PRIVATE KEY----- 开头的 PKCS#8);
RSA / ECDSA 密钥签出来的激活码客户端验不过,导入会被直接拒绝。导入时做一次「签名 → 验签」自检,
服务器只保存私钥,不会回显。
只能在本机生成 Ed25519 密钥对;生成后把公钥内置到客户端并重新发布。私钥文件 0600、只在本站点的数据目录里,请自行备份 —— 丢失后无法再签发授权。
{{ licenseMsg }}
{{ licenseErr }}
签发授权
客户在软件的「设置 → 激活软件」里点「复制机器号」,拿到的就是那 16 位机器号(如
3CJ9TP8FOA7QGDL9)。授权就绑在这台机器上:客户端激活时拿码里的机器号与本机逐字符比对
(忽略大小写)。签发前请确认上面已登记客户端内置公钥 —— 对不上的话,签出来的码客户端一律验不过。
{{ issueMsg }}
{{ issueErr }}
签发台账({{ issues.length }} 笔)
台账只留激活码的哈希与签发参数,**不留明文码** —— 它回答的是"这个码是不是我们发的"。 续签照同一个机器号再签一份(到期日往后写);客户换机器 / 重装系统后机器号会变,用新机器号另签一份, 并在备注里记下原流水号。
{{ issuesCid ? '这台机器还没有签发记录。' : '尚未签发过授权。' }}
{{ issuesError }}
校验激活码
把客户手里的码贴回来验一遍(排障用):优先按**客户端内置公钥**验 —— 那才是客户那边能不能过的答案。
{{ verifyMsg }}
{{ verifyErr }}