delphi - 有谁知道 Citrix 和 Delphi 2007 应用程序之间的问题? (也许还有其他开发语言?)

标签 delphi delphi-2007 citrix

情况很简单。我创建了一个复杂的 Delphi 应用程序,它使用了几种不同的技术。主要应用程序是一个 WIN32 模块,但有几个部分是作为 .NET 程序集开发的。它还与 Web 服务通信或从特定网站检索数据。它将大部分用户数据保存在 MS Access 数据库中,并在注册表中保留一些附加设置。在内存中,所有数据都在 XML 文档中进行转换,该文档偶尔会保存到磁盘作为备份,以防系统崩溃。 (因此允许用户恢复他的数据。)XML 文件中还有一些数据用于只读目的。该应用程序还执行其他应用程序并希望这些应用程序完成。总而言之,这是一个相当复杂的应用程序。

我们不支持使用此应用程序的 Citrix,尽管少数用户确实在 Citrix 服务器上使用此应用程序。 (基本上,它允许这些用户更加灵活。)但即使我们一直告诉他们我们不支持 Citrix,这些客户仍试图插入我们帮助他们解决他们可能遇到的一些偶尔出现的问题。

主要问题似乎是偶尔出现在 Citrix 系统上的随机异常。从不在同一个位置,而且通常看起来与一些内存问题有关。我们已经收到了大量的错误报告,并且有太多不同的错误。所以我知道解决所有这些问题会很复杂。

因此,我想更通用一点,只想了解 Delphi (2007) 在 Citrix 系统上运行时可能出现的问题。尤其是当此应用程序未设计为以任何方式支持 Citrix 时。我们不想正式支持 Citrix,但如果我们能帮助这些客户,那就太好了。并不是说他们会付给我们更多的钱,但仍然...

那么有人知道 Delphi 应用程序在 Citrix 系统上可能遇到的一些常见问题吗?
有谁知道 Citrix 的一般常见问题?
Citrix 问题是否有一些 Silver Bullet 或 Golden Hammer 解决方案?

顺便提一句。我对 Citrix 的了解仅限于 this Wikipedia条目和 this website ...还有一点我有Googled ...

最佳答案

过去在 Citrix 上发布的 Delphi 应用程序在任务栏中没有图标时存在一些问题。我认为这是由 MainFormOnTaskbar 解决的(在 D2007 及更高版本中可用)。除此之外,终端服务器和 Citrix 之间没有太大区别(从应用程序的角度来看),您需要考虑的最重要的事情是:

  • 用户从不是终端或 Citrix 服务器的管理员,因此他们在注册表的本地计算机部分、C 驱动器、程序文件夹等中没有权限。
  • 同一系统上的多个用户必须可以同时启动您的应用程序。
  • 某些文件夹(例如 Windows 文件夹)会被重定向以防止可能的应用程序问题,这也意味着像 GetWindowsFolder 这样的 API 不会返回真正的 Windows 文件夹,而是返回重定向的文件夹。请注意,可以通过在 PE header 中设置特定标志来禁用此行为(参见 delphi-and-terminal-server-aware)。
  • 有时在一个场中使用多个服务器,这意味着您的应用程序可以在这些服务器中的任何一个上运行,用户在登录时被重定向到最不繁忙的服务器(负载平衡)。因此不要使用任何本地数据库来存储东西。
  • 如果您使用外部数据库或中间件或应用程序服务器,请注意多个用户将使用相同的计算机名和 IP 地址进行连接(某些 Citrix 版本可以使用虚拟 IP 地址来解决此问题)。
  • 关于delphi - 有谁知道 Citrix 和 Delphi 2007 应用程序之间的问题? (也许还有其他开发语言?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1444830/

    相关文章:

    arrays - Delphi - 如何将 twebbrowser 中的选择放入数组中?

    delphi - 如何在Delphi 2010中创建验证码验证?

    delphi - 在 Delphi 中使用正确的颜色复制矩形(缩放)

    delphi - 是否可以在 Delphi 2007 中调用多个构建后事件?

    delphi - 如何用空字符串覆盖 Delphi 2007 dproj 文件中的设置?

    msbuild - Visual Studio 2013 错误 MSB6001

    json - 如何使用 Citrix ShareFile API 进行搜索

    delphi - SendInput 在某些应用程序中不起作用 - 使用 Delphi 的 Windows

    windows - 如何以编程方式查找两个目录之间的差异

    error-handling - 什么导致VB6 "Run-Time Error ' 5': Invalid Procedure Call or Argument"