# 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`

```python
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

```python
# ==================== 数据文件配置 ====================
# 需要包含的目录 (相对于项目根目录)
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 包含包确认

当前配置:

```python
"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** | 不含用户资源 |

---

## ✅ 打包检查清单

### 构建前请确认

#### 目录配置

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

#### 文件检查

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

#### 清理检查

- [x] 排除了所有 `__pycache__` 和 `.pyc` 文件 ✅
- [x] 排除了开发环境文件 (`.idea`, `.vscode`) ✅
- [x] 排除了构建目录 (`build_scripts`, `dist`, `build`) ✅
- [x] 排除了 `.git` 目录 ✅

#### 功能验证

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

---

## 🧪 验证方法

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

```powershell
# 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
```

```bash
# 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年
