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


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


В невиртуализированной среде 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 условия, правила изоляции, перенаправления, игнорирования во время процесса создания профиля или его выполнения на клиенте.
Инфопульс Украина
0,00
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 на разных системах.

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

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