## 开发说明(开发 / 打包 / 安装 / 更新) ### 运行环境 - **系统**:Windows 10/11 - **Python**:建议与当前项目一致的版本(你本机是 3.14) - **依赖**:见 `requirements.txt` 安装依赖: ```powershell python -m pip install -r requirements.txt python -m pip install pyinstaller ``` ### 本地运行 ```powershell python main.py ``` ### 版本号 - **版本号来源**:`app_info.py` 里的 `__VERSION__` - **安装包 AppVersion**:由 `installer/build_installer.py` 自动从 `app_info.py` 注入到 `installer/niumasoftware.generated.iss` ### 数据库存储与结构升级(SQLite Migration) - **数据文件位置**:默认在 `%APPDATA%\CleanDesktopOrganizer\data.db`(不在安装目录,不会被覆盖更新影响) - **结构升级**:在 `db/database.py` 内通过 `schema_version` 做版本化迁移 - 新增表/字段/索引:新增一个迁移版本并提升 `LATEST_SCHEMA_VERSION` - 启动时 `init_db()` 自动从旧版本迁移到最新 ### 一键打包(推荐) 项目根目录直接运行: ```powershell .\build_installer.bat ``` 它会自动完成: - 清理 `build/`、`dist/` - PyInstaller 打包主程序(onedir)到 `dist\niumasoftware\` - PyInstaller 打包更新助手(onefile)到 `dist\niumasoftware\update_helper.exe` - 生成 `installer\niumasoftware.generated.iss` - 若检测到 Inno Setup 的 `ISCC.exe`,则自动编译安装包 ### 手动打包(PyInstaller) 主程序(onedir): ```powershell python -m PyInstaller --noconfirm --onedir --name niumasoftware --windowed ` --icon "logo.ico" ` --add-data "assets;assets" ` --add-data "logo.png;." ` main.py ``` 更新助手(onefile,统一输出到 `dist\niumasoftware`): ```powershell python -m PyInstaller --noconfirm --onefile --name update_helper --console --distpath dist\niumasoftware ` --icon "logo.ico" ` update_helper.py ``` 产物约定(用于安装包脚本): - `dist\niumasoftware\niumasoftware.exe` - `dist\niumasoftware\update_helper.exe` ### 生成安装包(Inno Setup) 1) 生成带版本号的最终脚本: ```powershell python installer/build_installer.py ``` 2) 用 Inno Setup Compiler 编译: - `installer/niumasoftware.generated.iss` ### 全局安装后的静默覆盖更新(计划任务) 由于安装目录通常在 `Program Files`,普通权限无法覆盖 exe。 实现方式(已内置): - 主程序下载更新到:`{commonappdata}\CleanDesktopOrganizer\updates\_update_new.exe` - 写入请求:`{commonappdata}\CleanDesktopOrganizer\update_request.json` - 触发计划任务:`schtasks /Run /TN CleanDesktopOrganizer\Update` - 计划任务以 **SYSTEM** 执行 `{app}\update_helper.exe` 覆盖并重启