如何在Citrix中从浏览器导航到应用程序
本文关键字:浏览器 导航 应用程序 Citrix | 更新日期: 2023-09-27 18:14:40
我目前正在开发一个web应用程序和windows应用程序之间的集成,在标准设置下一切都很好。然而,将Citrix引入到这个等式中会使一切变得相当复杂。
当前解决方案
目前,我们有一个POC(概念验证)运行自定义Uri Scheme注册到我们开发的一个小exe,并列出活动实例与全局原子(使用这个技巧列出搜索所有条目)。这样,我们就可以看到应用程序的一个实例是否正在运行。如果是,我们通过SendMessage调用它,如果不是,我们在一个新进程中启动应用程序,并等待它准备好,以便我们调用它。
Citrix引入的问题
现在,当使用Citrix桌面会话时,我们不怀疑我们会遇到任何问题,但是对于应用程序会话(又名XenApp), Citrix文档指出:"URL重定向只适用于桌面会话,而不适用于应用程序会话。"因此,我们在实现时遇到了瓶颈。综上所述,我们现在在完成以下步骤时遇到了一些问题:
- 注册自定义URI Scheme处理程序:可能根本不支持。我们现在使用它的方式是,它指向磁盘上的应用程序,但应用程序安装在服务器上。
- 检测一个实例是否正在运行:我们不知道全局原子是否在这个设置中是可能的,我一直无法找到关于这个的任何文档。
- 使用SendMessage调用XenApp窗口:当运行最简单的XenApp配置时,我们可以复制,我们可以检查主机进程并获得我们应用程序的句柄,但应用程序永远不会收到发送到它的消息。
在当前解决范围内解决
可以在Citrix环境中使用Application Sessions完成上述场景吗?如果有,怎么做?到目前为止,我所执行的测试似乎证实了我的怀疑,即在此设置中不支持它。
用类似的形式求解
我们开发的POC是简单和模块化的,并且改变实例的位置和通信方式很容易实现,并且可以根据客户的特定设置进行配置。然后,它将需要其他方法来检测、启动主应用程序并与之交互。
- 仅仅检测一个正在运行的应用程序已经被证明是困难的(另一个尚未回答的问题),并且全局原子方法似乎不起作用。
- 启动应用程序,如果它没有运行,是我几乎已经放弃的东西,考虑到有多少不同的方式应用程序可以在这样的设置中分发,所以它可能必须是一个要求,应用程序已经运行。
- 即使我可以检索主窗口的句柄,我也不能在Citrix设置中使用SendMessage。它只是不处理我向它发送的信息。这也是XenApp不支持的吗?我找不到任何关于这个的文档。在宿主应用程序中调用的其他方法非常受欢迎。
最终解决方案对我们的citrix客户来说非常简单,因为他们可以:
- 首先打开我们的软件,从内部启动浏览器窗口(我们有各种打开浏览器的链接),现在导航工作完美无瑕。
- 自定义一个托管的浏览器应用程序,运行在与我们的软件相同的服务器环境中,然后我们的POC能够启动我们的软件,就好像它是一个普通的桌面环境。