Как перейти от браузера к приложению в Citrix

В настоящее время я занимаюсь разработкой интеграции между веб-приложением и приложением Windows, где все работает нормально при стандартных настройках. Однако введение Citrix в уравнение все усложняет.

Текущее решение

На данный момент у нас есть POC (подтверждение концепции), работающий с пользовательской регистрацией Схемы Uri для небольшого разработанного нами exe-файла, и перечисляющий активные экземпляры с помощью Global Atom ( используя этот трюк для поиска по списку всех записей). Таким образом, мы можем увидеть, запущен ли экземпляр нашего приложения. Если это так, мы вызываем его через SendMessage, а если нет, то запускаем приложение в новом процессе и ждем, пока оно будет готово, чтобы мы его вызвали.

Проблемы, представленные в Citrix

Теперь, когда мы используем Citrix Desktop Sessions, мы не подозреваем, что у нас возникнут какие-либо проблемы, но с помощью Application Sessions (AKA XenApp) документация Citrix гласит: "Перенаправление URL работает только для сеансов рабочего стола, а не для сессий приложения". и мы для этого наткнулись на кирпичную стену с нашей реализацией. Итак, подведем итоги, теперь у нас есть проблемы с выполнением следующих шагов:

  1. Регистрация пользовательского обработчика схемы URI: это может вообще не поддерживаться. То, как мы используем его сейчас, указывает на приложение на диске, но приложение установлено на сервере.
  2. Обнаружение запуска экземпляра: мы не знаем, возможны ли вообще глобальные атомы в этой настройке, и я не смог найти никакой документации по этому вопросу.
  3. Вызов окна XenApp с SendMessage: при запуске простейшей конфигурации XenApp, которую мы могли бы воспроизвести, мы можем проверить процесс хостинга и получить дескриптор нашего приложения, но приложение никогда не получает сообщение, отправленное на него.

Решение в рамках текущего объема решения

Можно ли выполнить описанный выше сценарий в среде Citrix с помощью сеансов приложений? Если так, то как? Тесты, которые я провел до сих пор, похоже, подтверждают мои подозрения, что он просто не поддерживается в этой настройке.

Решая это в аналогичной ситуации

Разработанный нами POC является простым и модульным, и изменение способа размещения экземпляров и обмена ими легко реализуется и настраивается в соответствии с конкретными настройками наших клиентов. Затем потребуются другие способы обнаружения, запуска и связи с основным приложением.

  1. Простое обнаружение работающего приложения оказалось трудным (еще один вопрос, на который еще не ответили), и подход Global Atoms, похоже, не работает.
  2. Запуск приложения, если оно не запущено, - это то, от чего я в значительной степени отказался, учитывая, как много разных способов может распространяться приложение при такой настройке, поэтому, вероятно, это должно быть требованием того, что приложение уже запущено.
  3. Несмотря на то, что я могу получить дескриптор главного окна, я не могу использовать SendMessage в настройках Citrix. Он просто не обрабатывает сообщение, которое я ему отправляю. Это также то, что XenApp не поддерживает? Я не мог найти найти документацию по этому вопросу. Альтернативные идеи для вызова в размещенном приложении очень приветствуются.

1 ответ

Решение

В конце концов, решение было чрезвычайно простым для наших клиентов Citrix, так как они могли:

  1. Сначала откройте наше программное обеспечение, запустите окно браузера изнутри (у нас есть различные ссылки, которые открывают браузеры), и навигация теперь работает без нареканий.
  2. Настройте размещенное приложение браузера, чтобы оно работало в той же серверной среде, что и наше программное обеспечение, и тогда наш POC смог запустить наше программное обеспечение так, как если бы это была обычная среда рабочего стола.
Другие вопросы по тегам