一、前言
由于系统不稳定,经常要重装DELPHI。而每次安装DELPHI的时候,原来注册的组件都被刷新,只能重新安装组件。众所周知,DELPHI的第三方组件N多,这个安装着实令人头疼。更有甚者,因为某些莫名其妙的原因, DELPHI的组件面板上有时居然只剩下一个标准组件。碰到这种情况,我不知道各位如何处理,我每次都是重新安装。为了解决这个难题,我决定深入了解 DELPHI组件是如何被注册。以下是我的一点发现,发表出来供大家参考,以便抛砖引玉。
二、DELPHI组件安装的构成
安装一个组件到DELPHI上,实际上DELPHI只做几个有限的动作。
1、添加文件路径到搜索路径上;
2、记录包所在的路径以及包的名字;
3、将帮助文件登记在系统中。
而这些内容都可以在注册表中找到,这意味着,我们可以只要注册表中内容导出,就可以不用重新安装组件,而只要简单将注册表内容导入到注册表中就可以啦。
三、DELPHI的Library搜索路径
Library的搜索路径被记录在注册表中,每次DELPHI启动时,都是直接从这个项读入数据。以下是他的注册项,大家可以根据自己的需要,自由的编辑。
这里修改的内容可以从DELPHI的菜单项Tools\Environment Options..\Library\LibraryPath中找到,他的作用在于单元和库的查找。当你进行编辑时,DELPHI会按照这里的路径顺序进行搜索,直到找到第一个文件为止。曾经发现一个问题,即一个文件同时存在两个路径中,其中有版本兼容问题,如果将版本问题的文件放在前一个路径中,编译就会发生错误。
有时候,我们在DELPHI的IDE环境中,想跟踪进源码时,却无法找到源码,就是因为没有将源码的路径添加到搜索路径中。
四、DELPHI包的安装
每次在DELPHI中安装组件,都要考虑是否冲突,还要在N多的组件中找到那个组件。很多情况下,在组件面板中显示的不是包文件的名字,那更头疼。这事实上只是DELPHI的障眼法,真正的内情事实上十分简单。每次DELPHI启动时,都要在读取注册表的记录的文件名和路径,然后从包文件中解出所包含的组件,再写入面板。以下是注册表的内容。
前一部分是DesignTime包的文件名,后一部分是该包的名称。向DELPHI注册的包,可以不需要在IDE中安装,只需要往这里添加个项就可以了。主要把这个注册表的项目保存下来,不管安装多少次DELPHI都没有关系,还可以自由编辑安装,改变后重新导入即可。
这个注册表的内容都可以在DELPHI的IDE的菜单项 Component\Install Packages\Packages中找到。
需要注意的是,注册表中有个项记录被禁止使用的包,如果某个包被记录在这里,那么即使在Known Packages被登记也不会被使用,直到被从这里删除为止。这个项是下面这个。
五、ActiveX控件的安装
安装ActiveX组件,可以直接使用RegSvr32.exe,但是这个文件不是每个Windows版本都有,但应该可以找到类似的可执行程序。
/u 表示卸载该控件;/s 表示安装后,不显示信息(silent)
这个步骤仅仅是向操作系统注册,在DELPHI还不能用。但在IDE的菜单项Component\Import ActiveXControl\ImportActiveX的列表中,可以看到刚才注册的控件,选定该控件,再点击Install...,系统就自动为这个控件生成一个文件,然后注册,于是乎就可以在DELPHI中象普通组件那样被使用。
六、Run Time包的搜索
在DELPHI启动时,会搜索Run Time包,这些包一般会放在System32、${DELPHI}\bin、${DELPHI}\lib等目录下,这些包含在windows的环境变量 Path 中,但是为了方便安装,事实上可以把他们统一放在另外的目录下,然后再向windows登记这个路径。Run Time的搜索和Design Time的不同,他使用的是操作系统的路径,因此要特别小心重复放置。
七、帮助的链接
1、在 delphi5.cnt 文件中添加 :Include ×××.cnt ;这个项是在目录中内容
2、在 delphi5.ohi 文件中添加
这个项是搜索索引用的。
3、在 delphi5.ohl 文件中添加
这个项添加链接
4、在 delphi5.ohc 文件中添加
5、在注册表中添加各个文件的路径
[HKEY_LOCAL_MACHINE\SOFTWART\Microsoft\Windows\Help]
"teechart.hlp" = "D:\Borland\Delphi5\Help"
6、删除delphi5.hlp所在的目录下的*.GID文件,该文件是隐藏文件,将其删除后,重新打开delphi5.hlp,系统将重新生成一个GID文件,你在上面添加的内容就被编译到GID文件中,呵呵,一切就这么OK了。
由于系统不稳定,经常要重装DELPHI。而每次安装DELPHI的时候,原来注册的组件都被刷新,只能重新安装组件。众所周知,DELPHI的第三方组件N多,这个安装着实令人头疼。更有甚者,因为某些莫名其妙的原因, DELPHI的组件面板上有时居然只剩下一个标准组件。碰到这种情况,我不知道各位如何处理,我每次都是重新安装。为了解决这个难题,我决定深入了解 DELPHI组件是如何被注册。以下是我的一点发现,发表出来供大家参考,以便抛砖引玉。
二、DELPHI组件安装的构成
安装一个组件到DELPHI上,实际上DELPHI只做几个有限的动作。
1、添加文件路径到搜索路径上;
2、记录包所在的路径以及包的名字;
3、将帮助文件登记在系统中。
而这些内容都可以在注册表中找到,这意味着,我们可以只要注册表中内容导出,就可以不用重新安装组件,而只要简单将注册表内容导入到注册表中就可以啦。
三、DELPHI的Library搜索路径
Library的搜索路径被记录在注册表中,每次DELPHI启动时,都是直接从这个项读入数据。以下是他的注册项,大家可以根据自己的需要,自由的编辑。
|
这里修改的内容可以从DELPHI的菜单项Tools\Environment Options..\Library\LibraryPath中找到,他的作用在于单元和库的查找。当你进行编辑时,DELPHI会按照这里的路径顺序进行搜索,直到找到第一个文件为止。曾经发现一个问题,即一个文件同时存在两个路径中,其中有版本兼容问题,如果将版本问题的文件放在前一个路径中,编译就会发生错误。
有时候,我们在DELPHI的IDE环境中,想跟踪进源码时,却无法找到源码,就是因为没有将源码的路径添加到搜索路径中。
四、DELPHI包的安装
每次在DELPHI中安装组件,都要考虑是否冲突,还要在N多的组件中找到那个组件。很多情况下,在组件面板中显示的不是包文件的名字,那更头疼。这事实上只是DELPHI的障眼法,真正的内情事实上十分简单。每次DELPHI启动时,都要在读取注册表的记录的文件名和路径,然后从包文件中解出所包含的组件,再写入面板。以下是注册表的内容。
|
前一部分是DesignTime包的文件名,后一部分是该包的名称。向DELPHI注册的包,可以不需要在IDE中安装,只需要往这里添加个项就可以了。主要把这个注册表的项目保存下来,不管安装多少次DELPHI都没有关系,还可以自由编辑安装,改变后重新导入即可。
这个注册表的内容都可以在DELPHI的IDE的菜单项 Component\Install Packages\Packages中找到。
需要注意的是,注册表中有个项记录被禁止使用的包,如果某个包被记录在这里,那么即使在Known Packages被登记也不会被使用,直到被从这里删除为止。这个项是下面这个。
|
五、ActiveX控件的安装
安装ActiveX组件,可以直接使用RegSvr32.exe,但是这个文件不是每个Windows版本都有,但应该可以找到类似的可执行程序。
|
/u 表示卸载该控件;/s 表示安装后,不显示信息(silent)
这个步骤仅仅是向操作系统注册,在DELPHI还不能用。但在IDE的菜单项Component\Import ActiveXControl\ImportActiveX的列表中,可以看到刚才注册的控件,选定该控件,再点击Install...,系统就自动为这个控件生成一个文件,然后注册,于是乎就可以在DELPHI中象普通组件那样被使用。
六、Run Time包的搜索
在DELPHI启动时,会搜索Run Time包,这些包一般会放在System32、${DELPHI}\bin、${DELPHI}\lib等目录下,这些包含在windows的环境变量 Path 中,但是为了方便安装,事实上可以把他们统一放在另外的目录下,然后再向windows登记这个路径。Run Time的搜索和Design Time的不同,他使用的是操作系统的路径,因此要特别小心重复放置。
七、帮助的链接
1、在 delphi5.cnt 文件中添加 :Include ×××.cnt ;这个项是在目录中内容
2、在 delphi5.ohi 文件中添加
|
这个项是搜索索引用的。
3、在 delphi5.ohl 文件中添加
|
这个项添加链接
4、在 delphi5.ohc 文件中添加
|
5、在注册表中添加各个文件的路径
[HKEY_LOCAL_MACHINE\SOFTWART\Microsoft\Windows\Help]
"teechart.hlp" = "D:\Borland\Delphi5\Help"
6、删除delphi5.hlp所在的目录下的*.GID文件,该文件是隐藏文件,将其删除后,重新打开delphi5.hlp,系统将重新生成一个GID文件,你在上面添加的内容就被编译到GID文件中,呵呵,一切就这么OK了。