From 963a1f07904fcb970255666d0aefe98ba528d4ad Mon Sep 17 00:00:00 2001 From: Ivan Fontosh Date: Sun, 17 May 2026 23:20:37 +0800 Subject: [PATCH] fix --- app/shared/package.build.test.ts | 2 ++ docs/GITEA_AUTO_UPDATE.md | 2 ++ package.json | 5 ++++- scripts/release-linux-pack.mjs | 37 ++++++++++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 scripts/release-linux-pack.mjs diff --git a/app/shared/package.build.test.ts b/app/shared/package.build.test.ts index aadbcc3..68e2bb1 100644 --- a/app/shared/package.build.test.ts +++ b/app/shared/package.build.test.ts @@ -19,6 +19,7 @@ void test('package.json: конфиг electron-builder (mac/win/linux)', () => { nsis?: { artifactName?: string }; dmg?: { artifactName?: string }; files: string[]; + toolsets?: { appimage?: string }; }; }; assert.ok(pkg.build); @@ -38,6 +39,7 @@ void test('package.json: конфиг electron-builder (mac/win/linux)', () => { ), ); assert.ok(Array.isArray(pkg.build.mac.target)); + assert.equal(pkg.build.toolsets?.appimage, '1.0.2'); assert.ok(Array.isArray(pkg.build.linux.target)); const linuxTargets = pkg.build.linux.target as { target: string; arch: string[] }[]; assert.ok(linuxTargets.some((t) => t.target === 'AppImage')); diff --git a/docs/GITEA_AUTO_UPDATE.md b/docs/GITEA_AUTO_UPDATE.md index fdabc5e..4a86909 100644 --- a/docs/GITEA_AUTO_UPDATE.md +++ b/docs/GITEA_AUTO_UPDATE.md @@ -38,6 +38,8 @@ npm run release:info # версия и пример тега vX.Y.Z (тег о | `npm run pack:linux` | Linux или WSL с зависимостями | `release/` — AppImage x64/arm64 + `latest-linux.yml` | | `npm run pack:mac` | macOS | `release/` — dmg + `latest-mac.yml` | +Linux AppImage не собирается напрямую из Windows PowerShell: `mksquashfs` — Linux-инструмент. На Windows запускайте команду внутри WSL. + Скопируйте нужные файлы из `release/` в папку публикации (например `D:\TTRPG-Release\`). ## Сервер обновлений diff --git a/package.json b/package.json index 4973173..3561fa8 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "pack:dir": "npm run build && node scripts/release-win-prep.mjs && electron-builder --dir", "pack:mac": "npm run build && electron-builder --mac", "pack:win": "npm run build && node scripts/release-win-prep.mjs && electron-builder --win", - "pack:linux": "npm run build && electron-builder --linux" + "pack:linux": "node scripts/release-linux-pack.mjs" }, "keywords": [], "author": "", @@ -96,6 +96,9 @@ "node_modules/@img/**", "node_modules/ffmpeg-static/**" ], + "toolsets": { + "appimage": "1.0.2" + }, "mac": { "category": "public.app-category.games", "target": [ diff --git a/scripts/release-linux-pack.mjs b/scripts/release-linux-pack.mjs new file mode 100644 index 0000000..328e7a7 --- /dev/null +++ b/scripts/release-linux-pack.mjs @@ -0,0 +1,37 @@ +/** + * Build Linux release artifacts. + * + * AppImage packaging uses Linux tooling (mksquashfs). Running it from + * Windows PowerShell reaches linux-unpacked, then fails while creating + * the AppImage. Build from Linux/WSL instead. + */ +import { spawnSync } from 'node:child_process'; +import process from 'node:process'; + +function run(command, args) { + const result = spawnSync(command, args, { + stdio: 'inherit', + shell: process.platform === 'win32', + }); + + if (result.status !== 0) { + process.exit(result.status ?? 1); + } +} + +if (process.platform === 'win32') { + console.error( + [ + '[pack:linux] AppImage нельзя собрать напрямую из Windows PowerShell.', + 'Запустите команду внутри Linux/WSL из папки проекта:', + '', + ' cd /mnt/d/Work/my_projects/dnd_project/dnd_player', + ' npm ci', + ' npm run pack:linux', + ].join('\n'), + ); + process.exit(1); +} + +run('npm', ['run', 'build']); +run('electron-builder', ['--linux']);