maybe created auto updater?

This commit is contained in:
2026-11-06 13:26:45 -08:00
parent c5909d656d
commit 1be2aea1dd
3 changed files with 120 additions and 15 deletions

View File

@@ -358,7 +358,8 @@ class UpdateClient {
}
return 0;
};
const release = releases.slice().sort((a, b) => cmp(b.tag_name, a.tag_name))[0];
const ordered = releases.slice().sort((a, b) => cmp(b.tag_name, a.tag_name));
const release = ordered[0];
const links = release.assets && release.assets.links ? release.assets.links : [];
const manifestAsset = links.find((a) => a.name === 'manifest.json');
@@ -403,6 +404,10 @@ class UpdateClient {
}
}
if (!installer) {
installer = await this.findInstaller(ordered, release.tag_name);
}
const out = {
version: release.tag_name,
sha256: manifest.sha256 || null,
@@ -414,6 +419,28 @@ class UpdateClient {
return out;
}
async findInstaller(ordered, skipTag) {
for (const r of ordered.slice(0, 6)) {
if (r.tag_name === skipTag) continue;
const rl = r.assets && r.assets.links ? r.assets.links : [];
const ma = rl.find((a) => a.name === 'manifest.json');
if (!ma) continue;
try {
const m = await this.fetchAssetJson(ma.url);
if (!m.installer || !verifyManifest(m)) continue;
const link = rl.find((a) => a.name === m.installer.file);
if (!link) continue;
return {
url: link.url,
sha256: m.installer.sha256,
size: m.installer.size,
version: m.installer.version
};
} catch (e) { }
}
return null;
}
async downloadUpdate(release, destPath, onProgress) {
await this.downloadFile(release.url, destPath, onProgress);
return destPath;