From fedc1d8a33549fb35219095df20f4b38f9ab53df Mon Sep 17 00:00:00 2001 From: dqb-dev Date: Fri, 2 Oct 2026 09:15:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=83=A8=E7=BD=B2=E6=89=93?= =?UTF-8?q?=E5=8C=85=E6=8C=87=E5=8D=97:=E6=96=B0=E6=9C=BA=E5=99=A8?= =?UTF-8?q?=E4=BB=8E=20git=20=E5=85=8B=E9=9A=86=E5=88=B0=E5=8F=AF=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E5=8F=AF=E6=89=93=E5=8C=85=E7=9A=84=E5=AE=8C=E6=95=B4?= =?UTF-8?q?=E6=B5=81=E7=A8=8B(git=E5=86=85=E5=A4=96=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E6=B8=85=E5=8D=95/=E5=B7=A5=E5=85=B7=E9=93=BE/=E8=BF=90?= =?UTF-8?q?=E8=A1=8C=E6=97=B6=E8=B5=84=E6=BA=90=E4=BB=8E=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E6=81=A2=E5=A4=8D=E7=9A=84=E6=98=A0=E5=B0=84?= =?UTF-8?q?=E8=A1=A8/=E7=8E=AF=E5=A2=83=E9=AA=8C=E8=AF=81/8=E6=AD=A5?= =?UTF-8?q?=E5=8F=91=E7=89=88=E9=93=BE/=E5=B8=B8=E8=A7=81=E9=97=AE?= =?UTF-8?q?=E9=A2=98/=E6=95=B0=E6=8D=AE=E5=AE=89=E5=85=A8=E6=8F=90?= =?UTF-8?q?=E9=86=92);README=20=E5=8A=A0=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + 部署打包指南.md | 109 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 部署打包指南.md diff --git a/README.md b/README.md index 55961dd..7a52b3d 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ 电气成套设备报价桌面软件:报价三表(图号/箱号/元件)+ CAD/PDF 图纸扒图 + 元件库选型 + 公式计算 + 甲方报表,单机 SQLite 存储,可选 AI 助手与云端会员服务。 > **改代码前必读**:[代码索引.md](代码索引.md)(所有功能的文件/方法级定位 + 修改铁律) +> **新机器部署/打包必读**:[部署打包指南.md](部署打包指南.md)(从 git 克隆到可编译可打包的完整步骤 + 工具链 + 常见问题) > **组件属性手册**:`.agents\skills\sd-enhanced-components\SKILL.md`(WinForms 控件白名单、设计器规则、版本号铁律、git 推送排查手册) ## 功能概览 diff --git a/部署打包指南.md b/部署打包指南.md new file mode 100644 index 0000000..a9f1cc5 --- /dev/null +++ b/部署打包指南.md @@ -0,0 +1,109 @@ +# 成套报价软件 部署打包指南(新机器从 git 到可打包运行) + +> 适用场景:换新电脑/新人接手——git 仓库里只有源码,本文教你把一台空机器变成**可编译、可打包、可发版**的开发机。 +> 日常发版流程见 `README.md`「版本号与发版流程」或打包技能(`.agents\skills\winforms-designer-package\SKILL.md` 项目专章)。 + +## 一、为什么 clone 后不能直接打包? + +git 仓库为控制体积,**故意不存**以下运行时资源(可用其他方式恢复,见第三节): + +| 资源 | 体积 | 用途 | 恢复来源 | +|---|---|---|---| +| `licenses\`(8 份开源许可证全文) | 小 | 打包+关于窗口 | 安装目录 / 老开发机 | +| `元件库网页\`(node 静态服务数据) | ~2MB | 元件库选型功能 | 同上 | +| `cadbt\cadbt\CAD-Viewer\`(网页 CAD 引擎 dist+字体) | 大 | CAD 扒图 | 同上 | +| `cadbt\cadbt\bin\Debug\node\`(node.exe) | ~80MB | 网页服务运行时 | 同上 | +| `ai助手\zcode\`(ZCode 引擎发行包) | ~400MB | AI 助手 | 同上 / 官方 zai-org/ZCode | +| `bin\Debug\` 下运行数据(sjk 种子/shezhi 参数/xiangmu 模板/GCS 运行件/icons PNG) | ~10MB | 程序运行+打包取数 | 同上 | +| `tools\MicrosoftEdgeWebview2Setup.exe` | 2MB | 打包用 | **git 里有** ✓ | + +## 二、工具链安装(一次性) + +| 工具 | 获取 | 用途 | +|---|---|---| +| **.NET Framework 4.8 + Developer Pack** | 微软官网 NDP48-DevPack 离线包 | 编译(缺 Dev Pack 会报 MSB3644) | +| **定制版 SharpDevelop 5.2**(MSI) | 项目配套安装包,装到默认 `C:\Program Files (x86)\SharpDevelop\5.2\` | ①提供编译引用的 Smart.CustomComponents/WeifenLuo/System.Data.SQLite 等 DLL ②SD 设计器改窗体(必须是最新构建,旧包缺控件) | +| **Inno Setup 6 + 中文语言包** | 官网 + `ChineseSimplified.isl`(装法见打包技能第 3 步) | 打安装包 | +| **Python 3** | python.org | 打包脚本 make_package.py 等 | +| **git** | 任意 | 克隆/提交 | + +## 三、环境准备(一次性,装完即可反复打包) + +```powershell +# 1. 安装一次当前正式版,形成完整运行时底座 C:\成套报价软件 +# (用最新 Release 的 成套报价软件_Setup_<版本>.exe) + +# 2. 克隆仓库 +git clone http://192.168.9.43:3000/0999we/ctbjrj.git +cd ctbjrj # 即仓库根 + +# 3. 从安装目录恢复 git 外运行时资源(映射表,直接复制) +$src = 'C:\成套报价软件' +# 3a. bin\Debug 运行数据(make_package 从这里取数) +mkdir 成套报价软件\bin\Debug -Force +Copy-Item "$src\licenses" 成套报价软件\bin\Debug\licenses -Recurse +Copy-Item "$src\元件库网页" 成套报价软件\bin\Debug\元件库网页 -Recurse +Copy-Item "$src\sjk" 成套报价软件\bin\Debug\sjk -Recurse # 种子库;bjb\方案库 个人数据可不拷 +Copy-Item "$src\shezhi" 成套报价软件\bin\Debug\shezhi -Recurse # 铜排/铝排参数 +Copy-Item "$src\xiangmu" 成套报价软件\bin\Debug\xiangmu -Recurse # 报表模板 +Copy-Item "$src\GCS铜排壳体计算" 成套报价软件\bin\Debug\GCS铜排壳体计算 -Recurse +Copy-Item "$src\icons" 成套报价软件\bin\Debug\icons -Recurse # 功能区 PNG 图标 +# 3b. CAD 网页引擎 + node(打包与开发调试回退路径) +mkdir cadbt\cadbt\bin\Debug\node -Force +Copy-Item "$src\cadbt\node\node.exe" cadbt\cadbt\bin\Debug\node\node.exe +mkdir cadbt\cadbt\CAD-Viewer\packages\cad-viewer-example -Force +Copy-Item "$src\cadbt\CAD-Viewer\dist" cadbt\cadbt\CAD-Viewer\packages\cad-viewer-example\dist -Recurse +# 3c. AI 引擎发行包 +Copy-Item "$src\ai助手\zcode" ai助手\zcode -Recurse +``` + +> 老开发机仍在用时,也可以直接从老机器整目录拷贝上述内容(等价)。 +> `tools\MicrosoftEdgeWebview2Setup.exe` 在 git 里,无需另备。 + +## 四、验证环境就绪(编译+组装各跑一遍) + +```powershell +# 编译(★ 工作目录必须是 成套报价软件\ 子目录,rsp 相对路径基于它) +cd 成套报价软件 +& "C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe" "@..\tools\verify_build.rsp" /warn:1 +# 预期: 无输出无警告, ExitCode=0 + +# 组装发布目录(回仓库根跑) +cd .. +python tools\make_package.py +# 预期: "DLL 复制完成,缺失: 无" 且无 "!!" 警告 +# 首次部署若提示缺 fonts/templates/server.cjs,属正常——开发机从部署机补齐的逻辑, +# 你机器上 $src\cadbt\CAD-Viewer\dist 已含这三样,核对输出无 "!!" 即可 +``` + +两条都过 = 环境就绪,随时可打包发版。 + +## 五、日常打包发版(8 步,详见打包技能项目专章) + +``` +① tools\递增版本号.ps1 版本号+1(AssemblyInfo+setup.iss 同步) +② 杀占用进程 → 编译(同第四节) +③ python tools\make_package.py 组装发布目录 +④ ISCC release\成套报价软件\setup.iss 出 成套报价软件_Setup_<版本>.exe(~2分钟) +⑤ 改 make_update_package.py(包名带版本+本期说明)→ python 运行 出更新包 +⑥ git add -A; git commit; git push +⑦ Gitea Release:tag=v<版本>,附件=安装包+更新包(API+令牌,见技能) +⑧ 验收:装机看"关于软件"版本号 +``` + +## 六、常见问题 + +| 现象 | 原因 | 处置 | +|---|---|---| +| 编译报 CS2001 全部源文件找不到 | 工作目录错了 | 必须 `成套报价软件\` 子目录里跑 `@..\tools\verify_build.rsp` | +| 编译报缺 Smart.CustomComponents 等 | 没装定制版 SharpDevelop 或装在非默认位置 | 装 MSI 到默认目录;非默认位置需改 rsp 引用路径 | +| make_package 提示缺 icons/licenses/元件库网页 | 第三节 3a 没做 | 按映射表补拷 | +| 打出的包 CAD 打不开/缺字体 | CAD-Viewer dist 或 node 没恢复 | 按第三节 3b 补拷 | +| AI 助手起不来 | zcode 发行包缺失 | 按第三节 3c 补拷 | +| exe 被占用编译/复制失败 | 程序正在运行 | `Get-Process \| Where {$_.Path -like '*成套报价软件*'} \| Stop-Process -Force` | +| SD 设计器打不开窗体/一片 CS0246 | SharpDevelop 是旧构建 | 换最新构建的 MSI 重装(详见 sd-enhanced-components 技能第四章) | + +## 七、数据安全提醒 + +- `bin\Debug\sjk\bjb\`(项目库)、`sjk\方案库\`、`shezhi\` 企业信息是**用户数据**,换机器不要互拷(打包脚本会自动排除)。 +- git 仓库与 Release 附件不含任何用户项目数据。