EG/build_scripts/PACKAGING_CHECKLIST.md

7.0 KiB
Raw Blame History

EG 项目打包清单

本文档详细说明安装程序中包含的内容,以及打包决策依据。


📦 打包内容总览

代码部分 (由 Nuitka 编译)

入口文件 处理方式 说明
Start_Run.py 编译为主程序 应用入口
main.py 被导入编译 主程序逻辑
core/ 编译进可执行文件 核心模块
gui/ 编译进可执行文件 GUI模块
project/ 编译进可执行文件 项目管理
scene/ 编译进可执行文件 场景管理
ssbo_component/ 编译进可执行文件 SSBO组件
tools/ 编译进可执行文件 工具模块
TransformGizmo/ 编译进可执行文件 变换工具
ui/ 编译进可执行文件 UI模块

数据资源 (复制到输出目录)

目录/文件 用途 必要性
config/ 配置文件 必须
icons/ 图标资源 必须
RenderPipelineFile/ 渲染管线 必须
Resources/ 资源文件 必须
scripts/ 脚本系统 必须
templates/ 项目模板 必须
tex/ 纹理资源 必须
vr_actions/ VR配置 必须
imgui.ini ImGui配置 必须

⚠️ 需要确认的问题

问题 1: project/ 目录

现状: 当前配置中 未包含 project/ 目录

分析:

  • project/ 包含 project_manager.py, webgl_packager.py, __init__.py
  • main.py 中导入: from project.project_manager import ProjectManager

结论: ⚠️ 必须包含! 否则项目管理功能无法工作

建议操作: 添加到 DATA_DIRECTORIES

DATA_DIRECTORIES = [
    # ... 现有目录 ...
    "project",  # 添加此行
]

问题 2: new/ 目录

现状: 当前配置中 未包含

分析:

  • 包含 project.json (空项目模板)
  • 可能是"新建项目"的默认模板

结论: 建议包含 作为默认项目模板

建议操作: 添加到 DATA_DIRECTORIES


问题 3: test_project/ 目录

现状: 当前配置中 未包含

分析:

  • 包含示例 project.json
  • 可用于演示功能

选项:

  1. 不包含 - 减小安装包体积
  2. 包含为可选组件 - 用户可选择安装
  3. 包含 - 方便新用户学习

建议: 选项 1 或 3根据安装包大小决定


问题 4: Python 缓存文件

现状: 已排除 __pycache__, *.pyc, *.pyo, *.pyd

分析: 正确,这些是由 Python 运行时生成的缓存,不需要分发


问题 5: 开发环境文件

现状: 已排除 .git, .gitignore, .idea, .vscode

分析: 正确,这些是开发环境配置,用户不需要


问题 6: 构建脚本

现状: build_scripts/ 未包含

分析: 正确,构建脚本不需要分发给最终用户


问题 7: 依赖文件

现状: requirements/ 未包含

分析:

  • 最终用户不需要 requirements.txt(依赖已编译进可执行文件)
  • 但如果提供 SDK/开发套件,可能需要

结论: 当前处理正确


🔧 修正后的配置

更新 DATA_DIRECTORIES

# ==================== 数据文件配置 ====================
# 需要包含的目录 (相对于项目根目录)
DATA_DIRECTORIES = [
    # 配置和资源
    "config",
    "icons",
    "Resources",
    "tex",
    "templates",
    
    # 核心模块 (这些目录中的 .py 文件会被编译,但可能包含非 .py 资源)
    "core",              # 核心功能
    "gui",               # GUI相关
    "project",           # ⚠️ 新增: 项目管理 (包含非代码资源)
    "scene",             # 场景管理
    "scripts",           # 脚本系统
    "ssbo_component",    # SSBO编辑器
    "tools",             # 工具模块
    "TransformGizmo",    # 变换Gizmo
    "ui",                # UI模块
    
    # 引擎和扩展
    "RenderPipelineFile", # 渲染管线
    "vr_actions",         # VR配置
    
    # 示例和模板
    "new",                # ⚠️ 新增: 默认项目模板
    # "test_project",     # 可选: 示例项目
]

Nuitka 包含包确认

当前配置:

"include_packages": [
    "Panda3D",
    "direct",
    "imgui_bundle",
    "p3dimgui",
    "openvr",
    "PIL",
    "yaml",
    "psutil",
],

需要添加:

  • 检查 requirements.txt 中的其他依赖是否需要显式包含

📊 打包体积预估

目录 估算大小 说明
RenderPipelineFile/ ~50-100 MB 渲染管线核心
Resources/ 可变 用户资源
tex/ ~10-50 MB 默认纹理
icons/ ~1-5 MB 图标
其他代码目录 ~5-10 MB Python 源文件(编译前)
总计 ~100-200 MB 不含用户资源

打包检查清单

构建前请确认

目录配置

  • config/ - 配置目录
  • core/ - 核心模块
  • gui/ - GUI模块
  • icons/ - 图标资源
  • project/ - 项目管理 (已添加)
  • RenderPipelineFile/ - 渲染管线
  • Resources/ - 资源文件
  • scene/ - 场景管理
  • scripts/ - 脚本系统
  • ssbo_component/ - SSBO组件
  • templates/ - 模板
  • tex/ - 纹理
  • tools/ - 工具
  • TransformGizmo/ - 变换工具
  • ui/ - UI模块
  • vr_actions/ - VR配置
  • new/ - 默认项目模板 (已添加)

文件检查

  • icons/app.ico - Windows图标 ⚠️ 需要添加
  • icons/app.png - Linux图标 ⚠️ 需要添加
  • imgui.ini - ImGui配置
  • Start_Run.py - 入口脚本
  • main.py - 主程序

清理检查

  • 排除了所有 __pycache__.pyc 文件
  • 排除了开发环境文件 (.idea, .vscode)
  • 排除了构建目录 (build_scripts, dist, build)
  • 排除了 .git 目录

功能验证

  • 测试构建成功
  • 测试安装程序能正常运行
  • 测试便携版能正常运行
  • 验证项目管理功能正常
  • 验证新建项目功能正常

🧪 验证方法

构建完成后,验证以下内容:

# Windows
# 1. 检查输出目录结构
tree /f dist\EG_1.0.0

# 2. 运行程序测试基本功能
dist\EG_1.0.0\EG.exe

# 3. 检查关键文件是否存在
Test-Path dist\EG_1.0.0\config
Test-Path dist\EG_1.0.0\Resources
Test-Path dist\EG_1.0.0\scripts
# Linux
# 1. 检查 AppImage 内容
./dist/EG-1.0.0-x86_64.AppImage --appimage-mount

# 2. 运行测试
./dist/EG-1.0.0-x86_64.AppImage

🔒 安全注意事项

  1. 代码保护: Nuitka 编译后的机器码难以逆向,但资源文件(模型、纹理)是明文的
  2. 敏感配置: 确保 config/ 中没有包含 API 密钥等敏感信息
  3. 许可证: 如果包含第三方资源,确保许可证允许再分发

文档版本: 1.0
最后更新: 2024年