资讯详情

Delphi 12.3 下 TMS SmartSetup 包管理与依赖分发实战

📅 2026/10/2 22:36:29 | 华诺云谱 👁 阅读
Delphi 12.3 下 TMS SmartSetup 包管理与依赖分发实战
简介这份资源是面向Delphi 12.3开发者的TMS Software SmartSetup组件包专为需要为Windows应用程序制作专业安装程序的开发者准备。SmartSetup以可视化方式替代手写安装脚本支持安装向导设计、快捷方式与注册表项配置、32/64位系统兼容、多语言界面、皮肤主题、预安装与后安装脚本、压缩解压以及更新卸载等功能适合中高级Delphi程序员在项目发布阶段使用。压缩包共321个文件约1.51MB以188个pas源码单元、19个dpk包文件、21个dproj工程、19个groupproj项目组及若干res资源、dfm窗体、dpr与bat脚本为主另含yaml配置、md说明和dll依赖结构完整便于二次开发与集成。目前已有51人学习下载。通过其中的源码、示例项目与安装模板读者可快速掌握安装向导定制、脚本扩展与多语言部署思路为Delphi应用构建高质量安装体验。1. Delphi 12.3 下拿到 tmssoftwaresmartsetup-main.zip 之后这套控件到底解决什么问题如果你是从 GitHub 或某个资源站下载到tmssoftwaresmartsetup-main.zip第一反应大概率是「这压缩包怎么用、里面是不是安装程序、Delphi 12.3 能不能直接吃」。先说结论TMS Software 的 SmartSetup 本质是一个包管理与依赖分发工具不是传统意义上双击setup.exe一路下一步的安装器。它把 TMS 自家几十个控件包VCL、FMX、FNC 系列的版本、依赖、编译顺序统一管理起来你给它一个目标 IDE 版本它负责把源码拉下来、按正确顺序编译、注册进 IDE 的包列表。这件事在 Delphi 12.3 上尤其重要。Delphi 12.3 用的是新版编译器与运行时包结构很多老控件包如果手工一个个Install Packages会出现「先装的依赖没编译、后装的找不到单元」的连锁报错。SmartSetup 的价值就在于把「编译顺序」这件事从人脑里挪到工具里。适合谁手上有一堆 TMS 控件、又不想每次升级 IDE 就重装一遍的 Delphi 开发者以及第一次接触 TMS 生态、被dcu not found折磨过的人。需要先厘清一点tmssoftwaresmartsetup-main.zip这个命名里的-main通常意味着它是某个仓库的主分支快照而不是官方发布的带版本号的安装包。这意味着你拿到的可能是源码形态的 SmartSetup 本体需要先把它跑起来再用它去拉真正的控件包。这个区别决定了后面所有操作路径别一上来就找setup.exe找不到是正常的。2. 先搞清楚 SmartSetup 的工作模型它凭什么能自动排编译顺序2.1 它不是安装器是「订阅 编译编排器」传统控件安装是「我给你一个包你编译它」。SmartSetup 是「我告诉你我要哪些包、目标 IDE 是哪个版本你去把源码、依赖、编译参数凑齐」。它内部维护了一份清单记录每个控件包依赖哪些基础包、需要哪些编译开关、在 VCL 和 FMX 下分别怎么编。你选Delphi 12.3 Win32和Delphi 12.3 Win64它会分别处理因为这两者的运行时包不通用。理解这一点后很多「玄学」就解释得通了为什么 SmartSetup 跑完IDE 里多出来一堆TMS*开头的包而不是你选的那一个。因为它把依赖链上的包全注册了这是设计如此不是装多了。2.2 目录结构与关键文件解压tmssoftwaresmartsetup-main.zip后典型结构大致是这样不同快照会有差异以你实际解压为准路径/文件作用TMSSmartSetup.exe或对应可执行主程序入口负责 UI 和调度*.json/*.xml配置记录可用产品、版本、下载源Setup/Scripts目录编译脚本、批处理模板README/*.txt使用说明务必先读如果解压后没有可执行文件只有源码.dpr、.pas那说明你拿到的是需要自己先编译的版本。这种情况在-main快照里很常见。2.3 为什么必须先确认 IDE 版本再动手SmartSetup 在编译时会读取注册表或环境变量定位 Delphi 12.3 的安装路径拿到bds.exe、dcc32.exe、dcc64.exe的位置。如果它定位到的是旧版本 IDE编译出来的包注册进 12.3 会直接报版本不匹配。所以第一步永远是确认它认对了 IDE。# 在解压目录下先看有没有可执行入口 dir /b *.exe # 如果只有源码找主工程文件 dir /b *.dpr *.groupproj上面两条命令是排查起点有.exe就直接跑只有.dpr/.groupproj就得先用 Delphi 12.3 打开编译。逻辑很简单——先确定你手里是「成品工具」还是「工具的半成品」这决定了后面是配置还是先构建。3. 在 Delphi 12.3 上把 SmartSetup 跑起来的最小路径3.1 解压与入口确认先把 zip 解到一个不含中文、不含空格的路径比如D:\TMS\smartsetup。Delphi 的编译脚本对路径里的空格和中文容忍度很低这是血泪经验别图省事放桌面。# 推荐用命令行解压避免资源管理器解压丢文件 powershell -Command Expand-Archive -Path tmssoftwaresmartsetup-main.zip -DestinationPath D:\TMS\smartsetup -Force用 PowerShell 的Expand-Archive而不是右键「解压到当前文件夹」是因为部分 zip 里带长路径或特殊字符文件资源管理器解压可能静默跳过。-Force表示覆盖已存在文件重复解压时省事。3.2 如果拿到的是源码先编译出可执行打开*.groupproj在 Delphi 12.3 里 Build 整个工程组。注意编译目标平台要选 Win32 还是 Win64取决于 SmartSetup 本体是 32 位还是 64 位程序。编译报错时优先看是不是缺了某个第三方库比如 JSON 解析库这类依赖通常在 README 里会写。// 编译前确认工程选项里的输出路径 // Project Options Delphi Compiler Output directory // 建议设为 .\bin避免和源码混在一起这段不是代码逻辑是工程配置提醒输出目录单独放后面找可执行文件、清理重编都方便。参数上Output directory设成相对路径.\binUnit output directory设成.\dcu两者分开避免 dcu 污染源码目录。3.3 首次运行与 IDE 识别双击运行后SmartSetup 一般会让你选目标 IDE。如果列表里没有 Delphi 12.3说明它没扫到注册表项。常见原因是 Delphi 12.3 装在了非默认路径或者注册表被清理工具动过。这时手动指定bds.exe路径即可。# 手动确认 Delphi 12.3 的安装位置 reg query HKLM\SOFTWARE\Embarcadero\BDS\23.0 /v RootDir23.0是 Delphi 12.x 对应的 BDS 版本号段12.0 起为 23.0。如果这条查不到就换成HKCU再查一遍或者直接在文件系统里找bds.exe。拿到RootDir后在 SmartSetup 里手动指向它。4. 用 SmartSetup 拉取并安装 TMS 控件包参数怎么设4.1 选择产品与目标平台进入主界面后你会看到一长串产品列表FNC、VCL UI Pack、FMX 系列等。这里的关键决策是只选你真正要用的。全选会导致编译时间成倍增长而且某些包之间可能有版本约束全选反而容易冲突。平台选择上Win32 和 Win64 要分开勾。如果你只做 32 位程序就别勾 64 位省一半编译时间。Android/iOS 目标需要额外配置 SDK第一次跑建议先不碰。4.2 编译输出与包注册SmartSetup 编译完成后会把生成的.bpl注册进 IDE。注册信息写在注册表的Known Packages下。如果编译成功但 IDE 里看不到控件八成是注册这一步没走通。# 查看已注册的包 reg query HKCU\SOFTWARE\Embarcadero\BDS\23.0\Known Packages这条命令列出当前 IDE 认识的所有包路径。如果 TMS 的.bpl不在里面说明注册失败。解决方式是回到 SmartSetup 里重新执行「Install」步骤或者手动在 IDE 的Component Install Packages里 Add 那个 bpl。4.3 关键参数编译开关与搜索路径SmartSetup 在编译时会往工程里注入搜索路径Library Path。这些路径指向 TMS 源码目录。如果你后续手工建工程发现找不到 TMS 单元就是 Library Path 没带上。参数建议值说明目标平台Win32 / Win64 按需别全勾编译模式ReleaseDebug 会拖慢首次编译搜索路径注入自动别手动改改了容易和 SmartSetup 打架输出目录独立于源码便于清理提示首次安装完成后先在 IDE 里新建一个空 VCL 工程拖一个 TMS 控件上去编译一次。这一步能验证「包注册 搜索路径」是否真的通了比直接上项目稳妥。5. 避坑与排查tmssoftwaresmartsetup 在 12.3 上最容易翻车的 5 个点5.1 现象编译报dcu not found但包明明装了原因搜索路径没注入到当前工程或者注入的是旧版本 IDE 的路径。SmartSetup 注入的是全局 Library Path但如果你工程里用了{$LIBRARYPATH}之类的覆盖就会失效。解决打开Project Options Delphi Compiler Search Path确认 TMS 源码路径在列表里。不在就手动加或者重新跑一遍 SmartSetup 的路径注入步骤。5.2 现象解压 zip 时报「invalid zip archive: could not find eocd」原因下载不完整或者用了不支持 zip64 的老解压工具。tmssoftwaresmartsetup-main.zip如果体积较大可能用了 zip64 格式。解决换 7-Zip 或新版 WinRAR 解压别用系统自带的老接口。重新下载一遍确保文件完整。5.3 现象SmartSetup 认到了 Delphi 但编译到一半卡死原因杀毒软件实时扫描在编译大量.pas时拖慢 IO或者某个包的编译脚本在等一个不存在的环境变量。解决把 TMS 源码目录和输出目录加入杀毒白名单。然后看 SmartSetup 的日志一般在Logs目录定位卡在哪个包单独处理。5.4 现象IDE 里控件面板有 TMS 页签但拖控件报「class not registered」原因.bpl注册了但对应的.dcp/.dcu没编出来或者 32/64 位混了。你在 64 位工程里拖了一个只编了 32 位的包。解决确认目标平台和已编译平台一致。在 SmartSetup 里把 Win64 也勾上重编一遍。5.5 现象升级 Delphi 12.3 小版本后TMS 控件全部失效原因Delphi 小版本升级会改 BDS 版本号段或运行时包结构旧编译产物不兼容。解决不用慌重跑一遍 SmartSetup让它按新 IDE 重新编译注册。这也是用 SmartSetup 而不是手工装的最大好处——重装成本低。6. 进阶把 SmartSetup 纳入团队构建流程的一个具体做法单人开发时SmartSetup 点几下就完事。但团队里每个人 IDE 环境不同靠「你装一遍我装一遍」迟早出乱子。我一般会把 SmartSetup 的命令行模式接进构建脚本让新机器一条命令拉起环境。SmartSetup 通常支持静默/命令行参数具体参数名以你手上版本的 README 为准不同快照有差异。思路是把「选哪些产品、目标平台、IDE 路径」写成一个配置文件构建脚本读它调 SmartSetup 执行最后校验注册表里包是否齐全。# 伪代码示意先跑 SmartSetup 静默安装再校验 TMSmartSetup.exe --config team-tms.json --silent reg query HKCU\SOFTWARE\Embarcadero\BDS\23.0\Known Packages | findstr /i TMS第一行是调用参数名按实际改第二行是校验如果findstr没输出说明注册没成功脚本就该报错退出而不是让开发者带着半残环境去写代码。这个校验步骤是我踩过坑之后加的——曾经有台机器 SmartSetup 显示成功实际注册表没写进去结果全组排查了一下午。配置文件的字段建议至少包含ideVersion、platforms、products、outputDir。products用数组别用逗号分隔字符串解析起来省事。outputDir指向一个团队共享盘或每台机器本地固定路径别用相对路径因为构建脚本的工作目录不一定在哪。验证方法上除了查注册表还可以让脚本编译一个「探针工程」——一个引用了 TMS 核心单元的极小.dpr能编过就说明环境 OK。这比查注册表更接近真实使用场景因为注册表对了但搜索路径错了的情况也发生过。最后说个习惯每次升级 Delphi 或 TMS 版本先在一台机器上跑通全流程把配置文件更新好再推给团队。别让所有人同时踩同一个坑。这套东西的价值不在于省那几次点击而在于把「环境」变成可复现、可校验的东西。希望帮到你。本文还有配套的精品资源点击获取
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑