mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-15 21:32:49 +00:00
perf: 优化客户端升级
This commit is contained in:
parent
fa42194d15
commit
85c4ed6399
30
electron/build.js
vendored
30
electron/build.js
vendored
@ -25,6 +25,7 @@ const platforms = ["build-mac", "build-win"];
|
|||||||
*/
|
*/
|
||||||
async function detectAndDownloadUpdater() {
|
async function detectAndDownloadUpdater() {
|
||||||
const updaterDir = path.resolve(__dirname, "updater");
|
const updaterDir = path.resolve(__dirname, "updater");
|
||||||
|
const latestVersionFile = path.join(updaterDir, "latest");
|
||||||
|
|
||||||
// 创建updater目录
|
// 创建updater目录
|
||||||
if (!fs.existsSync(updaterDir)) {
|
if (!fs.existsSync(updaterDir)) {
|
||||||
@ -43,6 +44,27 @@ async function detectAndDownloadUpdater() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 检查版本是否需要更新
|
||||||
|
const latestVersion = response.data.tag_name || response.data.name;
|
||||||
|
let currentVersion = '';
|
||||||
|
if (fs.existsSync(latestVersionFile)) {
|
||||||
|
currentVersion = fs.readFileSync(latestVersionFile, 'utf8').trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果版本不一致,清空updater目录(保留latest文件)
|
||||||
|
if (currentVersion !== latestVersion) {
|
||||||
|
const files = fs.readdirSync(updaterDir);
|
||||||
|
for (const file of files) {
|
||||||
|
if (file === 'latest') continue;
|
||||||
|
const filePath = path.join(updaterDir, file);
|
||||||
|
if (fs.lstatSync(filePath).isDirectory()) {
|
||||||
|
fs.rmdirSync(filePath, { recursive: true });
|
||||||
|
} else {
|
||||||
|
fs.unlinkSync(filePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 过滤出binary开头的zip文件
|
// 过滤出binary开头的zip文件
|
||||||
const assets = response.data.assets.filter(asset =>
|
const assets = response.data.assets.filter(asset =>
|
||||||
asset.name.startsWith('binary_') && asset.name.endsWith('.zip')
|
asset.name.startsWith('binary_') && asset.name.endsWith('.zip')
|
||||||
@ -133,6 +155,9 @@ async function detectAndDownloadUpdater() {
|
|||||||
fs.unlinkSync(zipPath);
|
fs.unlinkSync(zipPath);
|
||||||
downloadSpinner.succeed(`Downloaded and extracted ${fileName}`);
|
downloadSpinner.succeed(`Downloaded and extracted ${fileName}`);
|
||||||
|
|
||||||
|
// 下载和解压成功后,保存最新版本号
|
||||||
|
fs.writeFileSync(latestVersionFile, latestVersion, 'utf8');
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
downloadSpinner.fail(`Failed to download ${fileName}: ${error.message}`);
|
downloadSpinner.fail(`Failed to download ${fileName}: ${error.message}`);
|
||||||
// 清理失败的下载
|
// 清理失败的下载
|
||||||
@ -558,7 +583,7 @@ if (["dev"].includes(argv[2])) {
|
|||||||
child_process.spawn("npx", ["vite", "--", "fromcmd", "electronDev"], {stdio: "inherit"});
|
child_process.spawn("npx", ["vite", "--", "fromcmd", "electronDev"], {stdio: "inherit"});
|
||||||
child_process.spawn("npm", ["run", "start-quiet"], {stdio: "inherit", cwd: "electron"});
|
child_process.spawn("npm", ["run", "start-quiet"], {stdio: "inherit", cwd: "electron"});
|
||||||
} else if (["app"].includes(argv[2])) {
|
} else if (["app"].includes(argv[2])) {
|
||||||
// 编译给app
|
// 编译前端页面给 App
|
||||||
let mobileSrcDir = path.resolve(__dirname, "../resources/mobile");
|
let mobileSrcDir = path.resolve(__dirname, "../resources/mobile");
|
||||||
if (!fs.existsSync(mobileSrcDir)) {
|
if (!fs.existsSync(mobileSrcDir)) {
|
||||||
console.error("resources/mobile not found");
|
console.error("resources/mobile not found");
|
||||||
@ -577,13 +602,14 @@ if (["dev"].includes(argv[2])) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else if (["android-upload"].includes(argv[2])) {
|
} else if (["android-upload"].includes(argv[2])) {
|
||||||
|
// 上传安卓文件(GitHub Actions)
|
||||||
config.app.forEach(({publish}) => {
|
config.app.forEach(({publish}) => {
|
||||||
if (publish.provider === 'generic') {
|
if (publish.provider === 'generic') {
|
||||||
androidUpload(publish.url)
|
androidUpload(publish.url)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else if (["all", "win", "mac"].includes(argv[2])) {
|
} else if (["all", "win", "mac"].includes(argv[2])) {
|
||||||
// 自动编译
|
// 自动编译(GitHub Actions)
|
||||||
platforms.filter(p => {
|
platforms.filter(p => {
|
||||||
return argv[2] === "all" || p.indexOf(argv[2]) !== -1
|
return argv[2] === "all" || p.indexOf(argv[2]) !== -1
|
||||||
}).forEach(async platform => {
|
}).forEach(async platform => {
|
||||||
|
|||||||
4
electron/electron.js
vendored
4
electron/electron.js
vendored
@ -197,9 +197,9 @@ function createUpdaterWindow(loadingTip) {
|
|||||||
// 构建updater应用路径
|
// 构建updater应用路径
|
||||||
let updaterPath;
|
let updaterPath;
|
||||||
if (isWin) {
|
if (isWin) {
|
||||||
updaterPath = path.join(process.resourcesPath, '..', 'updater', 'updater.exe');
|
updaterPath = path.join(process.resourcesPath, 'updater', 'updater.exe');
|
||||||
} else {
|
} else {
|
||||||
updaterPath = path.join(process.resourcesPath, '..', 'updater', 'updater');
|
updaterPath = path.join(process.resourcesPath, 'updater', 'updater');
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查updater应用是否存在
|
// 检查updater应用是否存在
|
||||||
|
|||||||
@ -80,7 +80,7 @@
|
|||||||
"extraFiles": [
|
"extraFiles": [
|
||||||
{
|
{
|
||||||
"from": "updater/${os}/${arch}",
|
"from": "updater/${os}/${arch}",
|
||||||
"to": "Resources/Updater",
|
"to": "Resources/updater",
|
||||||
"filter": ["**/*"]
|
"filter": ["**/*"]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user