关于delphi:在程序启动时获取BPL版本

关于delphi:在程序启动时获取BPL版本

Getting BPL Versions at program startup

程序启动时,是否可以检查客户端计算机上安装了哪个版本的BPL(即Rtl70.BPL,Indy70.bpl等)?

我有一些程序崩溃,因为该计算机上的BPL与构建计算机上的BPL不同。
如果我必须在每次更新时将用于安装的每个BPL添加到安装程序中,我认为它会破坏使用它们的要点之一。

Delphi 7,如果有所作为

只是跟进我的问题。
rtl70.bpl文件在生成计算机和客户端之间仅稍有不同。

Clients Computer: 7.0.4.453 760 KB (778,240 bytes) Tuesday, 20 August 2002, 4:40:26 PM
Build computer: 7.0.4.453 760 KB (778,240 bytes) ?Friday, ?9 ?August ?2002, ??11:30:00 PM

我使用的更新程序忽略了它们,因为它们是相同的(内部版本号没有更改),但是当我手动删除并复制文件时,所有事情似乎都可以正常工作。


很不幸的是,不行。如果崩溃是由于您的应用程序所需的.bpl文件缺少导入而导致的,则无法(仅重写Delphi RTL和链接器本身)无法从崩溃的可执行文件本身中检查这些软件包。 PatrickvL的解决方案可能是最适合您的情况的解决方案。

Neftalí的解决方案可能是一个选择-当然,这是以打包RTL,复制大量文件为代价,并且失去了首先拥有软件包的要点之一。但是,如果使用私有DLL(即,如果将DLL复制到私有二进制文件目录中),则还应创建一个与可执行文件同名的空文件,但在文件后附加扩展名.local,例如记事本。 .exe,您将创建一个notepad.exe.local。有关更多详细信息,请参见Raymond Chen的DLL重定向文章。


如果程序崩溃,则可能是因为它无法加载与其动态链接的库。 (正如您所说,当系统无法在搜索路径中的任何位置找到所需的库的副本时,就会发生这种情况)。

问题是,这是在应用程序启动时发生的,Windows操作系统通过称为MapAndLoad的API来执行此操作(也请阅读此内容)。甚至在您的应用程序启动之前就调用了此API,因此我看不到拦截它的方法。

我可以提出的一个建议是使用启动器(必须静态链接,以防止根本没有/ no /库的问题)。
该启动器可以检查您的实际应用程序,查看需要导入什么,检查您的环境并向用户显示一个不错的故障/疑难解答建议对话框。


您不能从使用这些bpl的可执行文件中执行此操作,但是可以有一个小的启动程序来检查bpl,然后调用主可执行文件。


Is it possible to check what version of BPL (ie Rtl70.BPL, Indy70.bpl etc) are installed >on a clients computer when the program starts?
I have had some programs crash because the BPL on there computer is different to the ones >on the build machine.
If i have to add each BPL used into the installer on each update, i think it will defeat >one of the points on using them.

您必须将BPL的副本(RTL70.bpl,INDY.BPL等)安装(开发)到安装应用程序的同一目录中。您的应用程序首先在同一目录中搜索BPL,然后在路径内的目录中搜索。
不利的是,您的系统将可以具有同一BPL的多个副本,有利的是,您不会对同一文件的不同版本产生问题。

问候。

P.D:对不起,我的英语不好。


有时Delphi会自动添加行:
{$ R'* .res'}
到项目或软件包的文件。

注释(//)该行,然后再次编译。


推荐阅读

    计算机主板BIOS设置详细-BIOS知识

    计算机主板BIOS设置详细-BIOS知识,,什么是电脑BIOS,一般电脑主板已经设置完毕后,电脑就开始按del键进入BIOS。系统启动BIOS,即微机的基本输入

    计算机蓝屏故障的计算机蓝屏解决方案

    计算机蓝屏故障的计算机蓝屏解决方案,,电脑蓝屏电脑故障经常使用电脑的朋友经常遇到,因为电脑蓝屏是一个非常普遍的现象,所以很难预测,什么时

    计算机自动关机的原因是什么

    计算机自动关机的原因是什么,,计算机(计算机),通常称为计算机,是一种用于高速计算的电子计算机。它可以进行数值计算和逻辑计算,还具有存储记忆

    电脑功率计算|电脑功率计算公式

    电脑功率计算|电脑功率计算公式,,电脑功率计算公式  从设计角度出发一般取300w/台基本都可以满足要求,可以从以下几个方面分析一下电脑功

    如何设置计算机视图视图的统一视图

    如何设置计算机视图视图的统一视图,,不知道你是否有这样的使用电脑经验,电脑在不同的文件夹打开,有时这个文件夹是用来查看列表的方式,但是当

    的故障_计算机解决无法打印文档

    的故障_计算机解决无法打印文档,,核心提示:最近,打印机出现了一个奇怪的现象,在打印正常之前,打印机不能打印最近的突然,提示发送打印作业,计算

    PC计算机:AMDCPU核心细节

    PC计算机:AMDCPU核心细节,,核心提示:AthlonXP的核心型athlonxp有4种不同的核心类型,但都有个共同点:他们都使用socketa接口,他们都使用PR标称值

    分析计算机减速的原因

    分析计算机减速的原因,,核心提示:做以上九点,我相信你的爱是快的。当然,如果速度很慢,你应该考虑硬件升级。学习电脑组装,就来吧… 有很多人说