Delphi 13升级后程序分发报错:IndySystem370.bpl未找到求助
解决Delphi 13项目EXE运行时缺少IndySystem370.bpl的问题
问题根源
你碰到的是Indy组件的动态BPL依赖问题。Delphi IDE自带的Indy默认采用动态编译模式,依赖外部BPL文件,所以IDE环境中因已加载相关BPL能正常运行,但客户端电脑没有这些文件就会触发报错。新版本Indy仍保留动态/静态编译两种选项,默认还是动态模式,因此会存在额外依赖。
解决方法(按优先级排序)
1. 静态编译Indy组件(推荐,实现单EXE独立运行)
这是最彻底的方案,将Indy代码直接编译进EXE,不再依赖外部BPL:
- 打开Delphi 13的
Component > Install Packages,找到所有带Indy标识的包(如IndyCore、IndySystem、IndyProtocols等),取消勾选后关闭IDE。 - 删除项目目录下的
.dproj、.local、.identcache等配置文件,清除残留编译设置。 - 重新打开项目,在
Project > Options > Delphi Compiler > Linking中,确保Link with runtime packages选项为未勾选状态。 - 找到Indy源码目录(默认路径为
C:\Program Files (x86)\Embarcadero\Studio\23.0\source\Indy10),将Core、System、Protocols三个子目录添加到项目的Search Path(路径:Project > Options > Delphi Compiler > Search Path)。 - 重新编译整个项目,生成的EXE将不再依赖Indy的BPL文件,客户端可直接运行。
2. 手动打包依赖BPL文件分发
若不想采用静态编译,可将所需BPL文件与EXE一同拷贝至客户端:
- 在Delphi安装目录的
bin文件夹(默认路径C:\Program Files (x86)\Embarcadero\Studio\23.0\bin)中找到IndySystem370.bpl。 - 用Delphi自带的
Dependency Walker工具或第三方工具(如Process Explorer)分析EXE的依赖,确认是否还需其他Indy相关BPL(如IndyCore370.bpl、IndyProtocols370.bpl)。 - 将所有缺失的BPL文件与EXE放在同一目录下,客户端运行时即可正常加载依赖。
3. 利用Delphi部署工具自动打包依赖
Delphi 13自带的Deployment Manager可自动收集并打包依赖文件:
- 打开项目后,切换到
Project > Deployment面板。 - 点击
Add > Add Files选择你的EXE文件,再点击Add > Add Required Packages,IDE会自动识别所有依赖的BPL文件并添加至部署列表。 - 配置好部署路径后生成部署包,直接分发给客户端即可。
内容的提问来源于stack exchange,提问作者user31362432
相关产品推荐
相关产品推荐

