最近在Delphi 2006(一下简称Delphi)下安装Instant Objects组件,使用总安装包,编译,全部通过了,但在工程中使用菜单安装设计时包时,却提示我某个bpl文件找不到,可到目录中找时发现,所提示的那个文件确确实实在运行目录下的bpl文件夹中。
不管他,既然全部编译通过了,那我就手动来添加它们。启动Delphi,打开“Install Package”对话框,点击“Add”按钮,找到dcl开头的设计时包,安装,嗯,一切顺利,Instant Objects的设计时插件也正常启动了。以为很容易就搞定了,喝口水庆祝一下。但当我重新启动Delphi时,一个红叉叉的对话框差点让我把咽了一半的水吐出来――竟然还是提示我有bpl文件找不到。
刚才明明是正常安装了呀,遂再次打开“Install Package”对话框,发现,Instant Objects
组件前的勾竟全部消失了,点击勾选,同样提示bpl文件找不到。但当我将这几个选项删除,再次Add时,却又一切正常。
看来应该是Delphi启动时找不到某个路径导致的错误,仔细检查了lib路径,发现所有的目录都存在,也没有相同的文件与system32文件冲突,难道…等等!想到system32文件夹,我突然想起了PATH变量(哪跟哪啊这是…应该是胡思乱想导致的),难不成是PATH变量中没有设定bpl所在路径?于是在PATH中加入bpl的路径,启动Delphi,嘿~!一切正常了。
问题总结:Delphi在启动的时候会先在PATH环境所指定的路径中寻找依赖文件,与Delphi环境设置的lib路径无关(知道了bpl文件实质是类dll文件的运行库,那么这样的方式也是顺理成章的)。而在安装Delphi之后,我将bpl的目录路径更改到了程序安装目录下(默认为My Documnets/Borland Studio Projects/Bpl下),但并没有将其路径加入到PATH变量,从而导致Delphi无法找到所需文件(我也终于明白,安装完Delphi之后为什么会在当前用户环境中加入指向My Documnets/Borland Studio Projects/Bpl的PATH变量)。
而当Delphi启动之后,手动Add组件时,Delphi会临时找到该路径,从而出现重新手动安装组件包会使组件正常运行的现象。