做安装包版本

This commit is contained in:
2026-04-07 23:21:58 +08:00
parent d583e711f0
commit 920d142d9c
11 changed files with 669 additions and 42 deletions
+97
View File
@@ -0,0 +1,97 @@
## 开发说明(开发 / 打包 / 安装 / 更新)
### 运行环境
- **系统**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` 覆盖并重启