如何在 Citrix 中从浏览器导航到应用程序

How to navigate from browser to application in Citrix

我目前正在开发 Web 应用程序和 windows 应用程序之间的集成,在标准设置下一切正常。但是,将 Citrix 引入方程式会使一切变得相当复杂。

当前解决方案

目前我们有一个 POC(概念验证)运行 自定义 Uri Scheme registration to a little exe we have developed, and listing active instances with Global Atom (using this trick to list search all entries). This way, we can see if an instance of our application is running. If it is, we call it via SendMessage,如果没有,我们将在新进程中启动应用程序,并等待它准备就绪,供我们调用。

Citrix 引入的问题

现在,当使用 Citrix 桌面会话时,我们不怀疑我们会 运行 进入任何问题,但是使用应用程序会话(又名 XenApp) the Citrix documentation states: "URL redirection works only for desktop sessions, not application sessions.",我们因此 运行 进入实施过程中的障碍。总而言之,我们现在在完成以下步骤时遇到了问题:

  1. 注册自定义 URI 方案处理程序:可能根本不支持。我们现在的使用方式,它指向磁盘上的一个应用程序,但该应用程序是安装在服务器上的。
  2. 正在检测实例是否 运行ning:我们不知道在此设置中是否可以使用全局原子,而且我一直找不到任何文档关于这个。
  3. 使用 SendMessage 调用 XenApp window:当 运行我们可以重现最简单的 XenApp 配置时,we can inspect the hosting process and get the handle to our application,但是应用程序永远不会收到发送给它的消息。

在当前解决范围内解决

能否在使用应用程序会话的 Citrix 环境中完成上述场景?如果是这样,如何?到目前为止,我执行的测试似乎证实了我的怀疑,即在此设置中根本不支持它。

以类似的方式解决它

我们开发的 POC 简单且模块化,更改实例的定位方式和与之通信的方式很容易实现,并可根据客户的特定设置进行配置。然后它将需要其他方法来检测、启动和与主要应用程序通信。

  1. Just detecting a running application has proven difficult (another question hat has not yet been answered),全局原子方法似乎不起作用。
  2. 启动应用程序,如果它不是 运行ning,我几乎已经放弃了,考虑到在这样的设置中应用程序可以有多少种不同的分发方式,所以它可能不得不要求应用程序已经 运行ning.
  3. 即使 I can retrieve what the handle is for the mainwindow,我也无法在 Citrix 设置中使用 SendMessage。它根本不处理我发送给它的消息。这也是 XenApp 不支持的吗?我找不到关于此的任何文档。非常欢迎调用托管应用程序的替代想法。

最后,解决方案对我们的 citrix 客户来说非常简单,因为他们可以:

  1. 首先打开我们的软件,从里面启动浏览器 window(我们有各种可以打开浏览器的链接),导航现在可以正常工作了。
  2. 自定义托管浏览器应用程序,运行 在与我们的软件相同的服务器环境中,然后我们的 POC 能够像在常规桌面环境中一样启动我们的软件。