重写版本更新
This commit is contained in:
parent
d3a99c1558
commit
1ac9639f59
@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "1.0.8",
|
|
||||||
"time": 1775118545494,
|
|
||||||
"data": {
|
|
||||||
"toonflow": [
|
|
||||||
{
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://toonflow.oss-cn-beijing.aliyuncs.com/latest/latest.zip"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "windows",
|
|
||||||
"url": "https://toonflow.oss-cn-beijing.aliyuncs.com/latest/latest.exe"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "linux",
|
|
||||||
"url": "https://toonflow.oss-cn-beijing.aliyuncs.com/latest/latest.AppImage"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "macos",
|
|
||||||
"url": "https://toonflow.oss-cn-beijing.aliyuncs.com/latest/latest.dmg"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"github": [],
|
|
||||||
"atomgit": [],
|
|
||||||
"gitee": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
1
data/version.txt
Normal file
1
data/version.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
1.0.11
|
||||||
File diff suppressed because one or more lines are too long
@ -9,17 +9,6 @@ app.commandLine.appendSwitch("disable-features", "CalculateNativeWinOcclusion");
|
|||||||
|
|
||||||
declare const __APP_VERSION__: string | undefined;
|
declare const __APP_VERSION__: string | undefined;
|
||||||
|
|
||||||
/**
|
|
||||||
* 将 extraResources 中的 data 目录复制到用户数据目录(跳过已存在的文件,保留用户修改)
|
|
||||||
*/
|
|
||||||
|
|
||||||
function getVersionFromUpdateJson(filePath: string): string | null {
|
|
||||||
try {
|
|
||||||
return JSON.parse(fs.readFileSync(filePath, "utf8")).version ?? null;
|
|
||||||
} catch {}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
const SKIP_ENTRIES = new Set(["logs", "oss", "db2.sqlite"]);
|
const SKIP_ENTRIES = new Set(["logs", "oss", "db2.sqlite"]);
|
||||||
|
|
||||||
function copyDir(src: string, dest: string, overwrite = false): void {
|
function copyDir(src: string, dest: string, overwrite = false): void {
|
||||||
@ -40,9 +29,9 @@ function copyDir(src: string, dest: string, overwrite = false): void {
|
|||||||
function initializeData(): void {
|
function initializeData(): void {
|
||||||
const srcDir = path.join(process.resourcesPath, "data");
|
const srcDir = path.join(process.resourcesPath, "data");
|
||||||
const destDir = path.join(app.getPath("userData"), "data");
|
const destDir = path.join(app.getPath("userData"), "data");
|
||||||
const updateJsonFile = path.join(destDir, "update.json");
|
const updateJsonFile = path.join(destDir, "version.txt");
|
||||||
const currentVersion = typeof __APP_VERSION__ !== "undefined" ? __APP_VERSION__ : "0.0.0";
|
const currentVersion = typeof __APP_VERSION__ !== "undefined" ? __APP_VERSION__ : "0.0.0";
|
||||||
const userVersion = getVersionFromUpdateJson(updateJsonFile);
|
const userVersion = fs.existsSync(updateJsonFile) ? fs.readFileSync(updateJsonFile, "utf8") : null;
|
||||||
|
|
||||||
if (!userVersion) {
|
if (!userVersion) {
|
||||||
copyDir(srcDir, destDir);
|
copyDir(srcDir, destDir);
|
||||||
|
|||||||
@ -17,6 +17,9 @@ const app = express();
|
|||||||
const server = http.createServer(app);
|
const server = http.createServer(app);
|
||||||
|
|
||||||
export default async function startServe(randomPort: Boolean = false) {
|
export default async function startServe(randomPort: Boolean = false) {
|
||||||
|
|
||||||
|
await u.writeVersion()
|
||||||
|
|
||||||
const io = new Server(server, { cors: { origin: "*" } });
|
const io = new Server(server, { cors: { origin: "*" } });
|
||||||
socketInit(io);
|
socketInit(io);
|
||||||
|
|
||||||
|
|||||||
@ -1,22 +1,10 @@
|
|||||||
import express from "express";
|
import express from "express";
|
||||||
import { success } from "@/lib/responseFormat";
|
import { success } from "@/lib/responseFormat";
|
||||||
|
import {getVersion} from "@/utils/writeVersion";
|
||||||
|
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
|
|
||||||
import fs from "fs";
|
|
||||||
import path from "path";
|
|
||||||
|
|
||||||
declare const __APP_VERSION__: string | undefined;
|
|
||||||
|
|
||||||
const APP_VERSION: string = (() => {
|
|
||||||
if (typeof __APP_VERSION__ !== "undefined") {
|
|
||||||
return __APP_VERSION__;
|
|
||||||
}
|
|
||||||
// 开发环境回退:从 package.json 读取
|
|
||||||
const pkgPath = path.resolve(process.cwd(), "package.json");
|
|
||||||
const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
|
|
||||||
return pkg.version;
|
|
||||||
})();
|
|
||||||
|
|
||||||
export default router.get("/", async (req, res) => {
|
export default router.get("/", async (req, res) => {
|
||||||
res.status(200).send(success(APP_VERSION));
|
const version = await getVersion();
|
||||||
|
res.status(200).send(success(version));
|
||||||
});
|
});
|
||||||
|
|||||||
@ -50,18 +50,22 @@ export default router.post(
|
|||||||
//对比Major
|
//对比Major
|
||||||
if (taggerList[0] > currentVersionList[0]) {
|
if (taggerList[0] > currentVersionList[0]) {
|
||||||
if (!installerItem) return res.status(400).send(error("该源暂无适用于当前系统的安装包"));
|
if (!installerItem) return res.status(400).send(error("该源暂无适用于当前系统的安装包"));
|
||||||
return res.status(200).send(success({ needUpdate: true, latestVersion: tagger, reinstall: true, time, url: installerItem.url }));
|
return res
|
||||||
|
.status(200)
|
||||||
|
.send(success({ needUpdate: true, latestVersion: tagger, reinstall: true, time, url: installerItem.url, version: tagger }));
|
||||||
}
|
}
|
||||||
//对比Minor
|
//对比Minor
|
||||||
if (taggerList[1] > currentVersionList[1]) {
|
if (taggerList[1] > currentVersionList[1]) {
|
||||||
if (!installerItem) return res.status(400).send(error("该源暂无适用于当前系统的安装包"));
|
if (!installerItem) return res.status(400).send(error("该源暂无适用于当前系统的安装包"));
|
||||||
return res.status(200).send(success({ needUpdate: true, latestVersion: tagger, reinstall: true, time, url: installerItem.url }));
|
return res
|
||||||
|
.status(200)
|
||||||
|
.send(success({ needUpdate: true, latestVersion: tagger, reinstall: true, time, url: installerItem.url, version: tagger }));
|
||||||
}
|
}
|
||||||
//Patch
|
//Patch
|
||||||
if (taggerList[2] > currentVersionList[2]) {
|
if (taggerList[2] > currentVersionList[2]) {
|
||||||
if (!zipItem) return res.status(400).send(error("该源暂无增量更新包"));
|
if (!zipItem) return res.status(400).send(error("该源暂无增量更新包"));
|
||||||
return res.status(200).send(success({ needUpdate: true, latestVersion: tagger, reinstall: false, time, url: zipItem.url }));
|
return res.status(200).send(success({ needUpdate: true, latestVersion: tagger, reinstall: false, time, url: zipItem.url, version: tagger }));
|
||||||
}
|
}
|
||||||
return res.status(200).send(success({ needUpdate: false, latestVersion: tagger, reinstall: false, time }));
|
return res.status(200).send(success({ needUpdate: false, latestVersion: tagger, reinstall: false, time ,version: tagger}));
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|||||||
@ -24,9 +24,10 @@ export default router.post(
|
|||||||
validateFields({
|
validateFields({
|
||||||
url: z.url(),
|
url: z.url(),
|
||||||
reinstall: z.boolean(),
|
reinstall: z.boolean(),
|
||||||
|
version: z.string(),
|
||||||
}),
|
}),
|
||||||
async (req, res) => {
|
async (req, res) => {
|
||||||
const { reinstall, url } = req.body;
|
const { reinstall, url, version } = req.body;
|
||||||
const rootDir = u.getPath(["temp"]);
|
const rootDir = u.getPath(["temp"]);
|
||||||
fs.mkdirSync(rootDir, { recursive: true });
|
fs.mkdirSync(rootDir, { recursive: true });
|
||||||
if (reinstall) {
|
if (reinstall) {
|
||||||
@ -58,6 +59,7 @@ export default router.post(
|
|||||||
fs.cpSync(tempModelsPath, u.getPath(["models"]), { recursive: true, force: true });
|
fs.cpSync(tempModelsPath, u.getPath(["models"]), { recursive: true, force: true });
|
||||||
}
|
}
|
||||||
fs.rmSync(rootDir, { recursive: true, force: true });
|
fs.rmSync(rootDir, { recursive: true, force: true });
|
||||||
|
await u.writeVersion(version);
|
||||||
res.status(200).send(success("更新成功,5秒后重启"));
|
res.status(200).send(success("更新成功,5秒后重启"));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import Ai from "@/utils/ai";
|
|||||||
import { getPrompts } from "@/utils/getPrompts";
|
import { getPrompts } from "@/utils/getPrompts";
|
||||||
import { getArtPrompt } from "@/utils/getArtPrompt";
|
import { getArtPrompt } from "@/utils/getArtPrompt";
|
||||||
import replaceUrl from "@/utils/replaceUrl";
|
import replaceUrl from "@/utils/replaceUrl";
|
||||||
|
import writeVersion from "@/utils/writeVersion";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
db,
|
db,
|
||||||
@ -25,5 +26,6 @@ export default {
|
|||||||
task,
|
task,
|
||||||
getPrompts,
|
getPrompts,
|
||||||
getArtPrompt,
|
getArtPrompt,
|
||||||
replaceUrl
|
replaceUrl,
|
||||||
|
writeVersion,
|
||||||
};
|
};
|
||||||
|
|||||||
35
src/utils/writeVersion.ts
Normal file
35
src/utils/writeVersion.ts
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
import path from "path";
|
||||||
|
import fs from "fs";
|
||||||
|
import getPath from "@/utils/getPath";
|
||||||
|
|
||||||
|
declare const __APP_VERSION__: string | undefined;
|
||||||
|
|
||||||
|
const APP_VERSION: string = (() => {
|
||||||
|
if (typeof __APP_VERSION__ !== "undefined") {
|
||||||
|
return __APP_VERSION__;
|
||||||
|
}
|
||||||
|
// 开发环境回退:从 package.json 读取
|
||||||
|
const pkgPath = path.resolve(process.cwd(), "package.json");
|
||||||
|
const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
|
||||||
|
return pkg.version;
|
||||||
|
})();
|
||||||
|
|
||||||
|
export default async (version?: string) => {
|
||||||
|
const versionFile = path.join(getPath(), "version.txt");
|
||||||
|
if (!fs.existsSync(versionFile)) {
|
||||||
|
fs.mkdirSync(path.dirname(versionFile), { recursive: true });
|
||||||
|
}
|
||||||
|
await fs.promises.writeFile(versionFile, version ?? APP_VERSION, "utf8");
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getVersion = async () => {
|
||||||
|
const versionFile = path.join(getPath(), "version.txt");
|
||||||
|
if (fs.existsSync(versionFile)) {
|
||||||
|
return fs.readFileSync(versionFile, "utf8");
|
||||||
|
}
|
||||||
|
if (!fs.existsSync(versionFile)) {
|
||||||
|
fs.mkdirSync(path.dirname(versionFile), { recursive: true });
|
||||||
|
}
|
||||||
|
await fs.promises.writeFile(versionFile, APP_VERSION, "utf8");
|
||||||
|
return APP_VERSION;
|
||||||
|
};
|
||||||
Loading…
x
Reference in New Issue
Block a user