mirror of
https://github.com/hellodigua/ChatLab.git
synced 2026-10-25 17:54:34 +08:00
fix(release): package Windows sqlite binding
This commit is contained in:
1 parent
a50c263232
commit
e00c9a4503
3 files changed
+17
-6
No files matched your search
@@ -288,12 +288,15 @@ jobs:
|
||||
# 分析服务
|
||||
APTABASE_APP_KEY: ${{ secrets.APTABASE_APP_KEY }}
|
||||
working-directory: apps/desktop
|
||||
run: pnpm run build && pnpm exec electron-builder --win --config electron-builder.yml -p never
|
||||
run: pnpm run build:win
|
||||
|
||||
- name: Verify native parser in packaged app (win x64)
|
||||
shell: bash
|
||||
run: node scripts/check-desktop-native.mjs win32-x64-msvc
|
||||
|
||||
- name: Verify packaged SQLite runtime (win x64)
|
||||
run: node scripts/check-packaged-sqlite.mjs
|
||||
|
||||
- name: Upload Windows artifacts
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
|
||||
@@ -50,6 +50,11 @@ asarUnpack:
|
||||
win:
|
||||
executableName: ChatLab
|
||||
target: nsis
|
||||
# Windows 构建显式携带 ensure-native 生成的 Electron ABI binding,避免
|
||||
# electron-builder 在 workspace 中误判 appDir 时打入共享 Node ABI 产物。
|
||||
extraResources:
|
||||
- from: native/better_sqlite3.node
|
||||
to: native/better_sqlite3.node
|
||||
|
||||
# NSIS 安装器配置
|
||||
nsis:
|
||||
@@ -87,7 +92,7 @@ dmg:
|
||||
artifactName: ChatLab-${version}-${arch}.${ext}
|
||||
|
||||
# 是否在构建之前重新编译原生模块。
|
||||
# better-sqlite3 非 NAPI,打包必须使用 Electron ABI:electron-builder 会在共享
|
||||
# node_modules 里原地重建(CI 一次性环境无影响)。本地 build:mac/build:win 通过
|
||||
# scripts/build-app.mjs 在打包结束后自动把共享绑定恢复为 Node ABI,保证 pnpm test 不被破坏。
|
||||
# macOS 继续由 electron-builder 重建共享 better-sqlite3;Windows 最终运行时使用
|
||||
# win.extraResources 中 desktop 自有的 Electron ABI binding。本地 build:mac/build:win
|
||||
# 仍通过 scripts/build-app.mjs 恢复共享 Node ABI,保证 pnpm test 不被破坏。
|
||||
npmRebuild: true
|
||||
@@ -58,7 +58,7 @@ export function verifyPackagedSqlite({
|
||||
})
|
||||
|
||||
if (result.status !== 0) {
|
||||
throw new Error(`Packaged better-sqlite3 failed to load: ${safeChildError(result)}`)
|
||||
throw new Error(`Packaged better-sqlite3 failed to load (${bindingPath}): ${safeChildError(result)}`)
|
||||
}
|
||||
|
||||
let parsed
|
||||
@@ -75,8 +75,11 @@ export function verifyPackagedSqlite({
|
||||
|
||||
function main() {
|
||||
try {
|
||||
const { bindingPath } = getPackagedSqlitePaths(defaultDistDir)
|
||||
const result = verifyPackagedSqlite()
|
||||
console.log(`[check-packaged-sqlite] OK: Electron ABI ${result.abi}, SELECT 1 = ${result.value}`)
|
||||
console.log(
|
||||
`[check-packaged-sqlite] OK: binding ${bindingPath}; Electron ABI ${result.abi}; SELECT 1 = ${result.value}`
|
||||
)
|
||||
} catch (error) {
|
||||
console.error(`[check-packaged-sqlite] FAILED: ${error instanceof Error ? error.message : String(error)}`)
|
||||
process.exitCode = 1
|
||||
|
||||
Reference in new issue
Block a user