Как многие знают, у компании VMware есть продукт VMware ThinApp, который позволяет создавать виртуализованные приложения, "отвязанные" от операционной системы (многие еще помнят этот продукт как Thinstall, а приложения так и назывались thinstalled applications). Такие приложения еще называют предустановленными - в результате его создания вы получаете 1 или 2 файла, которые можно просто переносить на флэшке и запускать или запускать с общего SMB-ресурса (см. нашу заметку тут).
Кроме того, виртуализацию приложений ThinApp можно интегрировать с решением для создания инфраструктуры виртуальных ПК предприятия VMware View 5 (см. нашу заметку тут). А скоро их вообще можно будет запускать через веб-браузер с поддержкой HTML5 в рамках решения VMware AppBlast (см. тут), извлекать из рабочих машин и распространять через ThinApp Factory (см. тут).
В этой заметке мы рассмотрим, какие режимы функционирования виртуализованных приложений ThinApp, а точнее - режимы изоляции приложения, определяющие с какими данными оно может работать и как взаимодействует с ОС, в которой запускается. Это определяет степень отделения приложения от ОС, в которой оно работает. Отделение это реализовано за счет папок и веток реестра "песочницы" (sandbox) приложения - определение того, куда приложение может производить запись и как влиять на файлы ОС.
В файле package.ini, который идет в составе проекта вы можете детально определить, в какие папки и ветки реестра приложение может осуществлять запись.
Всего есть 3 режима приложений ThinApp:
Full - в этом режиме приложение работает с реестром и файловой системе в условиях полной изоляции. Все элементы (изменения реестра и создаваемые файлы) остаются только внутри песочницы, а приложение не может ничего получить из ОС, ее файловой системы и реестра. То есть, приложение никак не повлияет на работу ОС и ничего не сможет в ней ни прочитать, ни изменить, ни создать. Файлы из песочницы и создаваемые объекты реестра существуют в виртуальных контейнерах только во время работы приложения, как только вы его закрываете - все пропадает.
WriteCopy - в этом режиме приложение может читать файлы ОС, в которой исполняется, но не может ничего записывать.
Merged - в этом режиме приложение может и читать, и записывать свои файлы, что необходимо для "тяжелых" пользовательских приложений (например, Microsoft Office).
При создании виртуализованного приложения в ThinApp в Setup Capture wizard, вы можете создавать только следующие режимы изоляции:
Modified Merged isolation mode - возможность чтения-записи файлов, кроме системных директорий.
Modified WriteCopy isolation mode - возможность ограниченного чтения файло ОС.
В режиме Modified Merged isolation mode приложению нельзя записывать ничего в следующие папки:
%AppData%
%Local AppData%
%Common AppData%
%SystemRoot%
%SystemSystem% (*see note below)
%ProgramFilesDir%
%Program Files Common%
В режиме Modified WriteCopy isolation mode приложению можно записывать только в следующие папки:
%Desktop%
%Personal% (My Documents)
%SystemSystem%\spool
GUI ThinApp позволяет задавать только эти 2 режима изоляции и только для файловой системы, остальные режимы изоляции и режим работы с реестром задается в файле Package.ini проекта ThinApp. По умолчанию режим RegistryIsolationMode в этом файле установлен в WriteCopy.
Помимо режимов работы для всей файловой системы и реестра, вы можете создать исключения для отдельных директорий и веток реестра с помощью файла ##Attributes.ini (как это делается описано тут).
Ну и на видео ниже вы можете услышать детальное описание режимов работы изоляции приложений ThinApp:
Кстати, хинт - для разработки пакетов ThinApp есть удобный редактор ThinApp Browser.