delphi - 在程序启动时获取 BPL 版本

标签 delphi delphi-7 bpl

程序启动时是否可以检查客户端计算机上安装的 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、复制大量文件,并失去最初拥有软件包的一个要点。但是,如果您使用私有(private) DLL(即,如果您将 DLL 复制到私有(private)二进制文件目录中),那么您还应该创建一个与可执行文件同名的空文件,但附加扩展名 .local 到它,即对于 notepad.exe,您将创建一个 notepad.exe.local。请参阅Raymond Chen's article on DLL redirection了解更多详情。

关于delphi - 在程序启动时获取 BPL 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/99057/

相关文章:

delphi - 如何在窗口中找到所有文本字段?

delphi - 如何删除加速器热键 '&'字符?

delphi - Delphi 7 和 Delphi XE 及更高版本之间接口(interface)的不同行为

c++ - 我无法在 RAD Studio C++ Builder XE 中构建静态可执行文件

Delphi Devart SecureBridge POST 请求

Delphi:我自己的计时器的OnTimer事件从未发生

delphi - 添加管理员权限请求 list

delphi - 将Tframe从bpl加载到应用程序

delphi - 在 LoadLibrary 中动态加载 BPL 失败

delphi - 释放对象的无效指针操作