Files
ctbjrj/部署打包指南.md
T

165 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 成套报价软件 部署打包指南(新机器从 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\` | ①提供编译引用 DLL(csproj/rsp 引用指向它,**保持原目录结构不改**)②SD 设计器改窗体(必须是最新构建,旧包缺控件) |
| **Inno Setup 6 + 中文语言包** | 官网 + `ChineseSimplified.isl`(装法见打包技能第 3 步) | 打安装包 |
| **Python 3** | python.org | 打包脚本 make_package.py 等 |
| **git** | 任意 | 克隆/提交 |
> **依赖副本说明(2026-10-01)**:项目内 `成套报价软件\lib\` 备有全套 22 个依赖 DLL 副本(含 WeifenLuo×2、System.Data.SQLite、log4net、System.Memory 等),**供新机器铺 bin\Debug 运行目录用**(上表 3a 的 Copy-Item);csproj/rsp 的编译引用**保持原目录结构不变**(指向 SharpDevelop 安装目录),编译机需装定制版 SharpDevelop。运行时 DLL 一律从 exe 旁(安装目录根 / bin\Debug)加载——DLL"在根目录下运行"的机制从未改变。
## 三、环境准备(一次性,装完即可反复打包)
```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
# ★ 依赖 DLL 全部从项目内 lib\ 复制(自包含,不依赖外部环境)
Copy-Item 成套报价软件\lib\*.dll 成套报价软件\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 里,无需另备。
## 三·五、CAD 扒图 / PDF 扒图 运行环境与缺失文件补齐
### CAD 扒图依赖链(缺一样就打不开图纸/服务起不来)
| 依赖 | 位置(安装机) | 缺失表现 | 无互联网时怎么补 |
|---|---|---|---|
| **node.exe** | `{app}\cadbt\node\node.exe` | CAD 网页服务(端口 5173)起不来,提示"无法连接网页 CAD 服务" | 从任一装好软件的机器拷 `cadbt\node\` 整目录(node 是绿色单文件,拷贝即用) |
| **CAD-Viewer 网页引擎 dist** | `{app}\cadbt\CAD-Viewer\dist\`(index.html/assets/server.cjs/**fonts 中文字体库**/templates) | 图纸打开文字乱码/缺字(fonts 缺)、服务 404 | 从装好的机器拷 `cadbt\CAD-Viewer\dist\` 整目录 |
| **WebView2 运行时** | 系统级(随 Edge 分发) | 所有内嵌网页窗口全黑/空白 | 见下方"WebView2 离线安装" |
| 蒙版数据 | `{app}\cadbt\扒图蒙版\` | 无(运行时自建) | 不需要 |
### PDF 扒图依赖链
| 依赖 | 位置 | 缺失表现 | 无互联网时怎么补 |
|---|---|---|---|
| **pdfium.dll**(x86 渲染引擎) | `{app}\pdfium.dll`(安装包必带,lib\ 也有副本) | PDF 打不开 | 安装包自带;开发机从 `lib\pdfium.dll` 复制到 bin\Debug |
| **OCR 引擎(五选一)** | 见下表 | 扒不出文字 | 见下表 |
### OCR 引擎的网络需求(离线环境选型)
| 引擎 | 需要互联网 | 离线环境可用 | 离线补齐方式 |
|---|---|---|---|
| 百度 OCR(默认) | ✅ 需联网调 API | ❌ | — |
| 智谱 GLM-OCR | ✅ | ❌ | — |
| 百度千帆 PaddleOCR-VL | ✅ | ❌ | — |
| UApiPro | ✅ | ❌ | — |
| **Umi-OCR 本地** | ❌ **完全离线免费** | ✅ **离线环境唯一选择** | 见下 |
### Umi-OCR 本体获取(两条路)
1. **软件内下载(有网)**:PDF 扒图 → OCR 设置 → 选 Umi-OCR 引擎 → "下载 OCR 本体"(从用户网盘直链下载 ~179MB zip,自动解压安装到 exe 旁 `Umi-OCR\`)。
2. **离线拷贝(无网)**:从任一已装 Umi-OCR 本体的机器,把 `Umi-OCR\` 整目录拷到软件根目录(与 exe 同级)。它是绿色软件,拷完即用,无需安装。
### WebView2 离线安装(内网装机重点)
安装包对缺 WebView2 的机器会自动跑 `MicrosoftEdgeWebview2Setup.exe` 静默补装——**但该引导程序需联网从微软 CDN 下载**。完全离线的内网装机:
1. 提前在有网的机器下载 WebView2 **离线完整安装包**(微软官网 Standalone Installer,x86 版,与软件 32 位一致);
2. 装软件前先手动装它(或放进装机 U 盘/共享目录);
3. 判断机器是否已有:控制面板→程序里找"Microsoft Edge WebView2 运行时",或看注册表 `HKLM\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}`。Win10/11 装过 Edge 浏览器的一般已自带。
### 开发机调试的对应路径(clone 后调试扒图功能)
| 资源 | 开发机应放位置 | 来源 |
|---|---|---|
| node.exe | `cadbt\cadbt\bin\Debug\node\node.exe` | 安装目录 `cadbt\node\`(即第三节 3b) |
| dist 网页引擎 | `cadbt\cadbt\CAD-Viewer\packages\cad-viewer-example\dist\` | 安装目录 `cadbt\CAD-Viewer\dist\`(即第三节 3b) |
| pdfium.dll | `成套报价软件\bin\Debug\pdfium.dll` | `成套报价软件\lib\pdfium.dll` 复制 |
| Umi-OCR 本体 | `成套报价软件\bin\Debug\Umi-OCR\` | 按上表离线拷贝方式 |
## 四、验证环境就绪(编译+组装各跑一遍)
```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 到默认目录;非默认位置需改 csproj/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 附件不含任何用户项目数据。