程序启动时,是否可以检查客户端计算机上安装了哪个版本的BPL(即Rtl70.BPL,Indy70.bpl等)?
我有一些程序崩溃,因为该计算机上的BPL与构建计算机上的BPL不同。
如果我必须在每次更新时将每个BPL添加到安装程序中,我认为它将破坏使用它们的要点之一。
Delphi 7,如果有所作为
只是跟进我的问题。
rtl70.bpl文件在生成计算机和客户端之间仅稍有不同。
客户端计算机:7.0.4.453 760 KB(778,240字节)2002年8月20日,星期二,下午4:40:26
构建计算机:7.0.4.453 760 KB(778,240字节)星期五,9八月2002,11:30:00 PM
我使用的更新程序忽略了它们,因为它们是相同的(内部版本号没有更改),但是当我手动删除并复制文件时,所有东西似乎都可以工作。
最佳答案
抱歉不行。如果崩溃是由于应用程序所需的.bpl文件缺少导入而导致的,则无法(除非重写Delphi RTL和链接器本身)从崩溃的可执行文件本身中检查这些软件包。 PatrickvL的解决方案可能是最适合您的情况的解决方案。
Neftalí的解决方案可能是一个选择-当然,这是以打包RTL,复制大量文件以及首先失去打包的要点为代价的。但是,如果使用私有DLL(即,如果将DLL复制到私有二进制文件目录中),则还应创建一个与可执行文件同名的空文件,但在文件后附加.local扩展名,即用于记事本.exe,您将创建一个notepad.exe.local。有关更多详细信息,请参见Raymond Chen's article on DLL redirection。
关于delphi - 在程序启动时获取BPL版本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/99057/