资讯详情

资讯详情

DevExpress VCL 18.1.6 安装全流程:版本匹配与Delphi环境配置避坑指南

简介DevExpress VCL 18.1.6 完整源码与安装器资源面向使用 Delphi 7 到 Delphi 10.3 Rio 的 Windows 桌面应用开发者尤其适合需要维护跨版本工程或自定义控件行为的中高级程序员。整套 VCL 控件源码附有 DxAutoInstaller 自动安装脚本可在不同 IDE 版本中批量注册组件省去手动逐个安装与依赖比对的麻烦也为团队统一组件环境提供便利。压缩包采用 RAR 格式体积约为 352.14 MB当前平台未列出内部文件总数与具体文件类型明细解压后预计由源码工程、单元文件与安装配置等组成已有 420 人学习/下载。借助此源码包开发者既能按需阅读与修改控件底层代码又能快速排查窗体布局、数据表格、图表、编辑器等界面层异常同时可针对旧版 Delphi 工程做兼容性适配适用于企业信息系统、管理软件及报表工具的界面层开发。整套材料对需要离线环境完成控件部署的团队尤为重要可作为 Delphi 控件级研发、调试和技术储备的完整素材。1. 装 DevExpress VCL 18.1.6 之前先把这套库的脾气摸清楚Delphi 开发 Windows 桌面程序DevExpress VCL 几乎是绕不开的一套商业级控件而 18.1.6 这个版本又格外特殊——它横跨 Delphi 7 到 Delphi 10.3 Rio 十几代 IDE至今还有大量老项目维护者卡在安装这一关。这套 Full Source 包自带 DxAutoInstaller理论上能自动编译、自动注册可真跑起来有人装完 IDE 直接崩、有人组件面板一片空白、有人编译时提示找不到 dcufile。问题根源几乎都出在版本匹配和安装姿势上。这篇笔记记录我从解压到装完、再用 Delphi 7 和 10.3 Rio 分别验证的完整过程适合手头只有源码包、又不想手动打开 dpk 挨个编译的人。2. 环境准备版本匹配、卸载残留与资源包核对2.1 版本对照18.1.6 到底能吃下哪些 Delphi先把话说在前面18.1.6 的官方支持范围是 Delphi 7 到 Delphi 10.3 Rio注意这个范围的两头都很关键。Delphi 7 是 ANSI 时代的编译器2009 之后的版本全部转向 Unicode10.3 Rio 是 18.1.6 支持的最高版本再往上走 10.4 Sydney 不在支持列表里硬装的结果通常是编译到一半报一堆接口不兼容没有后悔药。常见的 IDE 对应关系大致如下Delphi 版本关键差异安装时注意Delphi 7Win32、ANSI 字符串路径配置最老派DCU 目录必须手动指定2007 / 2009 / 20102009 起引入 Unicode设计期包加载容易失败装完先重启 IDEXE XE8编译器版本号断层DxAutoInstaller 偶发识别不到多刷新几次10 Seattle 10.2 Tokyo注册表键位相对稳定常规流程基本一次过10.3 Rio18.1.6 的终点版本组件全、坑少推荐作为首选验证环境装之前一定要确认自己是哪个 IDE 版本因为 DxAutoInstaller 编译出的运行时包后缀和 IDE 版本强绑定比如 Delphi 7 对应 D710.3 Rio 对应 D23。拿 D23 的包去给 Delphi 7 加载IDE 启动就会直接报错这是绝大多数安装翻车的起点。提示如果你机器上同时装了多个 Delphi 版本建议先把安装顺序理清楚。我的习惯是先装老版本再装新版本让注册表里各版本的键互不干扰。2.2 检查已有安装卸载残留和注册表清理很多人拿到新包直接解压就装结果 IDE 里出现两套 DevExpress 组件——老版本还在面板上新版本又注册一遍运行时包互相打架项目一编译就链接到旧 bpl 上。装新版本前先做一次彻底的旧版本清理。Windows 的“程序和功能”里找到 DevExpress VCL 相关条目正常卸载一遍。卸完别急着装新的打开资源管理器把安装目录整个删掉我一般装在C:\DevExpress或D:\DevExpress卸载后目录经常残留一堆 pas 和 bpl 文件。接着打开注册表编辑器定位到 HKCU\Software 下带 DevExpress 字样的键值能删就删。这一步很多人嫌麻烦跳过后来 IDE 加载包时就玄学了——有的控件能显示有的控件一点就报地址访问错误。老项目机器上还会遇到一种情况当年装过绿色版 Delphi 7注册表里根本没有完整的安装信息。这种环境建议先运行一次 Delphi 安装目录下的delphi32.exe让它把基础注册表键补上否则后面 DxAutoInstaller 检测 IDE 时很可能把你这个版本直接漏掉血泪经验。清理完成后建议顺手建一个干净的安装目录例如D:\DevExpress\18.1.6。这能避免两个问题一是系统盘权限不够导致编译写不进去二是以后升级版本时路径混乱。2.3 解压与资源包核对Full Source 包里到底有什么下载回来的资源包是一个 rar 压缩文件先用 WinRAR 或 7-Zip 解压到刚才建好的目录。如果压缩包带密码密码一般就在下载页的说明信息里解压后先别急着双击 exe按下面这份清单核对目录结构。一个完整的 DevExpress VCL Full Source 包解压后通常包含这几块Source目录全部 .pas 源码这是“Full Source”的核心价值。有了它调试时可以 F7 步入控件内部而不是对着 DCU 黑匣子干瞪眼Library或Libraries目录按 RS 编号分目录存放 dpk 工程文件比如 RS7 对应 Delphi 7RS23 对应 10.3 Rio每个目录里是各种控件的包工程Bin目录放 DxAutoInstaller 可执行文件、一些运行时 DLL 和工具Demos或Samples目录官方示例工程装完可以拿来验证拿到包后先检查Bin目录下有没有dxAutoInstaller.exe。这个文件是整个安装流程的关键有的资源包精简过只留源码没有这个工具那就只能走全手动编译的老路痛苦值直接拉满。再检查一下Library目录里是否有对应你 IDE 版本的子目录。比如用 10.3 Rio应该能看到 RS23 字样的文件夹用 Delphi 7找 RS7。如果某个版本缺失说明这个资源包对那个版本支持不完整后面 DxAutoInstaller 编译时大概率会中途报错。解压完成后我一般还会做一件事给Source和Library目录的只读属性做一次校验。如果文件是从压缩包直接解压到 U 盘再拷贝过来的偶尔会出现文件属性异常导致编译时提示无法创建临时文件。选中目录右键属性把“只读”取消并应用到所有子文件夹。3. 核心安装用 DxAutoInstaller 自动编译并注册3.1 为什么我不建议手动打开 dpk 挨个编译DevExpress VCL 的组件包数量相当可观从底层核心库 ExpressCore到上层控件 ExpressBars、ExpressGrid、ExpressEditors、ExpressLayout依赖关系是一层叠一层的。手动编译的话必须先编核心、再编数据控制器、再编各种业务控件顺序错了编译器直接报找不到单元。而正确的顺序往往只写在官方文档里自己摸索一遍基本就是一下午。DxAutoInstaller 这个工具解决的正是这个问题。它会自动读取本机已安装的 Delphi 版本列表再按照 DevExpress 包之间的依赖顺序依次调用 Delphi 自带的 dcc32 编译器逐个编译 dpk最后把生成的 bpl 注册到 IDE 的安装包列表里。对 Delphi 7 这种老掉牙的 IDE它也能处理因为它读的是注册表里不同的键位而不是像新版本那样统一走 BDS 键。我用它的第二个原因是试错成本低。全手动编译报错了你得自己判断是路径问题、依赖顺序问题还是 Windows SDK 版本问题DxAutoInstaller 虽然报错信息也算不上友好但至少它会把当前在编哪一个包、在哪一步失败显示清楚排查范围一下子缩小到当前那个包上。3.2 安装前必须勾选的选项这些参数决定成败启动dxAutoInstaller.exe后界面通常会列出本机检测到的所有 Delphi/CBuilder 版本。这里第一个坑就来了多版本共存时它默认可能会选中最后安装的那个版本而不是你想要的那个。装之前逐个核对列表确保勾选的 IDE 包含你项目真正在用的版本如果只想单装一个版本把其他版本取消勾选避免浪费时间编译一堆用不上的包。接下来是组件集选择。DxAutoInstaller 会按照 DevExpress 的组件分组列出所有可编译包默认是全选。老项目只用 cxGrid 和 cxEdit 的话全选编译也能跑通只是耗时更长我现场全量编译一次大概要二十分钟。如果着急验证可以先勾选这几个核心组ExpressCore基础库必须选ExpressDataController数据绑定相关必须选ExpressEditorscxEdit 系列编辑器控件ExpressBars工具栏和菜单老项目常用ExpressQuantumGridcxGrid很多人装它就是冲这个来的编译模式方面我一般选 Release。Debug 模式会生成带调试信息的 DCU方便跟进源码但包体积大、编译时间长想调试源码的话后面单独把 Debug DCU 目录加进 IDE 搜索路径也行没必要一开始就全量 Debug。个别版本的 DxAutoInstaller 还有一个“安装到系统目录”的选项作用是把编译好的 bpl 复制到 Windows 系统目录这样以后 IDE 加载时不用额外配路径。我从来不勾这个理由很简单系统目录里堆一堆第三方 bpl以后卸载或升级时清理不干净而且权限不够还会直接安装失败。让 bpl 留在 DevExpress 自己的输出目录里路径配清楚比什么都省心。提示如果你同时装 Delphi 7 和 10.3 Rio建议分开两次执行安装。因为两个 IDE 的包命名后缀不同、注册表键位不同DxAutoInstaller 混着跑偶发会出现前一个版本编译输出没写完后一个版本就开始读文件的情况。3.3 执行编译看进度不如看日志把选项都确认好之后点“Start”开始编译。整个过程其实是调用 dcc32 编译器逐个处理 dpk 文件你在界面上能看到的是一条条编译命令滚动。这一步的耐心很重要中间会有一段时间看起来像是卡住了其实是在编底层的核心库。编译期间我建议盯着日志窗口看两个东西一是当前正在编译的包名二是第一次出现红色 Error 的位置。如果某一步报了“文件找不到”八成是Library目录里缺对应 IDE 版本的 dpk或者Source路径没写对如果报的是“无法打开包含文件”通常是解压不完整或者路径里有中文导致编译器检索失败。为了让你对手工编译有概念这里贴一段我当年在 Delphi 10.3 Rio 下手动编译底层核心包的命令DxAutoInstaller 内部做的就是类似的事情cd /d D:\DevExpress\18.1.6\Library\RS23 dcc32 -B -ED:\DevExpress\18.1.6\Library\Bpl\Win32 -OD:\DevExpress\18.1.6\Library\Dcu\Win32 -UD:\DevExpress\18.1.6\Source;D:\DevExpress\18.1.6\Source\Win32 dxCoreD23.dpk解释一下这里面的参数-B是强制重新编译哪怕已经存在旧的 dcufile 也不跳过-E指定生成的 bpl 输出目录-O指定 dcu 输出目录-U是编译器搜索单元的路径这里把源码目录和 Win32 子目录都带上保证依赖单元能被找到最后那个dxCoreD23.dpk是核心库的包工程文件文件名里的 D23 就是 10.3 Rio 的版本代号。我之所以强调日志是因为 DxAutoInstaller 跑完之后界面上显示的绿色对勾并不等于万事大吉。它只代表编译过程没中断但 bpl 是否成功注册到 IDE还得去 Delphi 里确认。我见过好多次编译全程无错打开 Delphi 却发现组件面板里空空如也的情况原因就是 DxAutoInstaller 写 IDE 包注册表时被安全软件拦了而它自己并不知道。4. 配置 Delphi 环境搜索路径、工具选项与手工兜底4.1 Library 路径把输出目录加进 IDE 搜索路径DxAutoInstaller 编译完成后生成的 bpl、dcu 都在 DevExpress 安装目录下的特定位置。Delphi 默认不知道这些文件在哪全靠 IDE 的 Library 路径配置来认识它们。这一节如果漏配后面新建工程一引用控件就会报“找不到单元”。Delphi 10.3 Rio 的配置入口在 Tools Options Delphi Options Library。需要把下面这些路径加进 Library path 列表路径放什么文件作用D:\DevExpress\18.1.6\Library\Bpl\Win32bpl 运行时包IDE 加载控件包时要在这里找依赖D:\DevExpress\18.1.6\Library\Dcu\Win32dcu 编译产物编译项目时链接控件代码D:\DevExpress\18.1.6\Sourcepas 源码让 IDE 能跳转到控件源码Delphi 7 的入口长得不一样在 Tools Environment Options Library 页面同样把这三条路径填进去。填完记得点一下“保存”或“OK”别急着关 IDE直接新建一个 VCL 工程试着往窗体上拖一个 cxGrid能拖出来就说明路径生效了。4.2 运行时包与设计期包核对Library 路径解决的是“编译时找不到单元”的问题但组件面板上能不能看到控件取决于设计期包是否注册。打开 Delphi 的 Component Install Packages 对话框正常情况下能看到一列带 DevExpress 字样的 bpl 包每个包对应一类控件。这里面有个容易混淆的点运行时包和设计期包是两个不同的注册层次。运行时包是程序跑起来时动态加载的设计期包是 IDE 在设计器里渲染控件、弹出属性编辑器时用的。DxAutoInstaller 默认会两者都装但如果你只看到运行时包被加载设计期包没在 Install Packages 里出现那组件面板大概率是空的。遇到这种情况手工添加一次设计期包。点击 Install Packages 对话框里的 Add 按钮在文件选择框里定位到 bpl 输出目录选择对应的设计期包文件比如dxBarD23.bpl、cxGridD23.bpl。选中后 IDE 会提示加载成功组件面板上立即会多出对应的页签。提示加完设计期包后别直接拖控件先把 Delphi 完全关掉再重开一次。这一步看着多余实际上能避免设计器缓存导致的奇怪报错属于老手都懂的常规操作。4.3 给 Delphi 7 的特殊兜底环境变量和静态链接Delphi 7 这台“老古董”在路径配置上有自己的脾气。它不像 10.3 Rio 那样会自动识别 BDS 环境变量很多时候你必须手工把 DevExpress 的 bpl 目录写进系统 PATH否则启动 delphi32.exe 时它连运行时包都找不到。在 Windows 的环境变量设置里把D:\DevExpress\18.1.6\Library\Bpl\Win32追加到 Path 变量注意放在系统变量还是用户变量都行关键是改完必须重新打开 Delphi 才生效。这一步对 Delphi 7 尤其重要因为它加载 bpl 依赖时不像新版本那样会自动从 IDE 的安装目录里找。另外老项目通常会关闭 runtime packages走静态链接方式把 DevExpress 代码直接编进 exe。这种情况下工程编译时要在搜索路径里能找到 dcu 文件上面那套 Library path 配置的作用就体现出来了。确认一下 Project Options 里的“Link with runtime packages”是否已经取消勾选不勾的话bpl 是否存在其实不影响最终发布的 exe这也是很多老项目发布到客户机器上不用带一堆 dll 的原因。5. 避坑18.1.6 在老旧 Delphi 上的常见翻车现场5.1 现象IDE 启动直接报“Cannot load package ... 找不到指定的模块”我刚上手那会儿给一台装了 10.3 Rio 的机器装完 18.1.6重启 IDE 就弹这个错。原因不是包本身坏了而是 DxAutoInstaller 编译出来的 bpl 依赖其他 bpl那些依赖文件没有被放到 Delphi 的加载路径里。系统 PATH 没加 bpl 目录IDE 启动时装包就会扑空。解决先把 bpl 输出目录加进系统 PATH或者在 Delphi 的 Library path 里加上这个目录。如果还报错用依赖查看工具检查这个 bpl 到底缺了哪个文件多数情况下缺的是 DevExpress 底层核心包也就是说你的组件集没选全只编了上层没编底层。5.2 现象项目编译时提示 E2209 无法打开 dcufile这个报错几乎人手一份。新建工程拖了个 cxGrid一编译就告诉你找不到cxLibraryD23.dcu。原因是 dcu 输出目录没被 IDE 搜索到。DxAutoInstaller 把 dcu 放在Library\Dcu\Win32但你的 Delphi 库路径里根本没加这一条。解决回到第 4.1 节的 Library path 配置把 dcu 目录加进去。Delphi 7 还要注意它不一定支持与 10.3 Rio 一样的目录结构尽量直接把 dcu 目录路径写完整别偷懒写相对路径。5.3 现象DxAutoInstaller 列表里检测不到 Delphi 7Delphi 7 的安装信息不会出现在新版 BDS 的注册表键里DxAutoInstaller 需要特定逻辑才能识别它但绿色版或精简版 Delphi 7 因为缺少注册表写入工具压根看不到这个 IDE。解决先运行一次delphi32.exe让它自动写注册表再重启 DxAutoInstaller。如果还是没有那就只能对这个版本手动编译 dpk。手动编译时可以只编核心包加需要的控件包没必要全量编编完自己注册设计期包即可。5.4 现象控件装上了组件面板里却找不到这种情况最容易让人怀疑人生。设计期包确实注册成功了Install Packages 列表里也看得到 DevExpress 项但面板上就是没有对应的页签。原因通常是 IDE 组件面板的过滤设置或者上一次会话的管理信息异常。解决先检查 IDE 左下角搜索框是不是过滤了非原生控件再把 Install Packages 里的 DevExpress 包取消勾选、应用、重新勾选强制刷新面板。最后一步是彻底关闭 IDE 后删除AppData\Roaming\Embarcadero\BDS\23.0\Component目录下的面板布局文件让 IDE 重建组件面板。这一步是最终手段执行前记得备份。5.5 现象编译发布后到客户机器提示缺少 bpl这是我自己踩过的一个坑。开发机上跑得好好的把 exe 拷到没装 DevExpress 的机器上双击直接报缺失dxBarD23.bpl。根因是项目启用了 runtime packagesDevExpress 的包在发布时没有被包含进去。解决要么把 DevExpress 的 bpl 一起带出去放到 exe 同目录要么在 Project Options 里关闭 runtime packages改为静态链接让 dcu 直接编进 exe。老项目我建议走静态链接省去一堆 dll 和 bpl 的分发麻烦。6. 装完怎么验证拖控件不是终点编译运行才是6.1 最小工程验证一个按钮一张表装完先别急着把整个老项目打开新建一个 VCL Forms Application 做最小验证。从组件面板的 DevExpress 页签里拖一个 TcxButton 和一个 TcxGrid 到窗体上双击按钮写一行ShowMessage(DevExpress OK);然后 F9 运行。这一步同时验证了设计期包可用、运行时包能加载、dcu 路径正确。如果连着这样做都能跑通说明核心链路已经通了。最好在 Delphi 7 和 10.3 Rio 两个环境都跑一遍这个最小工程毕竟 18.1.6 跨版本支持老版本上单独验证一次能省下之后排环境问题的功夫。6.2 验证调试源码的能力Full Source 版最大的价值是能看源码。在刚才那个工程里给 TcxButton 的 Click 事件打断点然后 F7 步入如果 IDE 能跳到 DevExpress 的 pas 文件里说明 Source 路径配置无误调试链路完整。从那以后我每次装完 DevExpress VCL都要强制自己走一遍这个流程新建工程、拖控件、编译运行、步入源码。这一套下来若全部流畅才算真正装完。版本升级时我也只做一件事——清掉旧路径、跑一遍新安装、重复这个验证流程。希望这套流程对你能有点帮助少走几步弯路。本文还有配套的精品资源点击获取
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →