Как решить проблему конфликта приложений


Как установить две версии приложения на одном компьютере? Как решить проблему конфликта приложений? Как сделать приложение более безопасным для системы?
Как?


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

Данную ситуацию изменяет внедрение виртуализации приложений, при которой происходит разделение операционной системы и конфигурации приложения.

Каждое виртуализированное приложение работает в собственной защищенной среде, включающей в себя файлы, ключи реестра и другие элементы, необходимые для работы приложения. При этом приложение изолированно от ОС и других приложений, что позволяет избежать конфликтов на программном уровне.

На сегодняшний день существует много систем виртуализации приложений Citrix XenApp, SoftGrid, VMWare ThinApp, etc. У всех есть свои минусы и плюсы. И каждый выбирает систему по своим требованиям и возможностям.

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

Создадим виртуальное приложение, которое будет изолированно от ОС и других приложений.

Весь процесс можно разбить на 2 части:
1. Создание виртуального приложения (профиля) — подготовка и упаковка приложения и всего необходимого для его работы. Конечный результат и есть профиль приложения.
2. Доставка профиля — распространение готового профиля приложения на клиентские машины используя Citrix XenApp Server.

Часть первая. Создание профиля


Создание профиля приложения выполняется с помошью приложения Streaming Profiler. Рекомендуется использовать чистую систему с такими же параметрами и настройками как у будущего пользователя. Имеется ввиду ОС, битность, установленные антивирусы, групповые политики, итд.
Непременно, пригодится виртуальная среда, которая является лучшим инструментом для отката системы в предыдущее «чистое» состояние, если в процессе создания профиля что-то пошло «не так».

Рассмотрим создание профиля на примере Adobe Reader (v.10.0.0)

Итак, чистая машина, максимально приближенная к клиентской, установленный инструмент Citrix Streaming Profiler.

Создаем профиль открыв Streaming Profiler, шагаем с подсказками мастера.
Name. Даем имя профилю.



Inter-Isolation Communication. Так как наше приложение будет изолированно от остальных приложений но оно должно работать вместе с другим, например, как зависимость, то в следующем диалоге указываем какое существующее виртуализированное приложение использовать.



Приложения будут видеть друг-друга и при необходимости использовать общие компоненты:



Target OS. Указываем для каких ОС и с какой конфигурацией данный профиль будет работать:



Если установка приложения происходит обычным инсталлятором напр setup.exe и не требует других шагов то выбираем Quick Install — опция для установки приложения одной строкой. Если же имеется несколько установочных файлов, или ставятся апдейты, необходимо руками вносить изменения в реестр или конфигурационные файлы, то лучше выбрать Advanced Install.

Далее выбираем установочный файл и производим установку приложения.



Во время установки Streaming Profiler следит за установкой (какие файлы устанавливаются, реестровые записи) и создает профиль приложения. При этом не происходит установка приложения на систему. Все происходит в виртуальной оболочке созданной Profiler-ом но устанавливаемое приложение «видит» все компоненты системы и установленные ранее приложения.

После завершения установки мастер предлагает какие ярлыки оставить для будущей публикации на клиентские машины. Сохраняем профиль на Application Hub — выделенная сетевая шара. Права write+modify для записи пользователю который создает профили и управляет ими. И права read+execute пользователям, которым будет распространено данное приложение в будущем. В результате имеем сам профиль файл .profile и набор необходимых файлов для работы приложения.

Каждый профиль включает в себя один или несколько Target-ов. Target — набор файлов, реестровых записей, компонентов необходимых для работ приложения на конкретной конфигурации компьютера.



Если существует необходимость работы приложения например на нескольких версиях ОС — при помощи Streaming Profiler можно добавлять необходимые таргеты, при этом каждый раз нужно запускать установку приложения заново. Таргеты так же полезны если имеется потребность в различной конфигурации приложения на различных версиях ОС.

Если нужно внести изменения в профиль или таргет приложения необходимо использовать то же Streaming Profiler как редактор.

Часть вторая. Доставка профиля


Распространять уже готовый профиль будем с помощью Citrix XenApp Server 6 который установлен на Windows Server 2008 R2.

Открываем Citrix Delivery Services Console. Раскрываем дерево фермы, жмем Aplications -> Publish Applications. Даем имя приложению.



Выбираем тип приложения — Aplication — Streamed To Client. Для того что бы приложение стримилось сразу на клиент.



Возможен вариант стриминга на сервер, тогда клиент будет заходить по протоколу ICA на сервер, на который стримится приложение. В данном случае мы используем стриминг прямо на клиент.

В следующем окне указываем путь файлу профилю (.profile) на Application Hub, используя UNC пути.
Так же выбираем в выпадающем списке ярлык, который будет опубликован клиенту.



Если необходимо что бы приложение было доступно даже когда нет сети, выбираем Enable Offline Access. В данном случае приложение будет полностью загружено в кеш на клиенте и в дальнейшем запускаться с кеша, даже если будет отсутствовать сетевое подключение.



Выбираем пользователя или группу (Citrix или AD) для которых данное приложение будет опубликовано и доступно.



Меняем если нужно иконку. При желании можно поместить ярлык в указанную подпапку в старт меню, как показано ниже:



Вот и всё. Приложение опубликовано. Настройки файловых ассоциаций для приложения доступно в свойствах.

На клиенте же приложение появилось как меню приложений Citrix:



так и в старт меню:



Приложение может быть так же опубликовано с помощью Citrix Web Interface.

При запуске ярлыка происходит собственно сам стриминг виртуализированного приложения.
Стримится не всё приложение сразу а минимальный набор компонентов, необходимых для старта приложения и отображения пользователю интерфейса приложения (аналогично 1-st Feature Block в APP-V).

Приложение запущено и работает в изолированной среде:



Таким образом, на системе может быть доступно сразу несколько версий одного и того же приложения, например Adobe Reader 9 и Adobe Reader 10.

Ограничения для стриминга:


  • Приложения, которые скомпилированны как 64-разрядные не поддерживаются
  • Драйвера и приложения, содержащие драйвера не поддерживаются.
  • Компоненты ОС MDAC не возможно запрофилировать, например Internet Explorer, .Net Framework.


Существует много нюансов относительно процесса создания профиля приложения, т.к. существуют достаточно сложные и громоздкие приложения которым необходимы различные компоненты как системы так и других приложений.
В Streaming Profiler реализовано достаточно много функций для углубленной конфигурации профиля, pre- и post-launch скрипты, pre-analysis условия, правила изоляции, перенаправления, игнорирования во время процесса создания профиля или его выполнения на клиенте.
Инфопульс Украина
Creating Value, Delivering Excellence
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 20

    +5
    Лучшие традиции Windows-администрирования! В картинках, на которых всё написано, «Для чайников» :)
      +5
      А лучшие традиции Линукс-администрирования какие? В текстах, на которых всё написано, «Для заварников» :)
        +4
        Лучшие традиции гвинпинов — это фраза «man man» и «RTFM» :D
          –4
          Услышав man man, Линус решил, что будет проще написать ядро с нуля…
      +2
      Эта функциональность должна быть частью пользовательской ОС.
        +1
        Эта функциональность есть в App-V, которая поставляется в пакете MDOP, идущем в рамках корпоративного лицензирования ОС.
          +1
          Я упомянул в статье об альтернативных системах, в т.ч. и о SoftGrid который формально и является App-V.
        +3
        да, PREFIX это очень сложно и запутано :)
          0
          Вы так говорите, будто ни разу не слышали слов chroot и jail.
            +1
            ну chroot, openvz/jail все таки это как-то слишком круто для запуска двух веток приложения. Так можно и kvm запилить, благо он в ядре :)
              +1
              Зависит от приложения. Пример из моей практики. В Латвии продаётся продукт 1С для микропредприятий. Микропредприятие — это где работает один-два человека. Естественно, своего бухгалтера у таких компаний нет, они пользуются услугами наёмных бухгалтеров. Один такой бухгалтер может вести несколько микропредприятий, а комп — один. А 1С со своей левой системой защиты вторую копию поставить не даёт. Выход? Виртуализация! Ибо лицензии такого типа выписываются непосредственно на микропредприятие, а не на бухгалтера.

              Так что и kvm может потребоваться (: Ну мало ли что в жизни бывает… Иначе, согласитесь, не было бы такого разнообразия полезных инструменов.
          0
          Как я понял, это приложение работает по типу Wine?
          А если использовать непосредственно сам Wine (он под Windows тоже есть)? Или PortableApp Platform (который, как я понял, хукает обращения к файлам и реестру)?
          +1
          Хочу дополнить список ограничений, которые накладывает виртуализация на приложение.
          В зависимости от выбранной системы, не виртуализируются или крайне сложно и проблемно виртуализируются следующие типы приложений:
          1. Плагины, Add-in-ы и прочите типы исполняемых и dll файлов которые встраиваются в приложение другого производителя, расширяя его функциональность.

          2. Приложение взаимодействующее с windows сервисом запущенным под системным аккаунтом, особенно когда параметры настройки сервиса хранятся в реестре или файлах включенных в виртуальный образ приложения.

          3. Приложения разных производителей или входящие в разные продукты одного производителя взаимодействующее через DDE, OLE, DCOM, COM (OutprocServer32)

          4. Приложения которые в конфигурационных файлах или реестре хранят пути к файлам находящимся в user profile. Проблема заключается в том, что «упаковка» приложения выполняется под одним аккаунтом (admin например) а запуск — по другим. И если система виртуализации не преобразует «на лету» обращения к файлам из одного пользовательского аккаунта (под которым создан образ) в актуальный путь к файлу для текущего пользователя, то приложение работает с ошибкой и зачастую сложно определить причину этой ошибки. Например MS App-V корректно отрабатывает пути записанные в реесте, но оставляет «as is» пути к файлам записанные в cfg, xml, ini файлах… :( что приводит к непонятным (для пользователя) проблемам в работе приложения.

          Кстати, для App-V пакетов последнюю проблему может решить тул App-V Generator, у него есть фича сканирования текстовых файлов и реестра, включенных в SFT файл и нахождение «hard-coded» путей к файлам, IP адресов и т.д. Также есть пул скриптов, которые позволяют обновлять актуальные пути на user profile текущего пользователя в конфигурационных файлах при старте виртуального приложения.
            +1
            Думаю App-V требует более детального обзора, двумя предложениями тут не обойтись. Как, впрочем, и разнесение user profile на разных системах.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое