10 KiB
10 KiB
成套报价软件 部署打包指南(新机器从 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"在根目录下运行"的机制从未改变。
三、环境准备(一次性,装完即可反复打包)
# 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 本体获取(两条路)
- 软件内下载(有网):PDF 扒图 → OCR 设置 → 选 Umi-OCR 引擎 → "下载 OCR 本体"(从用户网盘直链下载 ~179MB zip,自动解压安装到 exe 旁
Umi-OCR\)。 - 离线拷贝(无网):从任一已装 Umi-OCR 本体的机器,把
Umi-OCR\整目录拷到软件根目录(与 exe 同级)。它是绿色软件,拷完即用,无需安装。
WebView2 离线安装(内网装机重点)
安装包对缺 WebView2 的机器会自动跑 MicrosoftEdgeWebview2Setup.exe 静默补装——但该引导程序需联网从微软 CDN 下载。完全离线的内网装机:
- 提前在有网的机器下载 WebView2 离线完整安装包(微软官网 Standalone Installer,x86 版,与软件 32 位一致);
- 装软件前先手动装它(或放进装机 U 盘/共享目录);
- 判断机器是否已有:控制面板→程序里找"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\ |
按上表离线拷贝方式 |
四、验证环境就绪(编译+组装各跑一遍)
# 编译(★ 工作目录必须是 成套报价软件\ 子目录,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 附件不含任何用户项目数据。