From f28b5dc50ab77811f4a8bfdf1270f353f7f96a29 Mon Sep 17 00:00:00 2001 From: 24kycj <1637269896@qq.com> Date: Thu, 6 Aug 2026 11:28:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=20DiscWorker=20=E6=89=93?= =?UTF-8?q?=E5=8C=85=E8=B7=AF=E5=BE=84=E4=B8=8E=E4=BA=A7=E5=93=81=E5=91=BD?= =?UTF-8?q?=E5=90=8D=EF=BC=8C=E5=BA=95=E9=83=A8=E5=B1=95=E7=A4=BA=E5=89=8D?= =?UTF-8?q?=E5=90=8E=E7=AB=AF=E7=89=88=E6=9C=AC=EF=BC=8C=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E9=9A=90=E8=97=8F=E9=BB=98=E8=AE=A4=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- package.json | 10 +- scripts/build-deb-arm64.sh | 83 ++++++++++++++ src/index.ejs | 2 +- src/main/index.js | 6 +- .../console/layout/ConsoleShell.vue | 4 +- .../console/layout/ConsoleStatusBar.vue | 108 ++++++------------ src/renderer/utils/console/appVersion.js | 36 ++++++ src/renderer/views/console/consolePage.vue | 8 +- src/renderer/views/dashboard/index.vue | 9 +- 9 files changed, 182 insertions(+), 84 deletions(-) create mode 100644 scripts/build-deb-arm64.sh create mode 100644 src/renderer/utils/console/appVersion.js diff --git a/package.json b/package.json index 3d37243..9e228c8 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "dev:web": "cross-env NODE_ENV=development node node_modules/webpack-dev-server/bin/webpack-dev-server.js --config .electron-vue/webpack.web.config.js --open", "electron:linux": "vue-cli-service electron:build -l --x64", "electron:arm": "vue-cli-service electron:build -l --arm64", + "build:deb:arm64": "bash scripts/build-deb-arm64.sh", "dev": "node .electron-vue/dev-runner.js", "lint": "eslint --ext .js,.vue -f ./node_modules/eslint-friendly-formatter src", "lint:fix": "eslint --ext .js,.vue -f ./node_modules/eslint-friendly-formatter --fix src", @@ -24,12 +25,12 @@ "postinstall": "npm run lint:fix" }, "build": { - "productName": "discworker", + "productName": "DiscWorker", "appId": "com.kashu.soonworkerdisk", "extraFiles": [ { "from": "./User Templates", - "to": "." + "to": "User Templates" }, { "from": "./CardsoonServer", @@ -37,7 +38,7 @@ }, { "from": "./help", - "to": "." + "to": "help" } ], "directories": { @@ -68,7 +69,8 @@ "icon": "build/icons/icon.ico" }, "linux": { - "icon": "build/icons" + "icon": "build/icons", + "executableName": "DiscWorker" } }, "dependencies": { diff --git a/scripts/build-deb-arm64.sh b/scripts/build-deb-arm64.sh new file mode 100644 index 0000000..11f6e26 --- /dev/null +++ b/scripts/build-deb-arm64.sh @@ -0,0 +1,83 @@ +#!/usr/bin/env bash +# 构建 Linux arm64 deb,并保证安装路径与 productName/executableName=DiscWorker 一致 +set -euo pipefail + +ROOT="$(cd "$(dirname "$0")/.." && pwd)" +cd "$ROOT" + +EXE="DiscWorker" +SANITIZED="DiscWorker" +OPT_DIR="/opt/${SANITIZED}" +BIN_LINK="/usr/bin/${EXE}" + +echo "[build-deb-arm64] executable: ${EXE}" +echo "[build-deb-arm64] opt dir: ${OPT_DIR}" + +node .electron-vue/build.js +npx electron-builder --linux deb --arm64 + +shopt -s nullglob +mapfile -t DEBS < <(ls -t build/*.deb 2>/dev/null || true) +if [[ ${#DEBS[@]} -eq 0 ]]; then + echo "[build-deb-arm64] 未找到 build/*.deb" >&2 + exit 1 +fi + +DEB="${DEBS[0]}" +WORK="$(mktemp -d)" +trap 'rm -rf "$WORK"' EXIT + +echo "[build-deb-arm64] patching: $DEB" +dpkg-deb -R "$DEB" "$WORK/pkg" +CONTROL_DIR="$WORK/pkg/DEBIAN" +mkdir -p "$CONTROL_DIR" + +# 若 builder 已生成钩子,把旧小写路径替换为 DiscWorker;否则写入默认钩子 +patch_or_write() { + local file="$1" + local kind="$2" + if [[ -f "$file" ]]; then + sed -i \ + -e "s|/opt/discworker|/opt/${SANITIZED}|g" \ + -e "s|/usr/bin/discworker|/usr/bin/${EXE}|g" \ + -e "s|discworker/chrome-sandbox|${SANITIZED}/chrome-sandbox|g" \ + -e "s|/opt/discworker/discworker|${OPT_DIR}/${EXE}|g" \ + "$file" + chmod 755 "$file" + echo "[build-deb-arm64] patched existing ${kind}" + return + fi + + if [[ "$kind" == "postinst" ]]; then + cat > "$file" < "$file" < - DiscWorker V1.01 + DiscWorker <% if (typeof isWeb === 'undefined' ? htmlWebpackPlugin.options.nodeModules : !isWeb && htmlWebpackPlugin.options.nodeModules) { %> diff --git a/src/main/index.js b/src/main/index.js index bb35fdd..c84ceab 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -54,8 +54,10 @@ function createWindow () { }) require("@electron/remote/main").initialize(); require("@electron/remote/main").enable(mainWindow.webContents); - // 禁用默认菜单 - // Menu.setApplicationMenu(null); + // dev 保留 Electron 默认菜单;打包后隐藏 + if (process.env.NODE_ENV !== 'development') { + Menu.setApplicationMenu(null) + } // mainWindow.maximize() mainWindow.show() mainWindow.loadURL(winURL) diff --git a/src/renderer/components/console/layout/ConsoleShell.vue b/src/renderer/components/console/layout/ConsoleShell.vue index def73f7..1277c5c 100644 --- a/src/renderer/components/console/layout/ConsoleShell.vue +++ b/src/renderer/components/console/layout/ConsoleShell.vue @@ -62,6 +62,7 @@ @@ -111,7 +112,8 @@ export default { diskTypes: { type: Object, default: () => ({}) }, taskList: { type: Array, default: () => [] }, logList: { type: Array, default: () => [] }, - showAllLogs: { type: Boolean, default: false } + showAllLogs: { type: Boolean, default: false }, + versionText: { type: String, default: '' } }, computed: { cacheText() { diff --git a/src/renderer/components/console/layout/ConsoleStatusBar.vue b/src/renderer/components/console/layout/ConsoleStatusBar.vue index 64e1fcd..23ed022 100644 --- a/src/renderer/components/console/layout/ConsoleStatusBar.vue +++ b/src/renderer/components/console/layout/ConsoleStatusBar.vue @@ -1,147 +1,109 @@ - - - - - - diff --git a/src/renderer/utils/console/appVersion.js b/src/renderer/utils/console/appVersion.js new file mode 100644 index 0000000..c8cc273 --- /dev/null +++ b/src/renderer/utils/console/appVersion.js @@ -0,0 +1,36 @@ +import platform from '@/platform' + +const pkg = require('../../../../package.json') + +export function getFrontendVersion() { + return String((pkg && pkg.version) || '0.0.0').replace(/^v/i, '') +} + +export function formatAppVersionLine(front, back) { + const f = String(front || '').replace(/^v/i, '') || '—' + const b = String(back || '').replace(/^v/i, '').trim() || '—' + return `DiscWorker V${f} 基于DiscProducer 核心V${b}` +} + +export function loadBackendVersion() { + if (!(platform.hasNativeFs && platform.hasNativeFs())) { + return Promise.resolve('') + } + const root = platform.getAppRoot() + const candidates = [ + platform.pathJoin(root, 'CardsoonServer', 'VERSION'), + platform.pathJoin(root, 'cardsoonServer', 'VERSION') + ] + const tryRead = (i) => { + if (i >= candidates.length) return Promise.resolve('') + return platform.readFile(candidates[i], 'utf8') + .then((text) => String(text || '').trim().split(/\r?\n/)[0] || '') + .catch(() => tryRead(i + 1)) + } + return tryRead(0) +} + +export function loadAppVersionLine() { + const front = getFrontendVersion() + return loadBackendVersion().then((back) => formatAppVersionLine(front, back)) +} diff --git a/src/renderer/views/console/consolePage.vue b/src/renderer/views/console/consolePage.vue index b56e639..e151e1e 100644 --- a/src/renderer/views/console/consolePage.vue +++ b/src/renderer/views/console/consolePage.vue @@ -27,6 +27,7 @@ :task-list="task_list" :log-list="displayLogs" :show-all-logs="showAll" + :version-text="versionText" @open-work="onOpenWork" @go-settings="onGoSettings" @activate="onActivate" @@ -54,7 +55,7 @@
国产光盘打印刻录系统 DiscWorker
-
版本 1.0
+
{{ versionText }}
© 2023 cardsoon Co., Ltd.
@@ -92,6 +93,7 @@ import { help, getChangeCDDefault } from '@/utils/console/consoleActions' +import { loadAppVersionLine } from '@/utils/console/appVersion' export default { name: 'ConsolePage', @@ -103,6 +105,7 @@ export default { data() { return { aboutVisible: false, + versionText: '', taskNum: [0, 0, 0], task_list: [], printer_info: {}, @@ -291,6 +294,9 @@ export default { } }, created() { + loadAppVersionLine().then((text) => { + this.versionText = text + }) if (this.isStaticView) { this.applyMock() } diff --git a/src/renderer/views/dashboard/index.vue b/src/renderer/views/dashboard/index.vue index a9234a2..2af7eff 100644 --- a/src/renderer/views/dashboard/index.vue +++ b/src/renderer/views/dashboard/index.vue @@ -492,7 +492,7 @@