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

7.0 KiB
Raw Blame History

成套报价软件 部署打包指南(新机器从 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\ 仅改窗体布局时需要(SD 设计器);命令行编译/打包不需要——2026-10-01 起全部依赖 DLL 已本地化到 lib\(22 个),clone 即可编译
Inno Setup 6 + 中文语言包 官网 + ChineseSimplified.isl(装法见打包技能第 3 步) 打安装包
Python 3 python.org 打包脚本 make_package.py 等
git 任意 克隆/提交

依赖本地化说明(2026-10-01):csproj 与 verify_build.rsp 的全部第三方引用(Smart.CustomComponents、WeifenLuo×2、System.Data.SQLite、log4net、System.Memory/Numerics/Unsafe/Resources.Extensions 等)已统一指向项目内 成套报价软件\lib\,不再引用 Program Files\SharpDevelop 或 F 盘源码仓。新增/升级依赖 DLL 一律放 lib\ 并同步 csproj+rsp。

三、环境准备(一次性,装完即可反复打包)

# 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 里,无需另备。

四、验证环境就绪(编译+组装各跑一遍)

# 编译(★ 工作目录必须是 成套报价软件\ 子目录,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 等 lib\ 目录不完整 核对 成套报价软件\lib\ 应有 22 个 DLL(git 里有);2026-10-01 后不再依赖装 SharpDevelop
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 附件不含任何用户项目数据。