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

时间:2009-09-18 14:15:35

标签: 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 ...

4 个答案:

答案 0 :(得分:7)

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

  • 用户永远不是终端或Citrix服务器的管理员,因此他们在注册表的本地计算机部分,C驱动器,程序文件夹等中没有权限。
  • 同一系统上的多个用户必须能够同时启动您的应用程序。
  • 某些文件夹(如Windows文件夹)被重定向以防止可能的应用程序问题,这也意味着像GetWindowsFolder这样的API不会返回真正的Windows文件夹,而是返回重定向的文件夹。请注意,可以通过在PE标头中设置特定标志来禁用此行为(请参阅delphi-and-terminal-server-aware)。
  • 有时在服务器场中使用多个服务器,这意味着您的应用程序可以在任何这些服务器上运行,用户在登录时被重定向到最不忙的服务器(负载平衡)。因此,不要使用任何本地数据库来存储东西。
  • 如果您使用外部数据库或中间件或应用程序服务器,请注意多个用户将使用相同的计算机名和IP地址连接(某些Citrix版本可以使用虚拟IP地址来解决此问题)。

答案 1 :(得分:3)

我们的许多客户在Citrix上使用我们的Delphi应用程序。一般来说,它工作正常。我们在旧版本的Delphi中遇到了打印问题,但这是在最新版本的Delphi中修复的(当然比Delphi 2007更新)。但是,由于您现在正在终端服务下运行,因此无论是否使用Citrix,都有一些不起作用的事情。例如,您不能与旧版本的InterBase建立本地连接,后者使用不带GLOBAL修饰符的命名管道。使用DoubleBuffered也是一个非常糟糕的主意。等等。我的建议是寻找有关Win32应用程序和终端服务的建议,而不是寻求有关Delphi和Citrix的建议。我所知道的Citrix特有的一个问题是你不能指望拥有一个C盘。希望您没有在代码中硬编码任何驱动器号,但如果您有,则可能遇到麻烦。

答案 2 :(得分:1)

一般来说,您的应用程序需要与MS终端服务兼容才能使用XenApp。我的理解是.NET应用程序与终端服务兼容,因此通过扩展也应该在Citrix环境中工作。显然,当你遇到一些问题时,它并不那么简单。

http://community.citrix.com/citrixready提供了一个测试和验证工具包,您可能会觉得有用。我认为测试工具包和虚拟实验室工具对您来说最有用。该套件可免费使用,但需要注册。

答案 3 :(得分:1)

安全可能是一个问题。如果敏感文件夹不是“沙盒”(请参阅​​Remko关于重定向的讨论),则用户可以突破您的应用并运行他们不应该执行的操作。您应该探测您的应用,看看当他们“掏出”您的应用时会发生什么。常见的攻击点是CHM帮助,使用IE显示HTML的任何内容,以及文件打开/保存对话框 例如:如果您显示.chm帮助,则用户可以在帮助主题“查看源”中单击鼠标右键。这通常会打开记事本。从那里,他们可以导航目录结构。如果他们没有得到适当的控制,他们可能会做一些恶作剧。 例如:如果他们通常无法运行Internet Explorer,并且您的应用程序在“关于”框中有可点击的URL或“帮助”菜单中的“访问我们的网站”,那么瞧!他们可以访问Web浏览器。如果不受约束,他们可以通过导航到windows目录来打开命令shell。