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

我目前正在开发一个Web应用程序和Windows应用程序之间的集成,在标准的设置一切工作正常。 但是,将Citrix引入到这个方程会使得所有的事情都变得相当复杂。

目前的解决scheme

目前,我们有一个运行自定义Uri Scheme注册的POC(概念validation)到我们已经开发的一个小exe,并用Global Atom列出活动实例 ( 使用这个技巧列出search所有条目 )。 这样,我们可以看到我们的应用程序的一个实例是否正在运行。 如果是, 我们通过SendMessage调用它 ,如果没有,我们在一个新的进程中启动应用程序,并等待它准备好,我们来调用它。

思杰推出的问题

现在,在使用Citrix桌面会话时,我们并不怀疑我们会遇到任何问题,但是对于Application Sessions(AKA XenApp ) ,Citrix文档指出:“URLredirect仅适用于桌面会话,而不适用于应用程序会话”。 ,而我们为此也遇到了一堵砖墙。 总而言之,我们现在有完成以下步骤的问题:

  1. 注册一个自定义的URIscheme处理程序 :这可能根本不被支持。 我们现在使用它的方式是指向磁盘上的应用程序,但应用程序安装在服务器上。
  2. 检测一个实例是否正在运行 :我们不知道在这个设置中是否可以使用全局primefaces,而且我一直无法find任何文档。
  3. 使用SendMessage调用XenApp窗口 :当运行我们可以重现的最简单的XenAppconfiguration时, 我们可以检查主机进程并获取应用程序的句柄 ,但是应用程序永远不会收到发送的消息。

在当前的解决scheme范围内解决它

上述情况可以在使用应用程序会话的Citrix环境中完成吗? 如果是这样,怎么样? 到目前为止我所进行的testing似乎证实了我的怀疑,即在这个设置中它不被支持。

解决它在类似的激情

我们开发的POC是简单和模块化的,并且改变实例的位置和通信方式很容易实现,并且可以根据客户的具体设置进行configuration。 然后,将需要其他方式来检测,启动并与主应用程序进行通信。

  1. 只是检测正在运行的应用程序已被certificate是困难的(另一个问题尚未得到解答) ,而全局primefaces方法似乎并不奏效。
  2. 启动应用程序,如果它没有运行,是我已经放弃了,考虑到有多less种不同的应用程序可以在这样的设置分布的方式,所以它可能必须是应用程序已经运行的要求。
  3. 即使我可以检索主窗口的句柄 ,但是我无法在Citrix安装程序中使用SendMessage。 它根本不处理我发送的消息。 这也是XenApp不支持的吗? 我找不到任何文件。 调用托pipe应用程序的替代想法是非常受欢迎的。

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

  1. 首先打开我们的软件,从内部启动一个浏览器窗口(我们有各种链接,打开浏览器),现在导航工作完美无瑕。
  2. 自定义一个托管的浏览器应用程序,运行在与我们的软件相同的服务器环境中,然后我们的POC能够启动我们的软件,就像它是一个普通的桌面环境。