# -*- coding: utf-8 -*- """ 企业微信导出助手 - 一键打包脚本 用法: python build.py (或双击 build.bat) 输出: dist/企业微信导出助手.exe """ import os import shutil import subprocess BASE = os.path.dirname(os.path.abspath(__file__)) PYTHON = r"C:\Users\pc\.workbuddy\binaries\python\envs\gui311\Scripts\python.exe" DIST = os.path.join(BASE, "dist") build_dir = os.path.join(BASE, "build") # PyInstaller 中间产物, 每次自动覆盖, 无需手动清理 cmd = [ PYTHON, "-m", "PyInstaller", "--onefile", # 单文件 "--windowed", # 无控制台窗口 (GUI 应用) "--name", "企业微信导出助手", "--icon", "app_icon.png", "--add-data", "app_icon.png;.", "--hidden-import", "wxwork_export_media", "--hidden-import", "wxwork_voice2text", # 语音转文字 ASR 兜底 (懒加载, 未勾选时不影响启动速度) "--hidden-import", "pilk", "--hidden-import", "faster_whisper", "--hidden-import", "ctranslate2", "--hidden-import", "tokenizers", "--hidden-import", "av", "--hidden-import", "onnxruntime", "wxwork_gui.py", "--distpath", DIST, "--workpath", build_dir, "--specpath", BASE, ] print(">> 执行:", " ".join(cmd)) subprocess.check_call(cmd, cwd=BASE) # exe 运行时需要从同目录读取密钥文件, 打包后自动同步一份 src_key = os.path.join(BASE, "wxwork_keys.json") if os.path.exists(src_key): shutil.copy2(src_key, os.path.join(DIST, "wxwork_keys.json")) print(">> 已同步 wxwork_keys.json 到 dist/") exe_path = os.path.join(DIST, "企业微信导出助手.exe") print("") print("打包完成: " + exe_path) print("文件大小: %.1f MB" % (os.path.getsize(exe_path) / 1024 / 1024)) # 自动打开输出目录, 方便直接看到 exe try: os.startfile(DIST) # type: ignore[attr-defined] print("已自动打开输出目录: " + DIST) except Exception: pass