165 lines
10 KiB
Markdown
165 lines
10 KiB
Markdown
# 成套报价软件 部署打包指南(新机器从 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 附件不含任何用户项目数据。
|