修改打包文件

This commit is contained in:
xunbu
2025-08-21 16:14:50 +08:00
parent c4fbbc2fb4
commit 79273f0ed1
5 changed files with 151 additions and 121 deletions

View File

@@ -1,32 +1,27 @@
# -*- mode: python ; coding: utf-8 -*-
from PyInstaller.utils.hooks import collect_data_files
import docutranslate
# 导入 os 模块以更好地处理路径
import os
from PyInstaller.utils.hooks import collect_all
# --- 数据文件和二进制文件 ---
# 路径分隔符已更正为 '/',这在所有平台上都更具兼容性
datas = [
('./docutranslate/static', 'docutranslate/static'),
('./docutranslate/template', 'docutranslate/template')
]
binaries = []
hiddenimports=['markdown.extensions.tables','pymdownx.arithmatex','pymdownx.superfences','pymdownx.highlight','pygments']
# 使用 collect_all 来收集依赖
# 这部分代码是跨平台的,无需修改
for i in ['pygments']:
tmp_ret = collect_all(i)
datas += tmp_ret[0]
binaries += tmp_ret[1]
hiddenimports += tmp_ret[2]
# 只收集 pygments 的数据文件
datas += collect_data_files('pygments')
hiddenimports = [
'markdown.extensions.tables',
'pymdownx.arithmatex',
'pymdownx.superfences',
'pymdownx.highlight',
'pygments'
]
# --- 分析阶段 ---
a = Analysis(
# 【修改 1】: 使用正斜杠 '/' 作为路径分隔符
['docutranslate/app.py'],
pathex=[],
binaries=binaries,
binaries=[],
datas=datas,
hiddenimports=hiddenimports,
hookspath=[],
@@ -39,49 +34,23 @@ a = Analysis(
pyz = PYZ(a.pure)
# --- EXE 和 COLLECT 阶段 ---
# EXE 仅创建 Unix 可执行文件
exe = EXE(
pyz,
a.scripts,
[], # binaries 和 datas 移到下面的 BUNDLE/COLLECT 中
a.binaries,
a.datas,
[],
name='DocuTranslate',
name=f'DocuTranslate-{docutranslate.__version__}-mac',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
runtime_tmpdir=None,
# 【修改 2】: 如果是 GUI 应用,建议设为 False
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None, # 推荐 'universal2' 以支持 Apple Silicon 和 Intel
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)
# --- BUNDLE 阶段 (macOS 核心) ---
# 【修改 3】: 使用 BUNDLE 创建 .app 包,而不是单独的 EXE
# 这将生成一个标准的 macOS 应用程序
app = BUNDLE(
exe,
name='DocuTranslate.app',
# 【修改 4】: 使用 .icns 格式的图标
icon='DocuTranslate.icns',
bundle_identifier='cc.xunbu.docutranslate', # 推荐设置一个唯一的包标识符
info_plist={
'NSHighResolutionCapable': 'True',
'NSPrincipalClass': 'NSApplication',
'NSAppleScriptEnabled': False,
'CFBundleDisplayName': 'DocuTranslate',
'CFBundleName': 'DocuTranslate',
'CFBundleVersion': '1.0.0',
'CFBundleShortVersionString': '1.0',
'NSHumanReadableCopyright': 'Copyright © 2023 Your Name. All rights reserved.'
}
)
# 将 a.datas 和 a.binaries 添加到 .app 包中
app.datas += a.datas
app.binaries += a.binaries
)