【问题标题】:Catch missing runtime packages exception error捕获缺少的运行时包异常错误
【发布时间】:2014-10-27 20:16:01
【问题描述】:

我部署了一个使用运行时包构建的应用程序。

有什么方法可以捕捉到丢失包文件的错误异常?

我想更改文本并显示更多系统信息。

由于应用程序甚至无法启动,因为它依赖于这个文件,我不知道如何捕获这些异常。

【问题讨论】:

  • 此消息由加载程序显示。你不能影响消息。
  • 也不例外。这是一个错误。

标签: delphi packages firemonkey delphi-xe6 bpl


【解决方案1】:

您无法捕捉到任何东西,因为如果没有 BPL 文件,您的程序将无法开始运行。当您启用Link with Runtime Packages 选项时,您必须确保所有需要的 BPL 文件都可用于您的程序。通常,如果您想分发使用相同 BPL 文件的其他程序,您会将它们放在与您的程序相同的文件夹中,或者将它们放在包含在环境 PATH 中的共享文件夹中。

【讨论】:

  • 我希望至少可以编辑已显示的文本,但我想我必须忍受它。希望它至少是本地化的。感谢您嵌入图片顺便说一句:)
  • 如果您不想部署 BPL 文件,请关闭 Link with Runtime Packages 选项。
  • @Schill 你需要做的就是确保你有一个合适的安装程序来部署必要的文件。这不是你需要非常担心的事情。
  • @RemyLebeau 谢谢,但我知道这一点。我的程序架构旨在与运行时包一起使用。
  • @DavidHeffernan 这就是我最终要做的。我在多个虚拟机(OSX Yosemite 和 Windows 7 - 10)上测试了我的设置,它运行良好。
【解决方案2】:

您可以创建一个小应用程序来检查您的主应用程序所需的所有 BPL,并根据需要显示显示警告。 如果一切正常,您的应用只需运行主应用即可。

【讨论】:

  • 你可以这样做,但这可能不是一个好主意。现在你有一个额外的过程,以及随之而来的复杂性。您需要转发任何命令行参数。如果调用程序等待进程终止怎么办。在真正的过程完成之前,你会让你的引导程序保持活力吗?
  • 你有一个额外的过程只是片刻。此外,重新发送所有命令行参数非常容易。我不确定我们这里的调用者有什么问题,因为它没有被指定。据我所知,没有其他方法可以替换有关主程序中缺少 bpl 的信息。
  • 如果进程是通过调用CreateProcess 启动的,并且父进程想要​​等到进程完成,它就不能这样做,因为它启动的进程不是真正的进程。除了缺少 .bpl 文件之外,加载程序可能会失败。所以这个机制不会检测到所有这些故障。正确部署程序不是最简单的吗?
猜你喜欢
  • 1970-01-01
  • 2017-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-11
  • 1970-01-01
  • 2014-03-21
相关资源
最近更新 更多