ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

DevExpress VCL 20.2.4 for RAD Studio 10.4 安装配置与老项目维护指南

2026/10/7 21:40:41 拓冰建站 浏览量
DevExpress VCL 20.2.4 for RAD Studio 10.4 安装配置与老项目维护指南 简介DevExpress VCL 20.2.4 是面向 RAD Studio 10.4 的 Delphi/CBuilder 界面组件库内置数据网格、图表、编辑器、导航等常用控件并涵盖工具栏、报表、日程等扩展模块适合需要快速构建专业桌面应用的 VCL 开发者。该版本为官方编译发布不含源码压缩包约 362.21MB采用 7z 格式由于上传方未提供文件总数与类型明细具体文件清单暂无法列出。资源随附中文使用说明重点提示了本版没有 DCU 文件、编译后的 EXE 在目标机运行需依赖 BPL 包并给出在项目 Options 中链接运行时包的完整路径帮助规避“装完不能编译、运行报错”的常见坑同时官方编译版省去了从源码构建组件的环节可明显缩短环境准备时间。已有 1959 人学习下载主要面向希望免去源码编译步骤、快速获得可用组件的 VCL 开发者按说明完成配置后即可集成到开发环境并正常构建应用。1. 老项目还值得为 DevExpress VCL 20.2.4 单独建一篇文档它解决的是“能在 10.4 里跑起来”这件事接手一个锁版本的 Delphi 项目最怕的不是代码难而是环境根本复现不出来。你拿到一台新机器装好 RAD Studio 10.4去 DevExpress 官网找安装包发现最新版只适配 RAD Studio 11 甚至 12旧版下载入口又藏得深最后兜兜转转才找到这个“看起来像补丁包”的东西DevExpress VCL 20.2.4 for RAD Studio 10.4。这篇笔记就是把这条链路讲透——这个安装包到底是什么、它的版本号为什么停在 20.2.4、装的时候勾什么、源码怎么用、离线构建机怎么处理、以及我踩过的几个能让你白干半天的坑。适用人群很明确维护遗留 VCL 工程的技术负责人、刚接手老项目的 Delphi 新人以及需要在内网构建机上复现同款环境的部署工程师。2. 版本线怎么排20.2.4 在 RAD Studio 10.4 项目里的真实定位先把标题拆开看。DevExpress 是控件厂商VCL 表示这套东西跑在 Win32/Win64 原生界面上20.2.4 是版本号for RAD Studio 10.4 是配对关系。这四段信息缺一不可如果只写 DevExpress VCL你可能会下成适配新 IDE 的 23.x、24.x如果只看 20.2.4你会忽略它和 10.4 之间的绑定如果只记住 10.4你又不知道自己该找 20.2 还是 20.2.4。所以这一章先把版本线本身讲清再看看为什么老项目普遍停在这个组合上。2.1 小版本号在控件库里不代表修了一个 bug它是累积的热修复包DevExpress 的版本号规则和 Windows 补丁有些类似主版本号里的年份加季度代表发布周期。20.2.4 中的 20.2 是 2020 年第二个发布周期后面的 1、2、3、4 是这同一个周期内陆续发布的修订版本。但注意它不是只修一个 bug 的小补丁而是把所有已知问题、兼容性调整和少部分新特性累积在一起发布的“当下最新状态”。所以 20.2.4 的实际含义是20.2 这条版本线上最后一个修修补补完的版本。如果你手上有一份 Release History会看到每次从 20.2.1 到 20.2.4修复的内容分布在网格、条形码、报表、皮肤等各个子控件上。这意味着从 20.2 早期版本升到 20.2.4你的代码基本不用改但一些偶发的绘制崩溃、打印错位问题会消失。业界常说的“点版本不要随便跳”在 DevExpress 这里恰恰相反只要还在同一个主版本线内往最后一个点版本靠是更稳的选择。版本号段含义对老项目的实际价值20.2发布周期对应 2020 年第二个大版本决定控件功能边界和 IDE 适配范围20.2.1周期内首个正式版功能最全但可能有零散问题20.2.2累积修复修复已知问题不建议停在早期20.2.3累积修复稳定性逐渐增强20.2.4周期内最终修订版老项目锁定版本时的首选2.2 为什么偏偏是 for RAD Studio 10.4而不是 20.3 或 21.1这里有一个很容易让新人困惑的点RAD Studio 10.4 和 DevExpress 20.2.4 的“配对”不是随便标注的它由 IDE 的编译器和运行库版本决定。Delphi 10.4 和 CBuilder 10.4 的内部 BDS 版本号是 20.0同一代 IDE 共享同一套 VCL 框架结构。DevExpress 在打包时会针对这个 BDS 版本生成对应的 .bpl、.dcp 和设计时包反过来看DevExpress 20.3 往后的版本是为 RAD Studio 11 及以上设计的硬塞进 10.4 里几乎必然出现编译器版本不匹配。我见过不止一个团队在维护老项目时因为找不到旧版安装包直接下载了 20.3 甚至 21.1 的试用版结果安装器第一步就提示“未检测到受支持的 IDE 版本”。这个提示并不是安装器傻了而是它内部维护了一张 IDE 兼容表20.2.x 只对应 RAD Studio 10.3 和 10.4 这两个大的 IDE 世代。所以当你确定项目必须留在 10.4 上时DevExpress VCL 20.2.4 就是你在这个 IDE 世代里能拿到的最终稳定形态。不要试图用新版控件库反向兼容旧 IDE那不是配置问题是编译模型问题。2.3 老版本控件库不丢人稳定性和可复现性比新功能重要有人会问守着 2020 年的控件库是不是技术落后。我的观点是维护型项目的核心指标不是“用了多新的组件”而是“同一份代码在任何时间、任何机器上都能构建出同样行为的产品”。DevExpress 20.2.4 恰好符合这个要求它不再有新功能刺激你升级因此团队成员不会因为 IDE 提示“有可用更新”就手痒它作为 20.2 线的收官版本bug 修复积累最厚行为预期最稳定它对 RAD Studio 10.4 的支持是官方声明过的不会出现“装上了但没人保证能长期用”的灰色状态。当然老版本也有成本新发布的 Windows 补丁偶尔会改变某些绘制行为VCL 库本身不会追着适配如果你遇到一个只在 20.2.4 上复现的极端绘制问题官方可能已经不再为这个版本提供修复。所以更现实的态度是能用且稳定就不要动但要有意识地准备一套可复现的安装与构建路径这也是后面几章要解决的事。这个思路不是保守而是工程上对自己负责。3. 搭环境安装前的检查、组件选择与 Library Path 一次性配好安装 DevExpress VCL 20.2.4 不需要写代码但它比写代码更容易出问题。很多人的翻车点不在安装器本身而在安装前的环境状态IDE 还开着、旧版本没卸干净、源码目录选到了带空格或中文的路径、Library Path 里残留了其他版本的引用。这一章按我平时的操作顺序来先做检查再讲安装选择最后是 IDE 集成。3.1 安装前先做四项检查别急着双击安装包第一确认 RAD Studio 10.4 已经正确安装并且至少启动过一次。安装器在工作时会查找 BDS 20.0 的注册表项如果 IDE 从未启动过某些注册表分支不会生成安装器可能检测不到 IDE。第二关闭所有正在运行的 Delphi/CBuilder 进程包括 IDE、BDS 相关的后台服务不然安装器在写设计时包时可能遇到文件占用。第三清理旧版本残留如果机器上装过 DevExpress 的其他版本建议先通过系统卸载程序移除再手动删除残留的安装目录。第四规划安装路径我一般会把源码和控件库放在独立的非系统盘比如D:\Components\DevExpressVCL20避免放在C:\Program Files下因为权限问题导致后续构建失败。下面这个 PowerShell 脚本可以在安装前快速确认 BDS 20.0 是否存在以及 IDE 的版本信息# 检查 RAD Studio 10.4 的 BDS 20.0 注册表是否完整 $bdsPath HKCU:\Software\Embarcadero\BDS\20.0 if (Test-Path $bdsPath) { $ideInfo Get-ItemProperty -Path $bdsPath Write-Host 找到 BDS 20.0安装目录: $($ideInfo.RootDir) Write-Host IDE 版本号: $($ideInfo.AppVersion) } else { Write-Host 未找到 BDS 20.0请先安装并启动 RAD Studio 10.4 -ForegroundColor Red }这段脚本读取的是 RAD Studio 10.4 在用户级注册表中的关键分支。RootDir会告诉你 IDE 的实际安装位置后续配置 Library Path 时会用到。AppVersion是 IDE 自己的版本号如果读出来是空的说明 10.4 的安装有问题建议先用 IDE 的修复功能处理而不是继续装控件库。注意一定要在用户账户下运行BDS 的很多配置是 per-user 的。3.2 安装器里的组件选择全量套件还是只勾 VCLDevExpress 官方分发方式通常有两类一类是单独的 VCL 安装包另一类是包含 WinForms、WPF、VCL 等所有平台的 Universal 套件。对只需要 VCL 的项目我会选单独的 VCL 安装包而不是图省事装全量套件。全量套件会往机器里塞很多你用不到的二进制文件虽然不影响编译但会让后续的卸载、升级和磁盘占用都变得很重。进入安装界面后核心要勾选的有三块。第一是 VCL 组件本体这里面会有子选项比如 ExpressQuantumGrid、ExpressBars、ExpressSkins 等全部保留即可没必要单独取消某个子组件因为组件之间经常存在隐式依赖。第二是 Source Code 源码包我建议勾上即使你不用源码方式编译保留源码也能在调试时单步进 DevExpress 内部逻辑排查问题时价值很大。第三是 Win32 和 Win64 两个平台的目标如果你的产品只有 32 位可以只留 Win32但考虑到后续可能迁移我会两个都选。装完之后最常见的默认路径是C:\Users\Public\Documents\DevExpress 20.2\Components但你在安装器里改了路径就以你改的为准。有一个细节这个目录名里带空格后续在命令行里手工操作时记得加引号或者像我一样直接用脚本变量拼接路径。3.3 把控件路径加进 RAD Studio 10.4 的 Library Path安装器通常会自动把组件库路径写进 RAD Studio 的 Library Path但自动写入有时会因为 IDE 正在运行而失败。我习惯安装完成后手动确认一次。Library Path 在 RAD Studio 10.4 里的位置是Tools Options Environment Options Delphi Options Library - Win32和Library - Win64。你需要确认里面包含 DevExpress 的源码目录和输出目录比如Sources\Libraries\Win32\Release这类入口。如果你想用命令行确认可以读注册表# 查看 RAD Studio 10.4 当前的 Library Path确认 DevExpress 路径是否写入 $libKey HKCU:\Software\Embarcadero\BDS\20.0\Library $win32Path (Get-ItemProperty -Path $libKey -Name Search Path).Search Path $dxRoot D:\Components\DevExpressVCL20 if ($win32Path -match [regex]::Escape($dxRoot)) { Write-Host Library Path 已包含 DevExpress 路径环境正常 -ForegroundColor Green } else { Write-Host Library Path 未包含 DevExpress 路径请在 IDE 中手动添加 -ForegroundColor Yellow Write-Host 当前 Win32 搜索路径: $win32Path }这段脚本判断的是“路径是否出现在搜索列表里”它不会替你判断路径是否有效。所以脚本输出绿色只代表写入成功你还要在 IDE 里随便打开一个使用了 cxGrid 或 dxSkins 的工程试编译一次。如果编译时提示找不到.dcu大概率是路径指向了源码目录但缺少对应平台的输出目录这时候回到 IDE 检查 Library 配置里的输出文件夹路径。提示不要在同一台机器上同时安装 DevExpress 20.2 和更高版本。即使安装目录不同Library Path 里的搜索顺序也会让编译器抓到错误版本的包造成难以排查的“灵异”编译错误。4. 源码分发与离线部署让 20.2.4 能在隔离环境里重新站起来很多企业级 Delphi 项目最终要交付到内网构建机、客户隔离网甚至是离线 CI 环境里。DevExpress VCL 20.2.4 的安装包本身不大但完整的源码目录、许可证文件和 IDE 配套环境加在一起如果事前不做准备到了离线环境会非常尴尬。这一章讲三件事为什么要保留源码、源码目录怎么组织、以及离线构建机上最基本的三步部署。4.1 为什么要选源码而不是二进制包安装 DevExpress 时有二进制包和源码包两种模式。二进制包在安装器里已经替你编译好了bpl、dcp和dcu安装完直接可用省时间。但二进制包有个问题它和你机器上的 RAD Studio 补丁版本、编译器选项强绑定一旦你改了项目里的某些全局编译条件比如启用了运行时包、改了字符编码处理二进制包可能就不匹配了。源码包则是把 DevExpress 各子控件的pas文件完整放在你的磁盘上。你在 IDE 里重新编译一次后所有dcu都是从你当前编译器版本生成天然和你本机的环境一致。调试时按下 F7 能单步进控件源码定位问题会快很多。代价是首次全量编译会花几分钟到十几分钟但这笔时间在后续维护中能成倍赚回来。热词里常出现“devexpress source code”搜这个词的人多半就是因为编译期报错找不到对应的源码位置其实源码就在安装目录的 Sources 子目录里。4.2 源码目录的结构与最小重编译路径DevExpress VCL 的源码目录结构通常按子控件划分比如 ExpressQuantumGrid、ExpressBars、ExpressSkins、dxSpreadSheet 等各占一个子目录。每个子目录下会进一步按平台和构建模式分成多个输出目录比如Win32\Debug、Win32\Release、Win64\Release。第一次用源码编译时不要手动挨个打开工程文件去 Build而是要借助安装器自带的构建入口它会按照控件依赖顺序依次编译否则你从最外层的网格组件开始编译会提示缺基础包。下面这个脚本用于检查源码目录的关键子组件是否齐全# 检查 DevExpress VCL 源码包的核心子目录 $dxSource D:\Components\DevExpressVCL20\Sources $coreDirs (ExpressQuantumGrid, ExpressBars, ExpressSkins, dxSpreadSheet) foreach ($dir in $coreDirs) { $fullPath Join-Path $dxSource $dir if (Test-Path $fullPath) { Write-Host [OK] $dir 源码目录存在 -ForegroundColor Green } else { Write-Host [MISSING] $dir 源码目录缺失检查安装时是否勾选了 Source Code -ForegroundColor Red } }ExpressQuantumGrid对应的是 cxGrid 控件这是老项目里最常用的表格组件ExpressBars是工具栏和菜单系统ExpressSkins负责皮肤引擎dxSpreadSheet对应电子表格控件。这四个只是常见依赖的抽样如果你的项目只用到了其中一部分检查目录时可以按实际引用的单元名来调整。脚本本身不编译任何东西它只做前置确认因为离线环境下你不想在编译到一半的时候才发现某个子目录缺失。4.3 离线构建机的三步部署安排离线构建机和开发机的最大区别是它可能无法访问 DevExpress 的许可证服务器也无法在安装时登录账号。我一般会这样做。第一步在开发机上把安装包、源码包、许可证信息全部下载好放在D:\OfflineSetup\DevExpress20目录下。第二步把这个目录通过 U 盘或内网共享复制到构建机上然后按正常流程安装但安装过程中遇到任何“检查更新”的提示都选择跳过。第三步构建机装完后不要急着打开 IDE先确认许可证文件是否已经就位。许可证这块需要特别说明DevExpress 的订阅机制通常绑定账户和机器但你作为授权用户在自己的构建机上安装使用是正常的业务行为。常见的做法是先在开发机上完成授权激活再把安装后的许可相关配置复制到构建机的对应用户目录下。具体文件位置在不同版本里略有差异以你安装目录和用户目录下实际生成的许可文件为准。这个步骤的目标是让构建机上的 IDE 在编译时能识别出授权状态从而避免把工作机当破解机器用那属于给自己埋雷。提示运行时许可证和开发许可证是两回事。用 DevExpress VCL 编译出来的 exe 分发给最终用户时不需要用户安装任何 DevExpress 授权需要授权的是开发环境本身。4.4 构建机上的版本锁定禁止一切自动更新离线构建机只要连过外网就有可能被 IDE 或包管理器提示更新。DevExpress 安装器通常会在启动时检查新版本各组件库的皮肤缓存也可能在 IDE 启动时尝试联网校验。对于锁版本的项目这一行为应该直接禁止。在构建机上安装完成后我建议在防火墙出站规则里把 DevExpress 相关进程的联网权限默认设为阻止。这不是绕过授权而是防止某个组件因为网络检查超时或返回异常状态影响构建稳定性。如果后续需要升级不要直接在构建机上点更新而是在开发机上验证完整构建并通过测试后再把新的安装包和源码目录同步过去。构建机永远只保留一个版本这是避免“开发机上一个样、构建机上一个样、生产环境又一个样”的最根本手段。我见过太多排查了几天的编译错误最后发现是构建机上某个组件被自动更新到了更高版本而开发机还停在 20.2.4。5. 安装与维护中的典型翻车现场现象、原因、处理这一章写给已经动手装的人。DevExpress VCL 20.2.4 本身是个成熟产品但把它放进 RAD Studio 10.4 这个具体环境时依然有不少固定的坑。下面五条都是我见过或处理过的高频问题每条按现象、原因、处理的顺序来写你能直接对号入座。5.1 安装器提示“未检测到 RAD Studio 10.4”但机器上明明装了现象安装包双击后环境检查界面直接标红提示找不到支持的 IDE有些版本还会弹出一个空的 RAD Studio 版本下拉框。原因BDS 20.0 的注册表分支在用户级而安装器可能以另一个用户身份运行或者当前用户从未启动过 RAD Studio注册表里根本没有对应键。另一种常见情况是安装包运行时 IDE 还开着安装器读取安装信息失败。处理先关闭所有 IDE 和 BDS 进程用当前开发用户身份重新运行安装器如果还不行打开 RAD Studio 10.4 一次让它生成注册表信息再装 DevExpress。不要用“管理员身份运行”这一招解决所有问题有时管理员身份反而读不到当前用户的 BDS 配置。5.2 编译时报*.dcu not found但 Library Path 看起来是完整的现象新工程一编译提示找不到cxGrid.dcu或某个皮肤单元的dcu。原因有两种可能。第一种是 Library Path 指向了源码目录但该路径下没有编译产物源码模式下需要先执行一次全量构建第二种是你同时装过 DevExpress 20.1 和 20.2虽然 Library Path 里先显示的是 20.2但旧版本的部分.dcu被编译器优先命中。处理进入 IDE 的 Library 配置把 DevExpress 相关路径统一调整到 20.2.4 的目录并在 Project 菜单里执行 Clean 后重新 Build。如果还不行直接删掉旧版本目录不要留“备用的”旧包。5.3 RAD Studio 10.4 打了 Update 2 之后控件包行为异常现象从 10.4 升级到 10.4 Update 2 后IDE 启动卡在加载某个dcl*.bpl或者编译时提示运行时包与当前编译器选项不一致。原因DevExpress 设计时包是在旧补丁级别下编译的10.4 的 Update 会改变某些 RTL 包的内部结构导致设计时包需要重编。处理重新运行 DevExpress 20.2.4 安装器在修复模式下让它重新编译设计时包。不要尝试手动删除某个.bpl然后去别处拷贝那样只会让问题更乱。5.4 程序在开发机能跑发布到干净机器上提示找不到dxl*.bpl现象exe 在开发机上双击正常复制到一台没装过 DevExpress 的测试机后启动立即报缺少动态链接库错误信息里带dxl前缀。原因项目配置里勾选了“使用运行时包”程序运行时依赖 DevExpress 的.bpl而发布机没有这些包。处理在项目选项 Packages 里取消勾选“Build with runtime packages”重新编译DevExpress 代码会静态链接进 exe。如果你希望保留运行时包方式那就把相关.bpl一起打包进安装程序。注意静态链接会增加 exe 体积但能大幅降低发布机的环境依赖。5.5 下载安装包时看到 12、23 等新版本号直接下错现象搜索 DevExpress VCL 时结果里出现很多标着for RAD Studio 12的新版本新人容易直接下最新版然后安装第一步就失败。原因新版本只适配新 IDE不向后兼容 RAD Studio 10.4。处理找安装包时认准版本号和 IDE 名的配对关系DevExpress VCL 20.2.4 for RAD Studio 10.4 这个标题本身就是最准确的搜索关键词。顺带提醒一句搜索“BDE for RAD Studio 10.4 下载”时也是一样的道理BDE 组件和 DevExpress 是两套东西下载前先确认项目实际依赖的是哪个。下载控件库永远不要只看年份看括号里的人名。6. 验证与日常维护用一个最小工程和一次全量构建确认 20.2.4 状态正常环境配完不算完还要有验证方法。我的习惯是配好后先验证 dcc32 能找到再创建最小工程最后跑一次 Release 模式全量构建。先验证 RAD Studio 10.4 自带的命令行编译器能正常工作。dcc32.exe 一般位于 IDE 安装目录的bin子目录下可以用脚本定位并检查版本# 定位 RAD Studio 10.4 的 dcc32.exe 并检查版本 $binPath C:\Program Files (x86)\Embarcadero\Studio\20.0\bin if (Test-Path $binPath\dcc32.exe) { $binPath\dcc32.exe -version } else { Write-Host dcc32.exe 未找到检查 RAD Studio 安装路径 -ForegroundColor Red }dcc32.exe是 Delphi 32 位命令行编译器它能在不打开 IDE 的情况下编译单元文件。这个脚本的价值在于快速确认 IDE 的编译工具链没有损坏。如果这条命令能输出编译器版本号说明工具链基础是好的接下来验证 DevExpress 路径才有意义。然后创建一个最小 VCL 工程主窗体上放一个 cxGrid 和一个 cxButton直接按 F9 运行。这个动作看着简单实际能覆盖掉大量问题设计时包是否加载成功、开发期资源是否能找到、皮肤引擎是否能初始化、IDE 是否因为某个包不兼容而崩溃。如果最小工程能跑起来再打开你的真实项目编译一次。最后是 Release 模式的全量构建。我每次配完环境都会做一次彻底的重建而不是只编译当前单元。全量构建的过程会重新生成所有.dcu和.bpl能暴露隐藏的依赖问题。我个人的习惯是环境配好后一周内不动它只在遇到问题时才重新检查。环境稳定比什么都要紧。希望这篇笔记能帮你少走几段弯路也希望你那台 10.4 的老机器能安安稳稳再战几年。本文还有配套的精品资源点击获取