diff --git a/electron-builder.win.yml b/electron-builder.win.yml new file mode 100644 index 0000000..ab80da6 --- /dev/null +++ b/electron-builder.win.yml @@ -0,0 +1,59 @@ +appId: com.tracememo.app +productName: TraceMemo +afterPack: scripts/after-pack.cjs +directories: + buildResources: build +files: + - out + - '!**/.vscode/*' + - '!src/*' + - '!electron.vite.config.{js,ts,mjs,cjs}' + - '!{.eslintcache,eslint.config.mjs,.prettierignore,.prettierrc.yaml,dev-app-update.yml,CHANGELOG.md,README.md}' + - '!{.env,.env.*,.npmrc,pnpm-lock.yaml}' + - '!{tsconfig.json,tsconfig.node.json,tsconfig.web.json}' +extraMetadata: + main: out/main/index.js +asarUnpack: + - resources/** + - node_modules/ffmpeg-static/** + - node_modules/silk-wasm/** + - node_modules/sherpa-onnx-node/** + - node_modules/sherpa-onnx-*/** +extraResources: + # Keep only resources required by the Windows x64 runtime. + - from: resources + to: resources + filter: + - icon.png + - daily_report_templates.html + - mobile_daily_report.html + - mobile_daily_report_v1.html + - mobile_daily_report_v2.html + - connectors/wechat/win32-x64/** + - key/win32/x64/** + - runtime/win32/** + - wcdb/win32/x64/** + - from: docs/skill/tracememo-reader + to: skill/tracememo-reader + filter: + - '**/*' +win: + icon: icon.ico + # WCDB's Windows runtime checks the host executable name. + executableName: electron +nsis: + oneClick: false + allowToChangeInstallationDirectory: true + artifactName: ${name}-${version}-setup.${ext} + shortcutName: ${productName} + uninstallDisplayName: ${productName} + createDesktopShortcut: always +npmRebuild: false +electronLanguages: + - zh-CN + - en-US +publish: + provider: github + owner: Wxw-Gu + repo: WechatExplorer + releaseType: release diff --git a/package.json b/package.json index b301ca2..b3ec68f 100644 --- a/package.json +++ b/package.json @@ -49,17 +49,17 @@ "test:visual": "pnpm test:e2e:build && playwright test tests/e2e/visual.spec.ts", "test:smoke": "node --test tests/smoke/native-environment.test.mjs", "build:wechat-connector": "node scripts/build-wechat-connector.cjs", - "build:wechat-connector:win": "node scripts/build-wechat-connector.cjs --platform win32 --arch x64,arm64", + "build:wechat-connector:win": "node scripts/build-wechat-connector.cjs --platform win32 --arch x64", "build:wechat-connector:mac": "node scripts/build-wechat-connector.cjs --platform darwin --arch arm64", "build:native-services": "npm run build:wechat-connector", "build": "npm run typecheck && npm run build:native-services && electron-vite build", "postinstall": "electron-builder install-app-deps && node scripts/prepare-electron-runtime.cjs", "build:unpack": "npm run build && electron-builder --config electron-builder.yml --dir", - "build:win": "npm run typecheck && npm run build:wechat-connector:win && npm run prepare:ffmpeg:win && electron-vite build && electron-builder --config electron-builder.yml --win --x64", + "build:win": "npm run typecheck && npm run build:wechat-connector:win && npm run prepare:ffmpeg:win && electron-vite build && electron-builder --config electron-builder.win.yml --win --x64", "build:mac:arm64": "npm run typecheck && node scripts/build-wechat-connector.cjs --platform darwin --arch arm64 && electron-vite build && electron-builder --config electron-builder.yml --mac --arm64", "release": "npm run release:mac && npm run release:win", "release:mac": "npm run typecheck && npm run build:wechat-connector:mac && electron-vite build && electron-builder --config electron-builder.yml --mac --arm64 --publish always", - "release:win": "npm run typecheck && npm run build:wechat-connector:win && npm run prepare:ffmpeg:win && electron-vite build && electron-builder --config electron-builder.yml --win --x64 --publish always", + "release:win": "npm run typecheck && npm run build:wechat-connector:win && npm run prepare:ffmpeg:win && electron-vite build && electron-builder --config electron-builder.win.yml --win --x64 --publish always", "release:beta": "cross-env RELEASE_TYPE=prerelease npm run release", "release:stable": "cross-env RELEASE_TYPE=release npm run release", "build:linux": "electron-vite build && electron-builder --config electron-builder.yml --linux" diff --git a/tests/unit/runtime-packaging.test.ts b/tests/unit/runtime-packaging.test.ts index c4d1967..432ec75 100644 --- a/tests/unit/runtime-packaging.test.ts +++ b/tests/unit/runtime-packaging.test.ts @@ -58,6 +58,16 @@ describe('production runtime packaging', () => { expect(config).toContain('node_modules/silk-wasm/**') }) + it('uses a Windows x64-only resource set', () => { + const config = readFileSync(resolve(__dirname, '../../electron-builder.win.yml'), 'utf8') + expect(config).toContain('connectors/wechat/win32-x64/**') + expect(config).toContain('key/win32/x64/**') + expect(config).toContain('wcdb/win32/x64/**') + expect(config).toContain('electronLanguages:') + expect(config).not.toContain('win32-arm64') + expect(config).not.toContain('macos/') + }) + it('rejects an app archive with missing runtime dependencies', async () => { const resources = join(root, 'asar-resources') const source = join(root, 'asar-source')