mirror of
https://wget.la/https://github.com/Wxw-Gu/WechatExplorer
synced 2026-08-17 11:37:06 +08:00
- 修复打包版图片、语音解析不可用,内置 FFmpeg 与必要运行时依赖 - 修复 HTML 导出原图查找、缩略图回退及增量档案媒体解析问题 - 修复本人昵称在软件和 HTML 导出中显示为微信号的问题,并兼容旧档案昵称迁移 - 修复 HTML 语音播放器超出消息气泡的问题 - 优化 HTML 双向滚动加载,大量消息时最多渲染 240 条,避免页面卡顿 - 移除图片解密页面中手动配置 FFmpeg 的相关提示 - 补充图片解密、语音运行时、打包资源和 HTML 导出相关测试
62 lines
1.7 KiB
JavaScript
62 lines
1.7 KiB
JavaScript
const fs = require('node:fs')
|
|
const { execFileSync } = require('node:child_process')
|
|
const path = require('node:path')
|
|
|
|
const runtimeNames = ['msvcp140.dll', 'msvcp140_1.dll', 'vcruntime140.dll', 'vcruntime140_1.dll']
|
|
|
|
function copyIfDifferent(sourcePath, targetPath) {
|
|
const source = fs.statSync(sourcePath)
|
|
const targetExists = fs.existsSync(targetPath)
|
|
|
|
if (targetExists) {
|
|
const target = fs.statSync(targetPath)
|
|
if (target.size === source.size && target.mtimeMs >= source.mtimeMs) {
|
|
return false
|
|
}
|
|
}
|
|
|
|
fs.copyFileSync(sourcePath, targetPath)
|
|
return true
|
|
}
|
|
|
|
function prepareFfmpegRuntime() {
|
|
let ffmpegPath = ''
|
|
try {
|
|
ffmpegPath = require('ffmpeg-static') || ''
|
|
} catch {
|
|
return
|
|
}
|
|
if (!ffmpegPath || !fs.existsSync(ffmpegPath) || process.platform === 'win32') return
|
|
fs.chmodSync(ffmpegPath, 0o755)
|
|
if (process.platform === 'darwin') {
|
|
execFileSync('/usr/bin/codesign', ['--force', '--sign', '-', ffmpegPath], {
|
|
stdio: 'ignore'
|
|
})
|
|
}
|
|
}
|
|
|
|
function main() {
|
|
prepareFfmpegRuntime()
|
|
if (process.platform !== 'win32') return
|
|
|
|
const projectRoot = path.resolve(__dirname, '..')
|
|
const sourceDir = path.join(projectRoot, 'resources', 'runtime', 'win32')
|
|
const targetDir = path.join(projectRoot, 'node_modules', 'electron', 'dist')
|
|
|
|
if (!fs.existsSync(sourceDir) || !fs.existsSync(targetDir)) return
|
|
|
|
let copiedCount = 0
|
|
for (const name of runtimeNames) {
|
|
const sourcePath = path.join(sourceDir, name)
|
|
const targetPath = path.join(targetDir, name)
|
|
if (!fs.existsSync(sourcePath)) continue
|
|
if (copyIfDifferent(sourcePath, targetPath)) copiedCount += 1
|
|
}
|
|
|
|
if (copiedCount > 0) {
|
|
console.log(`[prepare-electron-runtime] synced ${copiedCount} runtime DLL(s) to ${targetDir}`)
|
|
}
|
|
}
|
|
|
|
main()
|