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

时间:2016-10-24 09:41:27

标签: c# .net windows citrix uri-scheme

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

当前的解决方案

目前,我们已经开发了一个POC(概念验证)与自定义Uri Scheme registration一起运行,以及listing active instances with Global Atomusing this trick to list search all entries)。这样,我们可以看到我们的应用程序的实例是否正在运行。如果是,we call it via SendMessage,如果没有,我们在新流程中启动应用程序,等待它准备就绪,我们就可以调用它。

Citrix引入的问题

现在,在使用Citrix桌面会话时,我们不会怀疑我们会遇到任何问题,而是使用应用会话(AKA XenAppthe Citrix documentation states: "URL redirection works only for desktop sessions, not application sessions.",我们因此遇到了问题。我们的实施。总而言之,我们现在遇到了完成以下步骤的问题:

  1. 注册自定义URI方案处理程序:根本不支持。我们现在使用它的方式,它指向磁盘上的应用程序,但应用程序安装在服务器上。
  2. 检测实例是否正在运行:我们不知道在此设置中是否可以使用Global Atoms,而且我无法找到任何相关文档。
  3. 使用SendMessage调用XenApp窗口:运行最简单的XenApp配置时,我们可以重现we can inspect the hosting process and get the handle to our application,但应用程序永远不会收到发送的消息。
  4. 在当前解决方案范围内解决

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

    以类似的激情解决它

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

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

1 个答案:

答案 0 :(得分:1)

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

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